美文网首页GMT制图
2-10 用GMT绘制三维地形图

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

作者: just_to_play | 来源:发表于2018-09-29 21:40 被阅读11次

    本文所需脚本和数据可从GitHub上下载:GMT地形图绘制
    OK,个人觉得GMT绘制三维地形图真的非常美,非常具有空间的立体感,先上图

    青藏高原三维地形图
    对比一下二维地形图: 二维地形图
    绘制二维图的方法见:用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目录

    相关文章

      网友评论

        本文标题:2-10 用GMT绘制三维地形图

        本文链接:https://www.haomeiwen.com/subject/jgzboftx.html