IT科技

當前位置 /首頁/IT科技 > /列表

如何用surfer畫平面等值線圖

說實話,其實很簡單,但是網上的那些教程資料都不是太適合初學者,所以很多人看著也做不出來。簡單說一下關鍵步驟: 1、資料表BLN建立,含X,Y座標和資料,可以從CAD裡直接得到座標 2、先生成網格檔案GRD,這步直接使用BLN檔案生成 3、白化,一般

等值線圖因其能直觀的看出走勢而被多數人應用,這裡介紹給大家一個簡單的軟體來繪製等值線圖。

方法

首先要做的就是在excel上整理資料。一般情況下座標資料在B列和C列,目標列也就是你要畫等值線的資料隨便放在哪一排,本次用的是F列,整理結果如圖。

簡單說: 1、準備資料:A,各關鍵點座標X,Y值及該點的數值,EXCEL表或BLN檔案均可;B:白化邊界資料;C:繪圖範圍座標。其中B,C非必須 2、網路化GRD,要用EXCEL或BLN檔案 3、白化,需要白化邊界資料,此步也是非必須 4、生成等值線圖,利用2步或

如何用surfer畫平面等值線圖

第二步是開啟surfer軟體。認識軟體介面,

從事煤炭資源勘查工作中,需要做很多等值線圖,周圍同事多是用傳統的三角網插值方法,一個鑽孔一個鑽孔地量取之間的距離,然後在Excel表格中計算分點距離,再在CAD中描點連線……雖然這是一種嚴密的插值法,但是感覺過程複雜,與傳統手工作圖無異

如何用surfer畫平面等值線圖 第2張

找到資料功能,要將excel的資料轉化為網格檔案。點中資料功能,單擊,找到你所需資料的excel檔案,點確定,會出現如下對話方塊,將x設為excel中含有Y座標的列,y設為excel中含有X座標的列,z設為目標列,本次用F列,網格化方法選克里格。

等值線圖因其能直觀的看出走勢而被多數人應用,這裡介紹給大家一個簡單的軟體來繪製等值線圖。 工具/原料 電腦 方法/步驟 1 首先要做的就是在excel上整理資料。一般情況下座標資料在B列和C列,目標列也就是你要畫等值線的資料隨便放在哪一排,本

如何用surfer畫平面等值線圖 第3張

點確認之後會有對話方塊一直點確認,記住你輸出網格資料的位置。

限定界限有兩種方式 1、最簡單的是定義好兩個邊框的座標,就是左下角和右上角的,這樣在網格化過程中自動白化資料邊界以外的地方,只要在網格化資料時勾選 Blank grid outside convex hull of data,如下圖 這樣就得到一個矩形範圍的等值線圖。 2

如何用surfer畫平面等值線圖 第4張

下面就是正式的生成等值線圖,點選地圖功能,選新建等值線圖

你覺得在這裡用幾段文字告訴你,你能畫嗎? 如果接觸過,哪裡有問題可以問,如果一點也不懂,那問過了也不會。 我說一下基本步驟: 1、資料準備,CAD也好,臺帳也好,最後得到一個EXCEL表或在Surfer裡建一個BLN,至少有3列,X、Y座標 和資料,如

如何用surfer畫平面等值線圖 第5張

在對話方塊找到剛生成的網格資料檔案,直接點選開啟,畫圖介面就會直接出現等值線圖。

clear all; close all; warning off all; [X Y Z] = peaks(50); %%此處的X,Y,Z換成你的資料 [c,h] = contourf(X,Y,Z);%%利用contourf函式繪圖 clabel(c,h); %%標註

如何用surfer畫平面等值線圖 第6張

最後在左上角檔案中選擇另存為將圖儲存到你想要儲存的資料夾。

1、建立一個Excel表或在Surfer裡直接建立一個BLN檔案,把座標及每點的溫度值輸入,至少包括三列,X、Y、資料,如果圖中要標關鍵點,則還需要各點的名稱列。 如下圖所示。 2、網格化,即grid--data,選擇上面建立的Bln檔案或Excel檔案 。 設定好d

如何用surfer畫平面等值線圖 第7張

擴充套件閱讀,以下內容您可能還感興趣。

如何用C#呼叫surfer 來畫等值線圖

ActiveX 物件名:Suefer.ApplicationClass

//具體方法

Suefer.ApplicationClass AppSurfer=new Surfer.ApplicationClass();

//對Surfer的呼叫

AppSurfer.Visible=false;//注Surfer視窗是不顯現

AppSurfer.ScreenUpdating=false;//Surfer製圖過程是否顯示;

//建立一個繪圖文件和一個繪圖視窗

Surfer.IPlotDocumentDoc=(Surfer.IPlotDocument) AppSufer.Document Add(SrfDocType.srfDocPlot);

//給物件AppSurfer新增空白繪圖文件,並取名為Doc;

Surfer.MapFrame mapframe=Doc.Shapes.AddPostMap(PostCSVFile,3,2,7,5,0);

/*新建一個給地圖新增標註檔案的圖層

PostCSVFile就是標註檔案的路徑加檔名, 3代表檔案中的第三列是經度, 2代表第二列是緯度, 7代表第七列是需要標註的名稱, 5表示所需要選用的

符號, 0是標註選用的角度;*/

mapframe.Axes.Item(1).LablelFormat Postfix="E";

mapframe.Axes.Item(3).LablelFormat Postfix="N";

//注:給標註圖的橫座標軸後面新增E,縱座標軸後面新增N;

Surfer.IPostMap postmap=(Surfer.IPostMap)mapframe.Overlays.Item(1);

//注:定義postmap 是mapframe上的一個標註圖層;

postmap.LableFont.Bold=false;

postmap.LableFont.Size=10;

postmap.Symbol.Size=0.05;

//注: postmap 圖層上的文字等不加粗,字型大小為10號,符號大小為0. 05;

AppSurfer.GridData(InCSVFile,2,3,5,nil,Surfer.SrfDupMethod.srfDupNon,0.03,0.03,nil,nil,//

10

92,110,32,43,

Surfer.SrfGridAlgrithm.srfKing,false,nil,nil,nil,nil,//20

nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,//30

nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,//40

nil,nil,nil,nil,nil,nil,nil,nil,nil,GridFile,//50

Surfer.SrfGridFormat.srfGridFmatAscii,nil,nil,nil,nil,nil,nil,)

//注:將所提供的降水檔案格點化, InCSVFile即需要格點化的檔名加路徑,檔案第2列是經度,第3列是緯度,第5列是降水量值,網格經緯向的分

//辨率都是0. 03,起始經度是92度,終止經度是110度,起始緯度是32度,終止緯度是43度,選擇的插值方法是Kriging方法, GridFile即時離散插值後生

//成的路徑加檔名(其後綴應該是“. grd”, . grd檔案格式是Ascii碼的形式;

bit=AppSurfer.GridBlank (GridFile, outpath+ "\"+"GANKONG.BLN",GridFile,SrfGridFormat.srfGridFmtAscii);

//注:第一個GridFile為輸入的離散化檔案路徑加檔名,將其利用bln檔案去掉邊界外的資料,第二個GridFile 為輸出的離散化檔案路徑加檔案

//名,其輸出格式也是Ascii碼;

Surfer.IMapFrame MapFrame1=Doc.Shapes.AddContourMap(GridFile);

//注:將格點化檔案GridFile生成等值線圖,並給其命名為MapFrame1;

Surfer.IContourMap ClassedCounterMap=(Surfer.IContourMap)MapFrame1.Overlays.Item(1);

//注:將等值線圖形屬性指定給變數ClassedCounterMap;

ClassedCounterMap.Levels.LoadFile (outpath +"\ " + " 01. lvl" ) ;

ClassedCounterMap.SmoothContours.Equals(4);

ClassedCounterMap.FillContours=true;

ClassedCounterMap.ShowColorScale=true;

/// /注:等值線圖的色彩填充檔案為01. lvl, Surf2er都帶有這個檔案,

//SmoothContours為平滑等值線邊界,選擇填充等值線,顯示色標;

Surfer.IMapFrame mapframe2=Doc.Shapes.AddBaseMap(outpath + " \ " + " GANMAP. BLN ",outpath + " \ " + " GANKONG. BLN" ) ;

//注:新增BLN 底圖並將此圖層命名為map2frame2;

double[ ] CustomLevels=new double[14];

CustomLevels[0]=0;

CustomLevels[1]=1;

CustomLevels[2]=5;

CustomLevels[3]=10;

//注:定義色標的標註值,可以根據具體情況而定;

Surfer.ILevels Levels=((Surfer.IContourMap)MapFrame.Overlays.Item(1)).Levels;

Levels.Set(CustomLevels);

Levels.Item(1).Fill.ForeColor=Surfer.srfColor.srfColorLightYellow;

Levels.Item (2).Fill.ForeColor=Surfer.srfColor.srfColorBananaYellow;

Levels.Item (3).Fill.ForeColor=Surfer.srfColor.srfColorSeaGreen;

Levels.Item (4).Fill.ForeColor=Surfer.srfColor.srfColorOceanGreen;

//注:給MapFrame圖層上加色標,色標方案是此處定義的顏色方案;

Levels.Item(1).ShowLabel=true;

Levels.Item(2).ShowLabel=true;

Levels.Item(3).ShowLabel=true;

Levels.Item(4).ShowLabel=true;

//注:顯示色標值;

Doc.Shapes.SelectAll( );

Surfer.ISelectionsel=Doc.Selection;

sel.OverlayMaps( );

//注:將圖層全部選定,然後覆e68a847a686964616f31333337373732蓋地圖;

if(bit){Surfer.IMapFrame lMapFrame=((Surfer.IMapFrame)Doc.Shapes.Item("Map")) ;

((Surfer.IContourMap)lMapFrame Overlays.Item ("Contours")).SetZOrder(Surfer.SrfZOrder.srfZOToBack);

}

((Surfer.IMapFrame)Doc.Shapes.Item("Map")).SetLimits(92,110,32,43);

//注:定義新的圖層lMapFrame,新圖層的大小仍然是經度92 - 110度,緯度32 - 43度;

Doc.Export(outGraphic,false,"Defaults=1,Width=720,KeepAspect=1,ColorDepth=24,Automatic=0,Quality=100");

AppSurfer.Documents.CloseAll(Surfer.SrfSave2Types.srfSaveChangesNo);

AppSurfer.Quit();

//注:輸出檔案加路徑名是outGraphic,即圖片名稱,可以選擇幾種字尾(如png、jpg等) ,定義圖片的大小、顏色、質量等等,最後退出AppSurfer;

------其他回答(20分)---------

C# code

using System;

using System.Threading;

using System.Drawing;

// Before using this code you need to add a reference to the Surfer.exe program,

// which will automatically cause a type library to be generated.

// 1. In Visual Studio .NET, open the Solution Explorer

// 2. Right-click on References and select "Add Reference"

// 3. Click "Browse", find Surfer.exe and click "Open"

// 4. Click OK

// You can all add "using Surfer;" to the top of this file to to avoid having to

// reference the Server namespace on declarations.

//

//

namespace TT

{

/// <summary>

/// Demonstrates how to control surfer from a C# class

/// </summary>

public class SurferControl {

public Surfer.IColorMap ColorMap;

public SurferControl() {

//

// TODO: Add constructor logic here

//

// Make an instance of the application

Surfer.ApplicationClass AppSurfer = new Surfer.ApplicationClass();

// Make the application visible

AppSurfer.Visible = true;

// Get the Documents collection

Surfer.IDocuments Docs = AppSurfer.Documents;

// Add a new document to the Documents collection

Surfer.IPlotDocument Doc = (Surfer.IPlotDocument) Docs.Add(Surfer.SrfDocTypes.srfDocPlot);

// Get the Shapes collection from the document

Surfer.IShapes Shapes = Doc.Shapes;

// Create a shaded relief map from the helens2.grd file

Surfer.IMapFrame MapFrame = Shapes.AddReliefMap(AppSurfer.Path + @"\samples\helens2.grd");

// Get the shaded relief overlay from the map frame

Surfer.IReliefMap ReliefMap = (Surfer.IReliefMap) MapFrame.Overlays.Item(1);

// Get the ColorMap used by the relief map

ColorMap = ReliefMap.ColorMap;

// Animate the colors of the shaded relief map from the default black to red.

Thread AnimateThread = new Thread(new ThreadStart(AnimateColorMap));

AnimateThread.Start();

}

surfer8.0中如何將等值線圖和3D圖組合在一起,生成如下圖形?

surfer也許有這個功能吧,不過我真不知道,希望知道的朋友告訴,我也學百習一下。

下面說一下我的思路,完全可以實現這種效果。

下面的表面度圖就不說了,不問用做其它設定了。

而等值線圖預設是平面的,需要在屬性對話方塊答裡旋轉,與表面圖一致。如下圖:

旋轉設成45度,傾斜30度,就可內以了。

然後可以輸出些等值線圖,容再把等值線圖隱藏後,輸出表面圖,再把輸出的兩張圖用PS上下襬好,畫四條垂直線就可以了。

供參考。

怎麼在surfer同時畫多個等值線圖

分別生成兩個等值線圖,然後疊加在一起就可以了。

surfer8中有overlay的功能,

surfer9中麻煩一點,可以通過調整位置和尺度的方式實現。

哈哈!追問還有一個問題是:CAD貼圖:如何把底圖填充的顏色也顯示出來,不僅僅是線條啊!怎麼修改設定???本回答被提問者採納

surfer畫等值線圖怎麼圓滑

我以前回答過類似百的問題,基本上有三種辦法:

1、增加座標度點,三個點和三十個點,生成的等值線平滑度程度的區別是極問明顯的,所以,座標越多,線條越平滑

2、適當的插值函式,不同的函式,計算答的方法不同,得到的線條也有區版別,可以嘗試一下。

3、使用smooth,如下圖所示,平滑級別有低中高三個,但權效果並不是太明顯。

本回答被提問者採納

surfer的等值線圖怎麼與底圖疊加

1、首先,必須保證底圖與等值線圖的座標一致。

2、選中底圖和等值線圖,在左側視窗,用SHIFT或CTRL配合左鍵多選

3、如下圖,MAP-overlay maps,即可按座標對齊。

本回答被提問者採納

TAG標籤:平面 等值線圖 surfer #