1. 以格林威治为中央子午线 2. 用–L加入地图比例尺
9.5 第二部分(SESSION TWO )
9.5.1 一般信息(General Information )
有17条直接用于创建或修改图形的GMT命令(表 2.1),还有43条命令主要与数据处理有关。这一节将重点讨论在图上绘制线、符号和文本。我们将扩大我们已经获得的关于各种GMT地图投影、选择数据域和边界标注等方面的技巧。
表 2.1: GMT所有1–D 和 2–D 绘图命令列表
命令 作用
底图
psbasemap 创建一个具有任意尺度的空的底图框架 pscoast 绘制海岸线、填充大陆、绘制河流和行政边界
点和线 pswiggle 沿(x,y)–轨迹绘制空间–时间序列曲线 psxy 在2–D 图形中绘制符号、多边形和线 psxyz 在3–D 图形中绘制符号、多边形和线
柱状图
pshistogram 绘制矩形柱状图 psrose 绘制极坐标图(扇形图/玫瑰花图)
等值线图
grdcontour 由2–D 栅格数据绘制等值线 pscontour 使用最佳三角形法直接由xyz数据绘制等值线或影像图
表面图 grdimage 由2–D 网格数据构筑彩色影像图 grdvector 由2–D 网格数据绘制矢量场 grdview 由2–D 网格数据显示3–D 透视影像
几个有用的命令 psclip 使用多边形文件初始化用户剪裁路径 psimage 绘制Sun 光栅图像文件 psmask 创建剪裁路径或覆盖模板?Create clipping paths or generate overlay to mask psscale 绘制灰度或彩色图例条 pstext 在图上写字串
绘制线和符号,psxy 在GMT中是最常用的命令。除了常用的命令行转换开关外,它还有大量专用的选项,以及根据所选用的不同符号而使用不同的文件格式。这些情况使psxy 命令比GMT的大多数工具更难精通。表2.2 为psxy完整的选项列表
表 2.2: psxy 命令可选转换开关项
选项 作用 –A 限制沿大圆弧进行线性内插 –C cpt 由z–值和cpt 文件确定符号颜色 –E[ x][ y][ cap][/ pen] 绘制具有指定属性的误差棒 –G fill 设定符号或多边形的充填颜色
11
–L 构成封闭多边形
–M[ flag] 多段输入数据,数据头由flag开始 –N 在地图边界仍保留完整符号
–S[symbol][ size] 选择16种符号之一(见表 2.3) –W pen 设置线或符号边框的画笔属性
符号可以是空心的(只用–W,不用–G)或实心的(–G, 符号边框选项用–W)。–S 选择所需符号代码和给出符号大小信息。如果没有用–S选择符号,则认为在输入数据文件的最后一列给出。每个符号的大小可以任选,数值由输入文件提供。可用的15个符号列表如下:
表 2.3: psxy 可选符号。小写字符( a, c, d, h, i, s, t, x)表明符号在给定直径的圆之内。大写字符( A, C, D, H, I, S, T, X)表明符号的面积等于给定直径的圆的面积。 选项 符号 –Sa size 星号,size为外接圆的半径 –Sb size[/ base][u] 条棒,size 棒宽,加 u 表示size用x–轴单位;棒由base[0]延长到y–值 –Sc size 圆,size为直径 –Sd size 菱形,size为边长 –Se 椭圆,方向(direction,由水平方向逆时针计)、以英寸做单位的长轴major、和
短轴 minor 由输入数据文件读取。
–SE 椭圆,方位角azimuth(由垂直方向顺时针计),以公里做单位的长轴major、和
短轴minor由输入数据文件读取。
–Sf gap/ tick[ l|L|r|R] 断层,gap 和 tick 设置短线的长度和间隔,如gap < 0 即指短线编号;l 或 r 表
示短线画在断层线的左侧或右侧 [缺省画在线上],大写L 或 R 表示用三角形代替短线。
–Sh size 六边形,size为边长 –Si size 倒三角形,size为边长
–Sl size/ string[% font] 字符,size 为字体大小;增加一个字符或一个字串,字体可任选。 –Sp 点,无须设大小(当前分辨率下的1个像素) –Ss size 正方形,size为边长 –St size 三角形,size为边长
–Sv[ thick/ length/ width][ n norm] 箭头,方向direction(由水平方向逆时针计)和长度 length 由输
入数据文件读取。可选项,设定箭柄的宽度thick ,箭头的宽度width 和长度。如果增加n norm ,则所有长度小于norm 的箭头的属性都依length/ norm成比例。
–SV[ thick/ length/ width][ n norm] 箭头,用方位角azimuth(由北向东旋转的角度)代替方向
direction 。地图的角度根据所选的地图投影来计算。
–Sw[ size 扇形,起点和终点的方向(由水平方向逆时针计)由输入数据文件读取。 –Sx size 十字,size为十字线的长度。
因为有些符号需要更多的输入数据,符号的大小和颜色都可以由输入数据文件确定,数据的格式可能会引起混淆。通用的输入数据的格式为(可选项用方括号表示): x,y[ z ] [ size ] [σx] [σy] [ symbol ]
只有前两列是输入文件所必需的,它们一定是经度和纬度(或 x 和 y)。其他可选项在遇到以下情况之一时使用:
1. 如果你打算分别设定每个符号的颜色,用–C提供一个cpt文件,增加数据文件第3列,让z值在cpt文件所取值范围内。
12
2. 如果你打算分别设定每个符号的大小,在第4列给出符号大小。
3. 为绘制误差棒,使用–E 选项,并增加1列或2列数据,分别为±dx 和 ±dy 值。–E 的形式决定需要1列(–Ex 或 –Ey)还是2列(–Exy)数据。
4. 如果你使用–Sv(或–SV)绘制箭头,则size 实际上为2列,包括了每个箭头的方向direction(或方位 azimuth)和长度。
5. 如果你使用–Se绘制椭圆,则size 实际上为3列,包括了每个椭圆的方向direction,以英寸做单位的长轴major和短轴 minor(用 –SE 时,改为方位角azimuth,轴长以公里做单位).
在做练习之前,我们需要讨论两个关键的转换开关选项,它们是指定笔属性和符号及多边性的填充。
9.5.2 指定笔属性(Specifying pen attributes )
GMT中的画笔有3个属性,宽度width、颜色color和结构 texture。多数命令接受下列笔属性选项: –Wwidth[/color][texture][p]
Width 通常用当前设备分辨率为测量单位(即.gmtdefaults 文件里的DOTS_PR_INCH). 因此,如果dpi 设为300,每个单位就是1/300英寸。加 p 指定笔宽用点(1/72英寸)做单位。注意,根据你的设备的dpi的不同,笔宽为5可有不同的物理宽度,而5p 则总是5/72 英寸。 最细笔宽可以通过设定0宽度来实现,但实际物理宽度取决于设备分辨率。
color 可以指定为灰度,范围0–255(由黑色到白色线性变化),或采用 RGB 系统,你可以设定r/g/b,每个颜色的范围 0–255。这里0/0/0 为黑色,而 255/255/255为白色。
texture 属性控制了线的结构。为绘制点线,在width 和 color后简单加“to”;绘制虚线加“ta”。为精确描述你所需要的线型,可以使用“tstring:offset”,这里string 是被下画线所分割的一些整数。这些数字分别代表了线段的长度和线段之间间隔的长度。offset 指定线起点的偏移量。例如,如果你想要画一条2个单位宽的黄色虚线,其构成依次是20个单位的长线段,10个单位间隔,再接5个单位的短线段,10个单位间隔;由距离原点10个单位起开始画。写为: –W2/255/255/0t20_10_5_10:10
这里,texture 单位可以指定为dpi 或 points。
9.5.3指定填充属性(Specifying fill attributes)
许多绘图命令允许用户填充多边形或符号。有两种形式的填充: –Gfill
–Gpdpi/pattern[:Br/g/b[Fr/g/b]]
第一种形式,我们可以指定为灰度(0–255)或颜色(r/g/b 范围 0–255),类似于线的颜色设置。第二种形式,允许我们使用预定的位图模式。pattern 可以是1–90范围的数字,或1–、8–或 24–位的Sun 光栅文件的名字。前者将产生GMT 提供的90种预定义的 64 x 64 位图案之一,图案在GMT的技术参考附录E 中。 后者允许用户使用标准Sun 光栅文件创建一个定制的重复图像。dpi 参数设置页面中该图像的分辨率;由一系列这种“瓷片”镶嵌填满面积。如指定dpi为0 将产生.gmtdefaults 文件设定的当前可以得到的最高分辨率。如用大写字母–GP 代替–Gp ,图像将反相,即黑白像素交换(只能用于1–bit 图像或预设的位图图案)。对于这些图案和其它1–bit 图像可以分别指定背景色和前景色,(增加 :Br/g/b[Fr/g/b])它们将分别代替缺省的白色和黑色像素。设置一种前景或背景色在只显示前景或背景像素的地方可以产生一种透明图像效果。由于PostScript 执行的限制,使用–G的光栅图像大小一定要小于 146 x 146像素。大的图像见psimage。Sun光栅文件的格式在GMT的技术参考附录B 中有描述。注意在PostScript Level 1 下,图案的填充采用多边形回型路径的方式。复杂的回型路径要求比PostScript 解释程序所分配的内存更多。因此有可能导致某些PostScript 解释程序(特别是支持老式激光打印机的程序)出现内存溢出和中断。所以我们推荐你使用标准的灰度填充来代替图案。 范例
使用GMT 的minmax命令将得到数据范围的极值
13
返回
data: N = 7 <1/5> <1/5>
告诉我们数据文件有7条纪录,前两列分别是最小值和最大值。使我们了解使用–R 和 –JX选项时如何设计线性投影的范围。试做以下练习: 1. 绘制0.3英寸大的空心圆。 2. 改为用白色填充的圆。
3. 绘制0.5英寸的星形,圆周为宽1.5p的红色虚线。 为简化线的绘制,我们不选择任何符号并指定线宽: psxy data –R –JX –P –B –W0.5p > plot.ps 练习
1. 绘制一个绿蓝色的多边形。 2. 试用预制的图案。 一个常见的问题是:“怎样才能用psxy 命令绘制一个与线型相关的符号?”。回答是,我们必须调用psxy命令两次。主要因为被剪贴的多边形要保存在内存中,而我们能绘制多大的多边形要受计算机RAM 的限制。换句话说,符号一次可绘制一个,但画多少次并没有限制。 因此,为了把符号与线属性相联系,我们必须使用覆盖方式:
psxy data –R –JX –B –P –K –W0.5p > plot.ps psxy data –R –JX –O –W –Si0.2i >> plot.ps
最终的psxy命令包括了比较复杂的内容,我们打算在一个以海岸线为背景的底图上绘制几次地震的震中位置。我们想用符号的大小来反映地震的震级,用符号的颜色表示震源的深度。练习的目录下可以发现两个数据文件quakes.ngdc和 quakes.cpt 。 文件quakes.ngdc 的前几行格式如下: Historical Tsunami Earthquakes from the NGDC Database Year Mo Da Lat+N Long+E Dep Mag 1987 01 04 49.77 149.29 489 4.1 1987 01 09 39.90 141.68 067 6.8 该文件有3行头记录(包括空行),但我们只对每行的第5, 4, 6,7列感兴趣。除提取数据外,我们还要在震级和以英寸做单位的符号的大小之间建立比例关系。了解震级的范围后,选0.02作为系数乘以震级得到的符号大小比较合适。有多种方法可以重新规定输入文件的格式以使其符合psxy 的输入格式,包括手工编辑,使用MATLAB或 UNIX 工具。我们可以简单地使用UNIX 工具 awk来做这件事,但考虑到我们只介绍DOS批处理文件,重点介绍相应的命令gawk: gawk ―{if(NR > 3)print $5, $4, $6, 0.02*$7}‖ quakes.ngdc > quakes.d
执行这条命令的过程是,程序打开数据文件quakes.ngdc,根据条件语句,跳过前3行,由第4行开始读取,依次读取需要的第5, 4, 6和 7列,同时对第7列的数据乘以系数0.02。输出文件quakes.d 格式如下:
149.29 49.77 489 0.082 141.68 39.90 067 0.136 ...等等
4列数据顺序为震中的经度(x坐标)、纬度(y坐标)、震源深度和表示震级符号的直径(单位英寸)。下面我们将按照地震学传统的颜色方案,把浅源地震表示为红色(深度 0–100 km), 中源地震表示为绿色(深度100–300 km), 深源地震表示为蓝色(深度 > 300 km)。 文件quakes.cpt 在深度和颜色之间建立联系: #z0 red green blue z1 red green blue 0 255 0 0 100 255 0 0 100 0 255 0 300 0 255 0 300 0 0 255 1000 0 0 255
14
除了注释行外(由#开始),cpt文件的每一条记录都决定了z值落在z0 和 z1之间的符号的颜色。如果一条记录z0 和 z1两组的R/G/B不一致,那么将根据 z值的大小进行线性内插得到中间色。我们在这里选择的是颜色固定的间隔。
我们现在使用Mercator 投影完成我们的例子,例中还绘制了地图比例尺: pscoast –R130/150/35/50–JM6i–B5–P –G200–Lf134/49/42.5/500 –K > map.ps psxy–R –JM –O–Cquakes.cpt quakes.d –Sci–W0.25p >> map.ps 在 –Sc 选项后增加i 是为了保证符号的大小以英寸为单位。 练习
1. 选择其它符号
2. 把深源地震的颜色由蓝色改为灰色
9.5.4 Plotting text strings
许多情况下我们需要用文本传来注释图,在GMT中使用pstext命令来实现。除了一般的命令开关外,还有7个选项要用(表 2.4).
表 2.4: 一些最常用的pstext选项 选项 作用 –C dx/dy 设定文本和文本框之间的间隔(见 –W) –D dx/dy 设定字串投影位置偏移量 –G fill 设定文本颜色 –L 列出字体标识符并退出 –N 保持图边界符号完整 –S pen 选择空心字体并设置画笔属性
–W[ fill][ o[ pen]] 打印文本框,Paint the text box; draw the outline if o is appended(also see –C)
图 2.1: 文本框和外围空隙的关系 图 2.2: 文本串位置调整及相应的双字符代码
用 pstext 输入数据可望含有以下信息: x y size angle fontno justify text 7个参数的意义为: x y X坐标,Y坐标;
size 以点做单位的字体大小;
angle 文本基线和水平线之间的角度(逆时针测算); fontno 选用字符集代码;
justify 为字串对齐方式选择,设定文本串相对于x、y坐标的位置。相应的代码为1~LT,2~CT,3~RT,4~LM,5~CM,6~RM,7~LB,8~CB,9~RB;
text为字符串或待标注文本。图 2.2 说明这些概念并显示justify 选项所用的双字符代码。 文本串可以是一个或几个单词,也可以包括特殊字符的8进位代码,以及用于选择或中断下标或符号字体的切换符。以下是经过验证的切换符:
15