上面两幅图是使用GMT绘制的,GMT本身不自带中国的省界文件,但有高分辨率的海岸线数据以及国界数据,水系湖泊数据,当然这些数据在安装程序的是选择性的,只有你安装了这些数据源,才可以使用。但是除了美国的州界外,其他国家的省市级别的边界是没有的,在网络上也没有直接可以供GMT使用的省界数据,因此在上面才用matlab提取中国的省界数据。
图中除了用到边界数据外,还有我自己的后向散射系数数据。这在网上更是找不到的,因此你可以结合自己的数据进行绘图。数据的结构都是差不多的,一般三列,经纬度,然后是属性值一列。当然其他多列的数据也可以绘制,具体就要看GMT的手册了。
在第一幅图中添加省界之后是很直观和形象的,分析图也是很有作用,什么地方哪一个省份的分布大概是如何的,都一目了然。
第一幅代码:
blockmean year-aver1993.xyz year-aver1994.xyz year-aver1995.xyz year-aver1996.xyz year-aver1997.xyz year-aver1998.xyz year-aver1999.xyz year-aver2000.xyz year-aver2001.xyz year-aver2002.xyz year-aver2003.xyz year-aver2004.xyz -I5m -R73/135/17/54 > China.txt
surface China.txt -I5m -R -V -Gyear-aver.nc -T0.35
makecpt -Crainbow -T0/30/5 -Z >s.cpt
grdgradient year-aver.nc -Nt1 -A90 -G439_i.nc
grdimage year-aver.nc -I439_i.nc -Cs.cpt -JM5i -P -K -E300 > china.ps
psscale -D5.3i/1.9i/3.8i/0.2i -Cs.cpt -L -B/:db: -O -K -P >> china.ps
pscoast -R73/135/17/54 -BNeWSf5a5g5/f10a5g5:."Spatial distribution of sigma0 in C": -S255/255/255 -JM5i -W1/0.8 -W2/0.4 -W3/0.4 -W4/0.4 -A100l -Di -V -I1/0.8p/255/255/255 -I2/0.4p/255/255/255 -I3/0.2p/255/255/255 -O -K -P>> china.ps
psxy prov.dat -JM5i -R -m -B -O -K -P -W0.5p/red >> china.ps
echo 4.25 0.5 10 0.0 LT 1 (b) > t.tmp
pstext t.tmp -N -R0/4/0/3.75 -Jx1i -O -K -P >> china.ps
REM del *.cpt
del *.tmp
psxy程序后的prov.dat 就是提取之后的中国省界数据。因此在绘图的时候,取消了pscoast中的国界命令-N。如果既有国界线还有省界线,二者不是一个国家发布的数据,一般是有区别的,比如阿克赛钦地区,麦克马洪线等。因此我们只采用自己国家提供的省界数据,而不画蛇添足的使用美国提供的国界线数据。
GMT只用这么几行命令即可以画出色彩丰富的图像,的确是很强大,再加上matlab提取的省界数据,画出的专题地图质量较高。如果只用matlab画,估计够呛吧,我没有去试一试,希望你试一试,比较一下。
我们分析了中国地区的后向散射系数之后,想单独拿出新疆来做研究,因为我们看到新疆地区有一道显著的分布,就是塔里木河绿洲带。为了单独研究新疆地区,我们最好提取出新疆的空间分布,屏蔽掉周围陆地,使之显示为白色,或者其他是DEM也可。
第二幅图就是新疆的单独分布。仅仅使用GMT即可,GMT内置了数据提取和裁剪功能。下面即是代码:
blockmean year-aver1993.xyz year-aver1994.xyz year-aver1995.xyz year-aver1996.xyz year-aver1997.xyz year-aver1998.xyz year-aver1999.xyz year-aver2000.xyz year-aver2001.xyz year-aver2002.xyz year-aver2003.xyz year-aver2004.xyz -I5m -R73/97/33/50 > XJ.txt
surface XJ.txt -I5m -R -V -GXJ-aver.nc -T0.35
makecpt -Crainbow -T0/30/5 -Z >s.cpt
grdgradient XJ-aver.nc -Nt1 -A90 -G439_i.nc
rem psclip裁剪,其后面的程序只在裁剪区域内绘图,知道遇见取消裁剪的命令为止!
psclip XJprov.xyz -R73/97/33/50 -JM5i -K > XJ.ps
grdimage XJ-aver.nc -I439_i.nc -Cs.cpt -JM5i -P -K -O -E300 >> XJ.ps
pscoast -R73/97/33/50 -S255/255/255 -JM -W1/0.8 -W2/0.4 -W3/0.4 -W4/0.4 -A100l -Di -V -I1/0.8p/white -I2/0.5p/255/255/255 -I3/0.3p/255/255/255 -O -K -P>> XJ.ps
psclip -C -O -K -P >> XJ.ps
rem 裁剪区被取消!!下面的程序就可以在这个绘图区域绘图了
REM 使用gmtselect提取新疆的边界坐标!!
REM gmtselect prov.dat -R73/97/33/50 > XJprov.xyz
rem psxy prov.dat -JM -R -W1.0p/red -m/nan -B -O -K -P >> XJ.ps
REM 使用提取的新疆边界坐标,只显示新疆的边界。如果想显示其他省的坐标使用上面加了注释的psxy命令!!,下面的XJprov.dat删去了四边形区域内的而其他省份的边界坐标,只保留有新疆的边界,前面使用psclip也是使用的改数据。该数据需要单独的使用其他文本编辑程序编辑,删去多余数据。省界线之间有NAN分割,因此便于查找无用的数据。
psxy XJprov.xyz -JM -R -W1.0p/red -m/nan -B -O -K -P >> XJ.ps
psbasemap -BNeWSf5a5g5/f5a5g5:."Spatial distribution of sigma0 in C": -R73/97/33/50 -JM5i -O -P -K >>XJ.ps
psscale -D5.3i/1.9i/3.8i/0.2i -Cs.cpt -L -B/:db: -O -K -P >> XJ.ps
echo 4.25 0.5 10 0.0 LT 1 (b) > t.tmp
pstext t.tmp -N -R0/4/0/3.75 -Jx1i -O -K -P >> XJ.ps
REM del *.cpt
del 439-b.txt
del 439_i.nc
del *.tmp
注释稍微复杂一些,因为里面涉及的数据较多。首先是绘图区域是一个四边形区域,坐标的范围在-R之后给出。
(1) 如果不删去新疆意外的边界线,则新疆外的边界线数据也绘制在地图上,而其后向散射系数分布也不能被屏蔽掉。如下图(3)。因此我们要先处理边界数据,提取一个完整的新疆边界坐标。当然了,这还要使用gmtselect prov.dat -R73/97/33/50 > XJprov.xyz 来提取一定区域内的数据。
(2) 处理边界数据,删去西藏甘肃的边界线。因为数据量较大,记事本和excel不方便。使用微软的Microsoft development environment 打开,找到NAN,检查NAN之后的坐标是不是新疆的坐标,不是则删去。由于已经缩小了范围,因此这次修改数据不是很复杂。找到它,删去,保存即可。
(3) 如图(4),已经只有了新疆的边界线。下一步就是用边界组成一个闭合多边形,然后值保留多边形之内的地图,多边形之外不管了。
(4) 使用psclip命令。psclip XJprov.xyz -R73/97/33/50 -JM5i -K > XJ.ps
绘制好了之后要绘制底图还有图例等等(也可以提前于psclip,则不用下一步),要取消封闭区域。使用psclip -C -O -K -P >> XJ.ps