铁路线数据来源于 MapSIS。

GMT 的 psxy 模块本身并不支持绘制铁路线。为了实现绘制铁路线的效果,此处采取的 技巧是是条线画两遍。如下脚本中第一个 psxy 命令绘制了一条宽度为 1.2p 的黑线, 第二个 psxy 命令绘制了一条宽度为 0.8p 的白线,这条线的线型 8_8: ,即线段 先是长度为 8p 的白线,然后是长度为 8p 的空白。由于线段的空白段是透明的, 所以会把第一次画的黑色线段露出来,最终实现了铁轨线的效果。

#!/bin/bash
R=70/138/13/56
J=M105/35/6.5i
PS=CN-Railways.ps

gmt set MAP_GRID_PEN_PRIMARY 0.25p,gray,2_2:1
gmt set FORMAT_GEO_MAP ddd:mm:ssF MAP_FRAME_WIDTH 3p
gmt set FONT_ANNOT_PRIMARY 7p

# 绘制中国地图
gmt pscoast -J$J -R$R -G244/243/239 -S167/194/223 -B10f5g10 -Lg85/17.5+c17.5+w800k+f+u -K > $PS
gmt psxy CN-border-La.dat -J$J -R$R -W0.5p,gray -O -K >> $PS

# 两次 psxy 命令使用不同的画笔属性以得到图中所示的铁轨效果
gmt psxy CN-Railways.dat -J$J -R$R -W1.2p,black -K -O >> $PS
gmt psxy CN-Railways.dat -J$J -R$R -W0.8p,white,8_8: -K -O >> $PS

# 绘制南海区域
R=105/123/3/24
J=M1.1i
gmt psbasemap -J$J -R$R -B0 -X5.4i --MAP_FRAME_TYPE=plain --MAP_FRAME_PEN=1p -K -O >> $PS
gmt pscoast -J$J -R$R -N1/0.1p -W1/0.25p -G244/243/239 -S167/194/223 -K -O >> $PS
gmt psxy CN-border-La.dat -J$J -R$R -W0.25p -O -K >> $PS

gmt psxy -J$J -R$R -O -T >> $PS
rm gmt.conf gmt.history

中国铁路线