GMT集成了很多方便使用的工具,比如grdcut, xyz2grd, grdimage等,而且有跨平台版本可使用,不论在win、Mac还是Linux系统都可以愉快的使用之,只是不同平台的脚本编写稍有出入。顺便说明,Linux系统下的gmt使用方法与Mac完全相同。
安装: Mac下面安装gmt巨简单,只需要使用命令brew install gmt
等待完成即可,当然前提是你先得安装了brew
才行。
下面举一个简单的例子(从一个全球的重力网格数据中提取一个小区域,并绘图),说明Mac和Win系统中gmt脚本的异同。
相同点
gmt的命令不变
不同点
Mac系统和win系统的脚本语法不同。win使用bach,Mac使用bash。一般情况下前者是以.bat
为后缀名,而后者是以.sh
为后缀名(当然这个后缀名无所谓的,是什么都可以,不过这种默契最好不要去破坏它)。
- 变量设置不同:win的格式为
set dataname=grav.23
;Mac格式为dataname=grav.23
直接是变量等于xx,而没有前面的set
; - 变量使用不同:win的格式为
set grdinf=%GLOBALDATA%/%dataname%.nc
,使用%%
两个百分号将其括起来;Mac的格式为grdinf=$GLOBALDATA/$dataname.nc
,使用一个美元符号$
,当然了为了兼容性和不会出错的情况下,如果后面还有跟别的字符串,需要配合花括号更靠谱。grdinf=$GLOBALDATA/${dataname}.nc
- 注释不同:Win使用
rem
或者REM
进行注释;而Mac使用#
注释; - 系统内部命令不同:比如删除,Win使用
del
而Mac使用rm
个人建议:将这类常用的数据放在一个固定目录中,并在环境变量中设置一个类似MYDATA的变量,然后使用的时候直接用这个变量代替一长串的路径名,而且以后再也不用去Finder中查看这个数据到底在哪里,省去很多麻烦。
Mac脚本
直接上脚本
dataname=grav.23
grdinf=$GLOBALDATA/$dataname.nc
grdoutf=../download/${dataname}_46W38W.nc
echo $grdoutf
RANGE=-46/-38/9/13
imagewidth=10
psf=${dataname}.ps
grdcut $grdinf -G$grdoutf -R$RANGE
# plot
psbasemap -JM${imagewidth}c -R${RANGE} -Ba2f1 -BWSen -Bx+l"x(km)" -By+l"y(km)" --LABEL_OFFSET=0.1c -P -K>>${psf}
grdgradient $grdoutf -Gtemp.gradient -A45/135 -Ne0.6
grd2cpt $grdoutf -Crainbow -Z >temp.cpt
grdimage $grdoutf -Itemp.gradient -R$RANGE -JM4i -Ctemp.cpt -P >${dataname}.ps
open ${dataname}.ps
rm temp.* *.ps gmt.history
Win脚本
set dataname=grav.23
set grdinf=%GLOBALDATA%/%dataname%.nc
set grdoutf=../download/%dataname%_46W38W.nc
set RANGE=-46/-38/9/13
set imagewidth=10
set psf=%dataname%.ps
grdcut %grdinf% -G%grdoutf% -R%RANGE%
REM plot
psbasemap -JM%imagewidth%c -R%RANGE% -Ba2f1 -BWSen -Bx+l"x(km)" -By+l"y(km)" --LABEL_OFFSET=0.1c -P -K>>%psf%
grdgradient %grdoutf% -Gtemp.gradient -A45/135 -Ne0.6
grd2cpt %grdoutf% -Crainbow -Z >temp.cpt
grdimage %grdoutf% -Itemp.gradient -R%RANGE% -JM4i -Ctemp.cpt -P >%dataname%.ps
del temp.* *.ps gmt.history