绘制地形起伏剖面图

示例贡献者:

赵志远(作者)、陈箫翰(修订)


使用 GMT 绘制地形起伏剖面图的过程,可以简要概括为先利用 project 命令生成测线, 然后使用 grdtrack 命令读取该测线上的地形数据起伏,最后使用 plot 命令绘制出地形剖面图。

下面的例子展示了如何基于以上方法绘制一条地形起伏剖面。例子中使用了精度为4弧分的地形数据, 生成测线的数据点间隔为0.1度。读者应当根据自己的实际情况进行修改。

#!/usr/bin/env bash
#
# 绘制地形起伏剖面图

gmt begin profile

    gmt basemap -JM12c -R122/149/30/48 -Baf
    # 让0到2000m海拔的颜色从白,灰再到黑色渐变,生成cpt
    gmt makecpt -Cwhite,gray,black -T0/2000 -Z
    # 绘制灰度地形底图
    gmt grdimage @earth_relief_04m -C -I+d
    # 用蓝色填充海洋
    gmt coast -S167/194/223
    # 选取测线AB
    echo 126 42 A > tmp1
    echo 146 40 B >> tmp1
    # 绘制测线AB
    gmt plot tmp1 -W2p,red,-.-
    # 标注AB
    gmt text tmp1 -F+f15p -D0c/0.2c 
    
    # 沿测线AB绘制地形高度
    gmt basemap -R0/15/-8000/6000 -JX12c/3c -Bya4000+l"Elevation (m)" -Bxa2f1+l"Distance"+u"\260" -BWSrt -Y12c
    # 标注AB位置
    echo 0 7000 A | gmt text -F+f10p+jBC -N
    echo 15 7000 B | gmt text -F+f10p+jBC -N
    # 沿测线提取地形高度
    gmt project -C126/42 -E146/40 -G0.1 | gmt grdtrack -G@earth_relief_04m > tmp2
    # 将海平面以下填充为淡蓝色
    echo 0 0 > tmp3
    echo 15 0 >> tmp3
    gmt plot tmp3 -Wblack -Glightblue -L+y-8000
    # 将地形填充为灰色
    gmt plot tmp2 -i2,3 -Wblack -Ggray -L+y-8000 

    # 删除临时文件
    rm tmp*
gmt end show
../../_images/4d6b044d19cbd7059cc50533f515ff2f.png