用GMT绘制中国及周边构造分区与GPS速度场
文章目录
GMT对地图的处理十分优秀,而且只需要短短几行代码。本文介绍了如何用等距圆锥投影绘制不同范围大小的地形图,以及如何在地形图上绘制断层、文字和矢量等。
这种图像通常出现在论文的第一幅图。主要介绍区域构造背景,根据不同的研究需要,可以叠加不同的信息。上图展示了最终图像,其包括了以下几个图层:
- 等距圆锥投影底图
- 地形起伏
- 海岸线和国界
- 带有三角标示的汇聚板块边界
- 汇聚方向回汇聚速率标示
- 中国大陆构造分区
- 中国大陆GPS速度场
以上每一条都是一句或几句GMT命令,将他们按顺序写入脚本即可。
1. 绘制等距圆锥投影底图
等距圆锥投影在所有经纬线的比例尺上都不会畸变,因此在绘制高纬度地图时通常选用这种投影方式。 其参数为:
|
|
<lon>/<lat>
投影中心位置<lat1>/<lat2>
两条标准纬线<width>
图像宽度,后面可以跟单位i
(英寸)、c
(厘米)等
在这个例子中我们用-R
选定绘图范围为
|
|
这时投影中心位置应设为
$$ lon = (65+140)/2 = 102.5 $$ $$ lat = (10+60)/2 = 35 $$
两条标准纬线决定了圆锥的角度,这个可以根据自己的喜好修改,只需要保证他们的值不超过绘图范围即可。所以投影参数应该设置为
|
|
然后我们用psbasemap
绘制底图。
|
|
2. 绘制地形起伏
截取地形数据
绘制地形起伏需要用到地形起伏数据,GMT中文社区的数据集提供了不同分辨率的地形区起伏数据链接。由于地形起伏数据是通常是全球范围的,我们需要用到grdcut
先将绘图范围内的地形起伏截取出来。
|
|
-G
选项指定了截取出来的文件路径。-R
表示截取范围继承上一个命令中的范围,在这里则继承psbasemap
中的-R$R
绘制地形起伏
这一步最重要的是选择一个好看的色标,图中色标是我自定义的一个全球色标,更多色标可以参考cpt-city。有色标之后就可以用grdimage
命令绘制地形起伏
|
|
添加光照效果
有时为了使图像更加立体,尤其是为了更好地反应造山带或海沟的特征这是一种很好的方式。这时我们需要先生成一个光照文件,在数学上其实是计算网格文件的方向梯度,所以使用grdgradient
命令。
|
|
topo.grd
是之前截取出的地形起伏文件-A50
表示方向差分沿方位角50˚-Ne0.7
表示对计算后的梯度值做归一化。其归一化公式如下 $$ g_n = A(1.0 - e^{\sqrt{2}}) $$ 这里$A=0.7$为归一化振幅-Gtopo_i.grd
表示输出文件topo_i.grd
现在需要修改上面的grdimage
命令,在其中加入生成的光照文件,这时绘制地形起伏命令可以写为
|
|
3. 绘制海岸线和国界
GMT提供了全球的海岸线数据。也包括了国界,通过pscoast
绘制它们。
|
|
-A
指定了绘制湖泊和岛屿的最小面积,数值越小湖泊越密。这里的数值很大则忽略了绝大部分湖泊-Dl
指定了海岸线的精度为l
(low),GMT提供了5个不同精度的版本,从高到低依次为:full、high、intermediate、low和crude对应f|h|i|l|c
-W0.3p
指定了海岸线的粗细-N1
表示绘制国界(不可作为发表使用)。
4. 绘制板块边界和构造分区
用psxy
可以绘制这些信息,类似的数据集可以在GMT中文社区中找到
|
|
- 绘制构造分区时
-W1.2p,255,-
指定了线型:1.2p
粗、白色和虚线 - 绘制板块边界时
-W1.5p,0/105/167
中0/105/167
表示用RGB方式指定颜色。 -Sf0.5c/0.1c+r+t+o0.1
定义了表示俯冲方向的三角的位置和大小0.5c/0.1c
分别表示相邻符号之间的距离和符号的大小,单位是厘米+r
表示符号绘制在线段右侧+t
表示符号为三角,更多断层符号请参考psxy
说明+o0.1
表示线段上的第一个符号距离线段起始偏移0.1
5. 绘制GPS速度场
GPS数据来源于 Zhao et al. (2015),分别有以下几列
|
|
对于这样的数据格式我们可以用psvelo
并配合awk
绘制
|
|
psvelo
中如果要绘制矢量则需要指定-Se
,其要求输入有7列,前6列与数据中的前6列一致分别是经度、纬度、东西方向速度、南北方向速度、东西方向速度误差和南北方向速度误差(误差用于绘制置信椭圆)。第7列为两个方向的相关性。所以这里用awk
输出数据表的前6列并将第7列设为0-Se0.02c/0.95/0
表示绘制矢量,0.02c
表示矢量的缩放比例,即速度为1时矢量长度为0.02厘米;0.95
表示绘制95%的置信椭圆;0
设置文本大小,这里没有文本即为0-A0.15c+e+p0.75p
设置了箭头的大小、方向和粗细-G255/23/23
表示矢量填充的颜色
6. 绘制板块汇聚方向和回汇聚速率标示
绘制板块汇聚方向示意
本质上这是画了一个很粗的箭头。这里画单一箭头用psxy
中的绘制矢量标示即可
|
|
- 我们用
echo
命令为psxy
输入了4列分别为经度、纬度、方向和矢量长度 -SV0.5c+e
表示箭头大小为0.5厘米,箭头绘制在矢量尾端-W4p
矢量粗细为4p-G0
填充黑色
绘制汇聚速率文字标示
GMT中pstext
用于在图上添加文字。
|
|
- 输入为三列分别是经度、纬度和文字内容
-A
标示旋转角度为水平方向逆时针旋转的角度-F+f10p+a105
用于控制文字的属性+f10p
表示字体大小为10pa105
表示旋转105˚
7. 一些注意事项
把这些命令按顺序写在脚本里就可以绘制出完整的图像,但为了脚本的规范我们还需注意
-
所有的变量都应该在脚本开头定义,文中为了方便说明才分别定义了每一个变量。
-
设置一些GMT参数来美化图像,GMT默认的边框我个人感觉有点粗可以设定其粗细和刻度文字大小
1 2 3
gmt set FONT_ANNOT_PRIMARY 10 gmt set MAP_FRAME_WIDTH 0.08 gmt set MAP_TICK_LENGTH_PRIMARY 0.08
-
在所有绘图命令后加一句结尾语句。
1
gmt psxy -R -J -O -T >> $ps
-
转换图像格式,建议最后将图像转化成一些通用的图像格式如jpg、png、pdf等
1
gmt psconvert -A -P -Tg $ps
-
在脚本结尾删除中间文件。文中生成的
topo.grd
、topo_i.grd
都属于中间文件,要在最后删除。如果进行来图像格式转化,ps文件也要删除。
文章作者 Mijian Xu
上次更新 2020-01-30