0%

pscoast提取海岸线、湖泊岸线、行政边界

以后以提问的形式进行吧,这样可能更有益于学习。

提问:请问我想提取出青海湖的岸线在别的程序使用,能使用GMT吗?
回答:可以,pscoast -M 具有这种功能,使用下面的代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
# GMT EXAMPLE xxxx
# 2019-04-14 leiyang@fio.org.cn
# Purpose: Using pscoast to get coastline data
#

gmt gmtset FORMAT_GEO_MAP = ddd:mmF MAP_FRAME_WIDTH=2p
gmt gmtset FONT_ANNOT_PRIMARY 7p,Helvetica,black FONT_LABEL 7p,Helvetica,black

ps=example_large.ps
R2=-R99:25/100:50/36:18/37:23

gmt psbasemap $R2 -JM4.5i -K -Bag > $ps
gmt pscoast $R2 -M -W2 -Df > qhlake.txt
gmt psxy $R2 -J qhlake.txt -W0.4p,green -O >> $ps

目前有一个bug,-W改变level时,输出不变,都是all level的数据。同理输出河流数据使用-I,-N输出行政边界,-E输出闭合的行政边界。

提问:那么怎么输出中国的国界线呢?输出的国界线争议部分怎么办?能否用于论文、报告等出版?
回答:可使用下面的代码输出国界线,通过叠加我国政府发布的边界线可以看到二者存在差异,出版应以我国政府发布为准。代码中使用的我国官方边界为guojie.txt ,数据下载提取码nnx9。此外分享我国省、市、县的边界shp文件,点击下载,提取码q8n0。

1
2
3
4
5
ps=example_border.ps
gmt pscoast -ECN -M -Df >cn.txt
gmt psbasemap -JM4.5i -K -Bag `gmt gmtinfo ../GMTnie/guojie.xyz -I0.000001`> $ps
gmt psxy -R -J cn.txt -W0.4p,red -O -K>> $ps
gmt psxy -R -J ../GMTnie/guojie.xyz -W0.8p,black -O>> $ps

提问:怎么提取一个省的边界呢?(注意,提取的目的还是为了别的用途,如果只是绘图,则没必要提取,直接绘图即可)
回答:如下,使用-ECN.N,N表示省的编号,可见于gmt6\share\dcw\dcw-states.txt

1
2
3
4
ps=example_prov.ps
gmt pscoast -ECN.37 -M -Df >sd.txt
gmt psbasemap -JM4.5i -K -Bag `gmt gmtinfo sd.txt -I0.000001`> $ps
gmt psxy -R -J sd.txt -W0.4p,red -O -K>> $ps

如果要加上颜色,只需要添加一行,或者单独这一行命令

1
gmt pscoast -J -R -ECN.37+gblue -Df -O -t50 >>$ps