2-10-用GMT绘制三维地形图

04 Jul 2018

本文所需脚本和数据可从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轴,所以要注意:

  1. -J和-R选项都要有z轴,具体见$JZ和$RZ,
  2. -Q控制绘图方式,有m/i/s三个选项,分别表示mesh,imag,surface,这里用的imag,若用mesh,则没有色彩,会用灰度网格代替
  3. -N控制三维图上Z平面的起点,这里是-4000,表示-4000海拔作为底面,一般与R选项的范围相同,若不同绘制的图不太好看。+g控制填充颜色,这里是gray。
  4. p选项控制视角,即从哪个角度画三维图,150是方位视角,即逆时针旋转150度,40是高度视角
  5. 方位视角怎么算?就是原点(左下角的点,或者说经纬度最小的点)与正北方向的夹角。当方位视角为0度时,即p设置为-p0/40,得到图:

方位视角为0度


更多资料
GMT目录