surfer8 0

更新时间:2022-12-31 19:18:47 阅读: 评论:0


2022年12月31日发(作者:常德学校)

Surfer8.0初学者手册

原创:Addison

2003.05.21

一、简介

GoldenSoftwareSurfer8.0(以下简称Surfer)是一款画三维图(等高线,imagemap,3d

surface)的软件,该软件简单易学,可以在几分钟内学会主要内容,且其自带的英文帮助(help

菜单)对如何使用surfer解释的很详细,其中的tutorial教程更是清晰的介绍了surfer的简单

应用,应该说surfer软件自带的帮助文件是相当完美且容易阅读的,只要学过英语的人都可

以很快上手。

Surfer是具有插值功能的绘图软件,因此,即使你的数据是不等间距的,依然可以用它

作图。但依据作者的经验,最好不使用Surfer自带的插值功能,尤其是要精确确定等高线时。

由于surfer是美国的一个软件,它不提供对中文的支持,这可以算的上一个小的遗憾。

Surfer的主要功能是绘制等高线图(contourmap),此外它还可以绘制postmap,clasd

postmap,vectormap,imagemap,wireframemap,3dsurfacemap,等形式的图形。其

功能是比较强的,但没有各种投影变化是它的一大缺点。尤其是在等高线领域,这不能不说

是它的应用受到限制的地方。

由于surfer软件没有中文说明书,对一些初学者来说可能会存在上手较难的问题,鉴于

此种需求,编写了这一初学者参考手册,希望对大家有所帮助。

二、等高线的绘制

Surfer的最主要的功能是绘制等高线图,但并不是我们具有了数据文件就可以直接绘制等高

线,surfer要求绘制等高线的数据有特殊的格式要求,即首先要将数据文件转换成Surfer认

识的grd文件格式,才能绘制等高线(当然,可以直接生成surfer接受的ascii码的grd文

件格式,这样就可以直接作图,此方法将在后面介绍,首先我们介绍常用的作图方法)。假

设你有三列数据分别为X,Y,Z,其中Z为点(x,y)处的值,存在文件中(数据

见附件),其中第一列是X坐标,第二列是Y坐标,第三列是(x,y)上的值Z,则绘制等

高线的步骤如下:

步骤一:把数据文件转换成grd文件

1.打开菜单Grid|Data...,在open对话框中选择数据文件

2.这会打开“GridData”对话框。在“DataColumns”中选择要进行GRID的网格数

据(X和Y坐标)以及格点上的值(Z列),这里我们不用选择,因只有3列数据

且它们的排列顺利已经是XYZ了,如果是多列数据,则可以在下拉菜单中选择所

需要的列数据。选择好坐标XY和Z值后,在“GridingMethod"中选择一种插值方

法(如果你需要比原始数据的网格X和Y更密的Z数据,或是你的网格是非均匀

的),则在Grid的过程中,Surfer会自动进行插值计算,生成更密网格的数据。如

果你只是想绘制原始数据的图,不想插值,则最好选择距离平方反比法(inver

distancetoapower)或Kriging方法。因为这两种方法在插值点与取样点重合时,插

值点的值就是样本点的值,而其它方法不能保证如此。在"OutputGridFile“中输入

输出文件名,然后在“GridLineGeometry”中设置网格点数。这里需要注意

的是,当X和Y的数值相差很大时,这里显示的最大最小值可能有错误(即与原始

数据不同),这是Surfer软件本身的问题,遇到这种情况,必须手动改正这种错误,

即输入正确的最大最小值。由于我们的数据没有此类问题,因此不必手动改正最大

最小值。但必须手动改正X和Y的间距“spacing”或数据个数“#f”,这二者是

相关的,改动一个,另一个自动改正。如果你的原始数据是等间距的,这里的X和

Y的间距“spacing"或”#f“最好与原数据一致,这样可以减少插值带来的误差。

我们的数据是不均匀的,所以必须插值,这里可以不进行任何改动。好了,点“ok”,

画图所需要的grd文件就生成了。

步骤二:画等高线

打开菜单“Map|CountourMap|NewCountourMap",在“OpenGrid”对话框中

选择刚才输出的grd文件,如,点“ok”,则一副等高线图就画完了。

步骤三:等高线图的设置

在所画的等高线图中双击鼠标,或点击右键,选中“属性”,就会出现设置等高

线的各种属性,在图的边缘双击鼠标则可以改动坐标轴的属性。

等高线图的着色(fill)和设置

双击等高线图,就会出现“map:countourproperities”对话框,现在介绍此对话框中的

设置。

“General”选项卡中:

1、“inputgridfile”

为打开的等高线图的grid文件名,你可以修改此处,打开不同的文件(几乎没人

这样做),点一下打开文件图标旁的“i”图标,则可以看到当前grid文件的基本统计

信息,如最大最小值等。

2、“filledcountours”

选中fillcountour(在前面的方框中点一下鼠标),就可以画着色的等高线图了,

如果再选中下面的“colorscale”的话,则可以在等高线图旁边给出色彩棒。

3、“smothing”

选中的话可以对等高线进行平滑,在amount中有“低、中、高”三种选择。这一

项一般可以不选,除非你画出的等高线图中的等高线非常的不平滑,这项只起到美化

图形的结果,没有更大的意义。

4、“blankedregions”

这项可以对空白区域进行着色,只有在你的等高线中有空白区域时才有意义,一

般不用。

5、“faultline”

可以设置等高线的粗细颜色等。

“Levels”选项卡中:

1、“level”

点击“level”可以设置等高线的最大最小值和等高线间的等高距,这可以对所有

的等高线发生作用,通过调节此项可以使等高线分布均匀,易于看清楚,作图更美观。

如不想人为改动,可用缺省值。双击level下面的数字,可以单独更改等高线的值,但

要注意等高线从小到大的规律,不能瞎改。

2、“line”

点击“line”可以设置等高线的线型。

3、“properities”

选中“uniform”,则线型是统一的,选中“gradation”,则线的颜色是渐变的。选

择好“properities”后,就可以更改下面的线型(style)和颜色(color)已经线的粗细

(line)。当选“gradation”时,线的颜色是渐变的,点一下color旁边的颜色区,就会

出现“colorspectrum”选项,点一下“盾形”图标(在颜色条的左右两端上方),就可

以分别点选下面的颜色了,当然,也可以自己加入“盾形”图标,加自己的颜色。或

是用“load”调用调色板文件(*.clr),在surfer8目录下就有。“affectedlevels”可以有

选择的对等高线的线型颜色进行设置,这里不再详细介绍,只要自己动手改改那里边

的三个数字,你很快就会弄明白。此外,还可以通过双击line下面的线来改变某一根

等高线的具体属性。

4、“fill”

此选项只有在着色等高线图中才有效,对单独的等高线图无作用。点击“fill”设

置着色。着色与“line”选项中的内容类似,不再详细介绍。同样,可以通过双击“fill”

下面的具体颜色条来对特定的等高线区域进行着色。

5、“labels”

设置等高线标注数字,比较简单。双击下面的“yes”或“no”可以改变是否显示

标注。

6、“hach”

用来画等高线的上下方向(即上山或下山方向),一般不用。

7、“add”和“delete”

在右边的按钮。当选中某一level后,点“add”按钮可以在两个level之间插入

一新的level。Delete按钮则删除选中的level

“view”选项卡中

用来调整等高线图的整体方向,除了在3dsurface情况下,一般不用。

“scale”选项卡中

用来设置xyz轴的比例,可以调整其长度选项。一般情况不需调整,除非X和Y

相差很大,为了方便看图可以调整其到合适的长度。

“limits”选项卡中:

可以用来裁剪等高线图(通过设置xy的最小最大值),从而得到感兴趣地方大小

的图形。

“background”选项卡中:

可用来设置背景填色,一般不用。

横纵(xy)坐标轴的设置:

双击横轴和纵轴所在的位置,就可以打开坐标轴属性对话框“mapbottom(orleftortop

orright)axisproperties”下面以bottom轴为例,其它类似:

“gernal”选项卡:

“Title”,在空白处可以输入轴的说明或图的说明文字,用“offtalong”和“offt

from”可以设置说明文字的位置,“font”可以选择字体,“angle”可以选择文字的旋

转角度。

“labels”,设置轴的刻度值。

“axisplane”设置轴平面,一般不改动。

“axis”设置轴线属性。

“ticks”选项卡:

设置轴线上刻度的长度,方向,主刻度和辅助刻度。

“scaling”选项卡:

设置刻度值(label)的起始值(firstmajor),间隔(major)和最后值(lastmajor)。其它值

一般不修改。

“gridlines”选项卡:

用来设置等高线图的坐标网格,用鼠标点击“show”即可。

此外,以上等高线的所有属性都可以通过双击左边的“objectmanager”(或在“view”菜单

中)属性窗口来设置,与直接在图中设置无异。

三、在等高线图上加上背景地图(bamap)(世界地图或局部地图)

我们经常需要把世界地图放在等高线图下面作为参考,世界地图在surfer中的格式是

*.bln,*.gsb,*.jpg,*.gif等多种形式,比较常用的是*.bln文件,这些地图在surfer的官方网站

/都有,可以自由下载。在附件中提供给大家一个世界地图的

bln文件,文件名。

在surfer中打开map|bamap...然后打开文件,就可以画出世界地图了。

用view|fitto

window可以

很好的显示.

然后我们可

以把相应的

等高线图用

第二部分的

方法画出(注

意bamap

的网格坐标

必须与等高

线图的网格

坐标一致,至

少bamap

的网格坐标要包含等高线图的网格坐标)。再按F2键(选中所有对象,或ctrl+A),点击

map|overlapmaps就可以将两幅图合成一副图。打开view|objectmanager,选中"ba",点右

键,选orderoverlay|movetofront就可以将背景图移到前面一层。这样一份好的等高线图就

画好了。(见右图)

四、bln文件及blank作图

大家看了第三部分的图有可能会奇怪,为什么你的等高线只在海洋上有,陆地上怎么没

有呢?这就是此节要讲的内容。首先讲一下bln文件的格式,bln文件具有以下格式:

length,flag

x1,y1

x2,y2

...

xn,yn

length,flag

x1,y1

x2,y2

...

xn,yn

其中,length是背景地图曲线中点坐标的个数,如果xn=x1,yn=y1,那么所有的点将围成

一个圈。如果不是这样,则是一条不闭合的曲线。flag的值为1或0,当flag=1时,闭合

曲线里面的等高线可以用此bln文件blank掉(即将闭合曲线中的等高线消除),如果flag=0,

则是曲线外面的等高线被blank。我所提供的bln文件为flag=1的格式,当然可以将其改成

0。简单介绍了bln文件的格式,再来介绍怎样blank等高线。假设我们已经有了一个全球的

等高线图,其原始数据文件为.打开grid|blank...选择文件,"ok",然后在新的对

话框中选择,"ok",再在新的对话框中输入要输出的grd文件的名字,点ok就

可以得到一个blank过的grd文件(假设为),则用再做等高线图,即可出现我

所给第三部分中图的效果.

五、应用surfer给出数据文件的统计性质

在应用数据作图前,有时候需要知道每列数据的统计性质,如最大值,最小值,标准差

等。应用surfer的worksheet可以很方便的解决此问题。打开file|new选中worksheet,则出

现一个类似excel的表格,在此环境下,可以用file|open来打开需要查看的数据文件,譬如

。如果我们想知道B列的统计性质,则点击B,再打开菜单data|statics...,选"ok",

就会出现统计结果。同时,我们还可以对各列进行数学运算,譬如我想生成新的一列D,

它是B列的平方加上C列的和,则先点击D列(空白列),再打开菜单data|transform...在

transformequation下输入“D=B*B+C”点击"ok",则会生成D列数据,只要将文件另存为

新文档就可以了。当然,你还可以用surfer的worksheet做很多类似的计算。应该说,surfer

的这一功能是很实用的,当然,还可以用data|sort...对数据进行排序。

六、postmap和clasdpostmap

有时候,我们需要在bamap中添加台站的坐标,并用三角,五星等符合将其标出,

且在旁边写上台站的名字,这可以用postmap和clasdpostmap完成。首先介绍postmap,

它的数据文件一般格式是:

x1,y1,label1

x2,y2,label2

...

xn,yn,labeln

其中,xn,yn为坐标值,label为数

字或文字。我们还是以为例

子,打开map|postmap|newpost

map...,选择文件,选"ok",

则会出现一副postmap的图,双击

图的中央,就会打开其属性。在

gernal选项中可以设置坐标列,以及

symbol(可更改为其它的形状,缺

省为十字)。在labels选项中,可以

通过"worksheetcolumnforlabel"设

置label,此处我们选择c列,则c

列的值会出现在每个坐标点的上

方。(如图所示)至于其它的设置跟

等高线类似,不再详述。

至于clasdpostmap与postmap类似,只是对不同的点,根据某些规则分类而已。譬

如还是文件,我们把c列看成是每个点的高程,则可以根据高程对各点分类。如高

程在25-54的用十字表示,88-105的用三角表示等。打开map|postmap|newclasdpostmap...,

选择文件,选"ok",则出现一副clasdpostmap,双击图可以编辑属性,这里会多一

个"class"选项卡,这里的选项最大最小值,symbol等都可以改,不再详述。需要注意的是

clasdpostmap至少要有三列数据,其中第三列就是分类的标准。

七、vectormap向量图(或风向图)

很多人是学习大气和海洋的,因此经常要画风向量图或海流的向量图,surfer可以轻松的

完成,且图形可以调整,因此可以生成很漂亮的图形。vectormap分1-gridvectormap和

2-gridvectormap两种。首先介绍1-gridvectormap:

1-gridvectormap可以给出坐标点的方向和振幅大小,但它一般表示的是等高线的下山

方向和大小,是等高线图的一种特殊表现方式,如应用就可以做出。打开map|vector

map|new1-gridvectormap,选中,则会出现一副箭头图。通过双击图的中央可以编

辑它的属性,此图一般很少应用,因此其属性设置不再详述,感兴趣的朋友可以自己试一下。

下面主要讲2-gridvectormap,2-gridvectormap用到两个不同的grd文件,一般讲这两

个文件应该有相同的坐标网格。2-gridvectormap的grd文件可以有两种表示方法,一种是

直角坐标形式,一种是极坐标形式。对直角坐标形式,其中一个grd文件里是x方向的值,

另一个是y方向的值。对极坐标形式,一个grd文件是vector的方向,另一个grd文件是vector

的振幅值。下面举个具体的例子来说明如何作图。假设我们已经有了风分量u和v的两个

直角坐标的grd文件(包括xywindu三个分量),名字分别为和

两个grd文件(需要注意的是,这两个文件已经是ascii码的grd文件,看

不到相应的三个分量,但不需要再进行grid过程,可以直接应用,至于如何生成这种形式

的grd文件,我将在后面具体解释)。打开map|vectormap|new2-gridvectormap,将打开"open

xcomponent(angle)grid"对话框,此时选中(注意,需要在文件类型中选

择allfiles(*.*)才可以选择*.dat文件),随后会打开"openycomponent(length)grid"对话框,

此时选中,选择"ok",就会出现一副风的箭头图,再加上bamap就成了

一副很漂亮的图(如图所

示)。通过双击就可以打开

此图的属性(mapvectors

properties)。注意:在"data"选

项卡中,coordinatesystem

要选cartesian(x,y)(如果你用

极坐标,就选polar(angle,

length))。在"symbol"选项卡

中可以修改箭头的形状,线

的属性,其中frequency是

设置x和y方向需要箭头的

频率,此处我们改为3,3,即在x和y方向都是每3点画一个箭头,也即省略了两点。其

中的colorscaling可以会色彩箭头,大家可以看一下效果(此处我没有改动)。在"scaling"选

项卡中,可以设置箭头起始点的位置(symbol项),以及箭头长度的比例形式(线性,log,平

方根等,在scaling项中改)。在右边还有两个选项,一个是反转箭头方向,一个是给出箭头

的图标(legend),选中后者。在下面可以设置箭头的各个属性(mangitude,shaftlength,head

length和symbolwidth,分别表示风的振幅大小(可改,这里选用缺省值),箭头杆的长度,

箭头头的长度和箭头的宽度,这里其最小最大值分别为(后三项)0.04in,0.2in,0.04in,0.04in,

0.01in,0.01in)。在"scale"选项卡中,选择xscale下的length为6in,yscale下的length为

3in。其它属性不做改动,即可生成我所给的图形。当然,你也可以给出风uv项的角度和

振幅,用极坐标来画图,这其中要注意极坐标的参考点可以是东(角度逆时针)或北(角度顺时

针),请注意选择(在属性的"data"选项卡中修改,且其角度可以用度或弧度作单位,请小心

区分)。

八、ascii码的grd文件及插值问题

在第七部分给出的grd文件是ascii码的直接grd文件格式,无需进行grid过程,这样

做简单,准确,可以在工作和学习过程中提供很多方便。下面做一详细介绍:

ascii码的直接grd文件格式包括5个文件头信息(关于网格的限制),然后是z的值,值得注

意的是,这种文件格式必须用空格来区分两个数据。其一般格式为:

DSAA(注意,必须大写且从第一行第一列开始,即DSAA前面不能有空格)

nxny(x方向网格点的个数nx,y方向网格点的个数ny)

xloxhi(x方向网格点的最小值和最大值)

yloyhi(y方向网格点的最小值和最大值)

zlozhi(z方向网格点的最小值和最大值)

gridrow1(z的值在点(x1,y1),(x2,y1),....(xn,y1))

gridrow2(z的值在点(x1,y2),(x2,y2),....(xn,y2))

gridrow........

gridrown(z的值在点(x1,yn),(x2,yn),....(xn,yn))

注意,此处x1

下面是一个具体的例子:

DSAA

1010

0.09.0

11.020.0

25.0097.19

91.0377.2160.5546.6752.7364.0541.1954.9944.3025.00

96.0481.1062.3848.7457.5063.2748.6760.8151.7833.63

92.1085.0565.0953.0164.4465.6452.5366.5459.2941.33

94.0485.6365.5655.3273.1870.8855.3576.2767.2045.78

97.1982.0064.2161.9782.9980.3458.5586.2875.0248.75

91.3678.7364.0565.6082.5881.3761.1689.0981.3654.87

86.3177.5867.7168.5073.3774.8465.3595.5585.9255.76

80.8875.5674.3572.4766.9375.4986.3992.1084.4155.00

74.7766.0270.2975.1660.5665.5685.0789.8174.5351.69

70.0054.1962.2774.5155.9555.4271.2174.6363.1444.99

在这个例子中,共有100个z的值,其中x为10个,y为10个,x的最小最大值是0.0和

9.0,y的最小最大值是11.0和20.0,z的最小最大值是25.00和97.19,最后是100个z的

值,每行10个值,共10行。当然,我们也没有必要这样排列,只有顺序不变,照样可以

每行只有一个值,即类似下面的排法:

....(省略了文件头信息)

91.03

77.21

60.55

...

74.63

63.14

44.99

这里我给出一个FORTRAN语言生成ascii码grd文件的子程序,仅供参考:

--------------------------------------------------------------------------------------------------------------------

!writegoldensoftwaresurfer8.0gridformatdatabyascii(3d)

!num_x,num_y=numberinxandydirectionrespectively

!x_begin,x_end,y_begin,y_end=thebeginandendvalueinxandydirectionrespectively

!z(num_x,num_y)=zvalueatgridxandypoint

!iunit,filename=openfileunitandnametowritethe3ddata

subroutinewr_surfer_grid(num_x,num_y,x_begin,x_end,y_begin,y_end,z,iunit,filename)

implicitnone

integer,intent(in)::num_x,num_y,iunit

real,intent(in)::x_begin,x_end,y_begin,y_end,z(num_x,num_y)

character(len

=

*),intent(in)::filename

integeri,j

clo(iunit)

open(iunit,file

=

filename//'.')

write(iunit,'(4a)')'dsaa'

write(iunit,*)num_x,num_y

write(iunit,*)x_begin,x_end

write(iunit,*)y_begin,y_end

write(iunit,*)minval(z),maxval(z)

doj

=

1,num_y;doi

=

1,num_x

write(iunit,*)z(i,j)

enddo;enddo

clo(iunit)

print*,''

print*,'outputdatatofile:',filename//'.'

print*,''

endsubroutinewr_surfer_grid

-------------------------------------------------------------------------------------------------------

近些日子,有人问surfer8中的插值哪种好?我个人的观点,如果你的数据的网格是均

匀的,那么,最好用我提供的这种ascii码的grd文件直接作图。这样做的好处是显而易见

的,即不会产生作图误差,且不会出现其它小问题,如不能正确处理x和y坐标(当二者差

异较大时等)。我不主张在作图过程中进行插值计算。如果你的网格是非均匀的,则可能需

要进行插值,我在前面介绍过在哪里选择,我个人认为比较好的是前两种(inver

distancetoapower和Kriging方法),至于插值方法的详细介绍请参考help|contents|index中

查找interpolation主题词。因为时间关系,不再介绍插值问题。

此外,surfer还可以做imagemap,shadedreliefmap,wireframemap,3dsurfacemap等

多种map形式,这些其实都是等高线图的其它表现形式,所用的文件就是grd文件,只是表

现形式不同而已,至于具体设置,相信大家已经可以轻松搞定。

最后介绍一下surfer图形的输出,当作好图以后,可以按F2键,再按ctrl+c,就可以将

图形复制,可以直接粘贴到word文档中。此外,还可以通过file|export菜单输出各种格式

的图形(如jpeg,wmf等)。至于向量图eps的输出,可以通过eps打印机进行。

Surfer还有一些辅助功能,如函数直接作图等(在grid菜单中),标注文字,画简单的图形等,

请大家自己参考help进行学习,这些在现在的基础上,应该是很简单的问题。

感谢funny斑竹的支持,希望我所写的对大家有所帮助,那将是我最大的荣幸。再次感

谢朋友们关注surfer作图。

任何问题和建议请发送到addison0220_cn@

(over,thoughIdonotwanttosaygoodbye!)

(全文完)

本文发布于:2022-12-31 19:18:47,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/67316.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:baiyue
下一篇:日本落叶松
标签:surfer8 0
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图