2-10-用GMT绘制三维地形图
本文所需脚本和数据可从GitHub上下载:GMT地形图绘制
OK,个人觉得GMT绘制三维地形图真的非常美,非常具有空间的立体感,先上图
对比一下二维地形图:
应该说两者各有千秋,GMT绘制地形图真的是非常棒!
贴上代码和解释:
#!/bin/bash
RR=R70/110/15/45
RZ=R70/110/15/45/-4000/5000
JJ=JM10c
JZ=JZ4c
RRsub=R60/140/4/60
DD=D70/110/15/45
JJsub=JM1.5i
PS=topo3D_2.ps
CPT=etopo1.cpt
GRD=Tibet_topo.grd
RANGE=-550/380/20
ILLU=topo.i
pp=p150/40
#注意,部分版本的命令为gmtset而不是gmt set,即中间没有空格。具体要根据版本来,自己可以测试哪个才正确
gmt set MAP_FRAME_TYPE=plain
gmt psxy -$JJ -$RR -T -K -P >$PS
#这里使用psbasemap主要是控制坐标轴的属性,当然也可以把这一部分直接放在grdview里面
gmt psbasemap -$RZ -$JJ -$JZ -$pp -B5 -Bz2000+l"topo" -BSEnwZ -K -O >>$PS
gmt grdview $GRD -$JJ -$JZ -$RZ -Qi500 -N-4000+ggray -C$CPT -$pp -K -O >>$PS
gmt psxy -$JJ -$RR -T -O >>$PS
gmt psconvert $PS -Tj -A
rm $CPT
解释:
首先一头一尾的两个psxy没有任何作用,主要是控制-K和-O属性,这样不用在改代码时忘记加入-K和-O了; psbasemap主要是控制坐标轴的属性,当然也可以把这一部分直接放在grdview里面;
grdview是主要的绘制3D图的模块,与二维不同的是,这里增加了一个Z轴,所以投影和范围都要增加z轴,所以要注意:
- -J和-R选项都要有z轴,具体见$JZ和$RZ,
- -Q控制绘图方式,有m/i/s三个选项,分别表示mesh,imag,surface,这里用的imag,若用mesh,则没有色彩,会用灰度网格代替
- -N控制三维图上Z平面的起点,这里是-4000,表示-4000海拔作为底面,一般与R选项的范围相同,若不同绘制的图不太好看。+g控制填充颜色,这里是gray。
- p选项控制视角,即从哪个角度画三维图,150是方位视角,即逆时针旋转150度,40是高度视角
- 方位视角怎么算?就是原点(左下角的点,或者说经纬度最小的点)与正北方向的夹角。当方位视角为0度时,即p设置为-p0/40,得到图:
更多资料
GMT目录