14.7 绘制地形起伏图

本节描述如何绘制带有颜色和阴影的地形图。主要用到的模块有:

  1. grdcut:裁切地形数据
  2. grdgradient:制作阴影梯度数据
  3. grdimage:绘制地形
  4. pscoast:绘制政区边界、湿地(水体)、比例尺
  5. psscale: 绘制色标图例

绘图过程中需要的 Tibet.cpt

代码为:

#!/bin/bash
R=65/18/117/45+r
J=B90/0/40/30/6.5i
PS=GMT_tutor3.ps
D=earth_relief_03m.grd

gmt gmtset FONT_ANNOT_PRIMARY 10p

# 裁剪区域地形数据
gmt grdcut $D -R55/120/10/50 -GTibet.grd

# 计算区域地形梯度
gmt grdgradient Tibet.grd -A0 -Nt -Gint.grad

# 利用psbasemap确定格网标注等参数
gmt psbasemap -R$R -J$J -B10g10 -BwSEN -K > $PS

# 绘制地形
gmt grdimage -R$R -J$J -Bg10 Tibet.grd -Iint.grad -CTibet.cpt -K -O >> $PS

# 利用pscoast绘制水系、比例尺
gmt pscoast -R$R -J$J -N1/0.5p,white -Ia/0.15p,177/178/183 -I1/0.5p,61/99/172 -C81/174/254 -Lg86/18+c30+w1000+u+f -K -O >> $PS

# 绘制两个色标
gmt psscale -Dx-0.3i/1.4i+w2.5i/0.15i+ma -CTibet.cpt -G1600/9000 -By+lm -Bxa1000f200 -K -O >> $PS
gmt psscale -Dx-0.3i/0+w1.3i/0.15i+ma -CTibet.cpt -G-3500/0 -L -O >> $PS

rm gmt.* Tibet.grd int.grad

结果:

../../_images/GMT_tutor3.png

主要参数解释:

  1. grdcut 指从大区域地形中裁剪出自定义范围的数据(本例中为55-120°E,纬度10-50°N),该操作可降低后续梯度计算的复杂度,提高绘图效率。
  2. grdgradient 模块中: -A 设置梯度计算的角度(以北为起始,顺时针计算),也可用 -Aazim/azim2 表示计算两个方向梯度并取最大值。-N 表示归一化算法,一般有 -Nt (累积Cauchy分布)和 -Ne (累积Laplace分布)两种。 -N 后可接参数,具体参考帮助手册,一般使用默认即可。
  3. grdimage 模块中: -Igrdgradient 计算得到的梯度文件,-C 接地形渲染颜色表文件。GMT5.4版本中,-I 若未指定文件,则自动调用 grdgradient 计算梯度。
  4. pscoast 模块绘制行政边界、水体等,为避免被地形覆盖,需在 grdimage 之后进行。-N1/0.5p,white 表示以 0.5p 宽的白色线条绘制国界。 -Ia/0.15p,177/178/183 指绘制所有自然河流、人工运河,177/178/183 为线条颜色的RGB参数(浅灰)。-I1 表示绘制主要的恒流河,颜色为 61/99/172 (深蓝)。 -C 绘制湖泊,颜色为 81/174/254``(天蓝色)。 ``-L 绘制比例尺,其中 g86/18 指比例尺在图中的位置是86°E、 18°N; +c30 指所绘为30°N,中心经度之处的比例尺; +w1000 指比例尺长度为1000km; +u 表示在文字标注后显示长度单位,即 km+f 表示比例尺样式为黑白相间的fancy样式。
  5. psscale 模块绘制图中左侧的两个色标。两个色标均绘制了颜色表 Tibet.cpt 的一部分,用 -G 表示截断范围。-D 选项表示色标在图中的位置:如第一句中 -Dx-0.3i/1.4i 表示第一个色标绘在左下角原点左移0.3 inch,上移1.4 inch的位置, +w2.5i/0.15i 表示色标高2.5 inch,宽0.15 inch,+ma 表示色标的文字标注位于左侧。