当前位置:懂科普 >

IT科技

> 如何用surfer画平面等值线图

如何用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,即可按坐标对齐。

本回答被提问者采纳

  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/itkeji/rez4.html