气象学家公众号 发表于 2024-3-23 23:42:06

GMT5(The General Mapping Tools)初探の安装、配置、运行

前言介绍
由于日常接触的地图和地形文件比较多,而日常使用的NCL、Python、R就绘制地形图或者行政区域地图,就功能上还是没那么专一,而作为气象背景的人,个人技术又比较菜鸡。源于之前处理GeoTIFF的一点启发,觉得把地图绘制得科学性很强,同时又极具视觉感,是大有裨益的。而暂时手头没有Windows的电脑,无法使用arcGIS,那就自然想到了更多跨平台、开源的软件,GMT是不二之选!

图库Gallery
啥也别说,先上图!(图床,七牛云免费服务器空间,由于需要备案,否则链接失效,macOS上开源客户端:Qbox)



















(上图主要源自:中文社区: https://gmt-china.org/)

GMT安装,以macOS为例
安装 Homebrew:
$ /usr/bin/ruby -e "$(curl -fsSL <a href="https://raw.githubusercontent.com/Homebrew/install/master/install" target="_blank">https://raw.githubusercontent.com/Homebrew/install/master/install</a>)"安装 GMT:
$ brew update && brew upgrade
$ brew install gmt安装 ghostscript:
$ brew install ghostscript测试安装是否成功:
$ gmt --version
5.4.5如果是使用的dmg安装包安装的话,
1.下载:gmt-5.4.5-darwin-x86_64.dmg
2.双击 dmg 包以解压,将解压得到的 GMT-5.4.5.app 拖动到 Applications 目录即可。GMT 默认会安装到 /Applications/GMT-5.4.5.app/ 目录下。
3.将如下语句:
export PATH=${PATH}:/Applications/GMT-5.4.5.app/Contents/Resources/bin加入到 ~/.bashrc 中即可。
4.测试安装是否成功:
$ gmt --version 5.4.5

GMT环境变量配置、中文支持、运行
环境变量配置
以macOS为例,如果之前用是zsh的终端环境,在此最好,切换为bash环境,至少是环境变量文件:~/.bashrc或~/.bash_profile要修改过来,并添加。(homebrew安装最为推荐!!!)
1# GMT
2export GMT5HOME=/usr/local/Cellar/gmt/5.4.5_3/
3export PATH=${GMT5HOME}/bin:$PATH
4export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GMT5HOME}/lib
5export GMT_DATADIR=/Users/zhpfu/Downloads/GMT/GMTDB
中文支持
ghostscript的中文支持
1.下载脚本 cjk-gs-integrate.pl 3. cjk-gs-integrate.pl 脚本的执行依赖于命令 kpsewhich,该命令由 TeXLive 提供。
2.执行 kpsewhich --version 检查 kpsewhich 这个命令是否存在。若不存在,则需要单独安装。使用homebrew安装安装:
brew cask install basictex3.执行脚本:
$ sudo perl cjk-gs-integrate.pl该脚本会自动搜索系统中自带的中文字体,并生成gs支持中文所需的配置文件。
如果操作无效,说明basictex的环境变量没有起作用,需要手动添加到~/.bashrc中:
$ touch ~/.gmt/PSL_custom_fonts.txt
$ open ~/.gmt/PSL_custom_fonts.txt5.打开 GMT 字体配置文件,在文件中加入如下语句:
1STSong-Light-UniGB-UTF8-H0.700    1
2STFangsong-Light-UniGB-UTF8-H0.700    1
3STHeiti-Regular-UniGB-UTF8-H   0.700   1
4STKaiti-Regular-UniGB-UTF8-H   0.700   1
5STSong-Light-UniGB-UTF8-V0.700    1
6STFangsong-Light-UniGB-UTF8-V0.700    1
7STHeiti-Regular-UniGB-UTF8-V   0.700   1
8STKaiti-Regular-UniGB-UTF8-V   0.700   1这几句话分别添加了宋体、仿宋、黑体和楷体四种字体的横排和竖排两种方式。
6.用gmt pstext -L命令查看 GMT 当前的字体配置:
$ gmt pstext -L1Font #Font Name
2   ------------------------------------
3   0   Helvetica
4   1   Helvetica-Bold
5   ...    ......
6   39 STSong-Light-UniGB-UTF8-H
7   40 STFangsong-Light-UniGB-UTF8-H
8   41 STHeiti-Regular-UniGB-UTF8-H
9   42 STKaiti-Regular-UniGB-UTF8-H
10   43 STSong-Light-UniGB-UTF8-V
11   44 STFangsong-Light-UniGB-UTF8-V
12   45 STHeiti-Regular-UniGB-UTF8-V
13   46 STKaiti-Regular-UniGB-UTF8-V其中 39-46 号字体为新添加的中文字体。以后要用中文字体时,需要用这些编号来指定字体,也许你的机器上的编号和这里不同。请自行确认你的中文字体编号。如果编号不是39到46,请自行修改以下测试脚本。
1#!/bin/bash
2gmt set FONT_TITLE 25p,41,black
3gmt set FONT_LABEL 15p,39,black
4
5gmt pstext -R0/8/0/4 -JX12c/4c -Bxaf+l"X轴" -Byaf+l"Y轴" \
6    -BWSen+t"中文标题" -F+f -P > GMT_Chinese.ps << EOF
72 3.5 25p,39,black 宋体横排
82 2.5 25p,40,blue仿宋横排
92 1.5 25p,41,red   黑体横排
102 0.5 25p,42,green 楷体横排
114 3.5 25p,43,black 宋体竖排
125 3.5 25p,44,blue仿宋竖排
136 3.5 25p,45,red   黑体竖排
147 3.5 25p,46,green 楷体竖排
15EOF
16gmt psconvert -A -P -Tf GMT_Chinese.ps
17gmt psconvert -A -P -Tg GMT_Chinese.ps
18
19rm gmt.*注意:
生成的 PNG、JPG格式的图片中可直接显示中文,而生成的 PDF 文件用 macOS 自带的 PDF 预览工具打开无法显示中文,使用 Adobe Reader 打开则可以正常显示中文。

GMT绘图示例
示例1
1#!/bin/bash
2R=65/18/117/45+r
3J=B90/0/40/30/6.5i
4PS=GMT_tutor3.ps
5D=earth_relief_03m.grd
6
7gmt gmtset FONT_ANNOT_PRIMARY 10p
8
9# 裁剪区域地形数据
10gmt grdcut $D -R55/120/10/50 -GTibet.grd
11
12# 计算区域地形梯度
13gmt grdgradient Tibet.grd -A0 -Nt -Gint.grad
14
15# 利用psbasemap确定格网标注等参数
16gmt psbasemap -R$R -J$J -B10g10 -BwSEN -K > $PS
17
18# 绘制地形
19gmt grdimage -R$R -J$J -Bg10 Tibet.grd -Iint.grad -CTibet.cpt -K -O >> $PS
20
21# 利用pscoast绘制水系、比例尺
22gmt 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
23
24# 绘制两个色标
25gmt psscale -Dx-0.3i/1.4i+w2.5i/0.15i+ma -CTibet.cpt -G1600/9000 -By+lm -Bxa1000f200 -K -O >> $PS
26gmt psscale -Dx-0.3i/0+w1.3i/0.15i+ma -CTibet.cpt -G-3500/0 -L -O >> $PS
27
28gmt psconvert -A -P -Tg $PS
29
30rm gmt.* Tibet.grd int.gradchmod 777 GMT_tutor3.sh./GMT_tutor3.sh出图:


示例2
1#!/bin/bash
2R=70/138/13/56
3J=M105/35/6.5i
4PS=CN-capitals.ps
5
6gmt set MAP_GRID_PEN_PRIMARY 0.25p,gray,2_2:1
7gmt set FORMAT_GEO_MAP ddd:mm:ssF MAP_FRAME_WIDTH 3p
8gmt set FONT_ANNOT_PRIMARY 7p
9# 设置比例尺标签为35号中文字体
10gmt set FONT_LABEL 8p,35 MAP_LABEL_OFFSET 4p
11
12# 绘制中国地图
13gmt pscoast -J$J -R$R -G244/243/239 -S167/194/223 -B10f5g10-Lg85/17.5+c17.5+w800k+f+u+l'比例尺' -K > $PS
14gmt psxy CN-border-La.dat -J$J -R$R -W0.4p,gray50 -K -O >> $PS
15
16# 绘制省会位置
17## 此处使用两次 psxy 命令以实现图中所示的空心圆叠加实心圆的效果
18gmt psxy CN-capitals.dat -J$J -R$R -Sc0.08c -Gblack -K -O >> $PS
19gmt psxy CN-capitals.dat -J$J -R$R -Sc0.15c -W0.2p,black -K -O >> $PS
20# 绘制省会名称
21gmt pstext CN-capitals.dat -J$J -R$R -F+f7p,35+j -Dj0.15c/0.15c -K -O >> $PS
22# 标记北京所在位置
23echo 116.46 39.92 | gmt psxy -J$J -R$R -Gred -Sa0.4c -K -O >> $PS
24
25# 绘制南海区域
26R=105/123/3/24
27J=M1.1i
28gmt psbasemap -J$J -R$R -B0 -X5.4i --MAP_FRAME_TYPE=plain --MAP_FRAME_PEN=1p -K -O >> $PS
29gmt pscoast -J$J -R$R -N1/0.1p -W1/0.25p -G244/243/239 -S167/194/223 -K -O >> $PS
30gmt psxy CN-border-La.dat -J$J -R$R -W0.25p -O -K >> $PS
31echo "南海诸岛" | gmt pstext -J$J -R$R -F+f10p,35+cBC -D0c/0.1c -N -Gwhite -O >> $PS
32
33gmt psconvert -A -P -Tg $PS
34rm gmt.conf gmt.history $PS执行:
chmod +x CN-capitals.sh./CN-capitals.sh出图:


参考网站
GMT相关资源汇总.
表示感谢!
1.官方网站 夏威夷大学: http://gmt.soest.hawaii.edu/projects/gmt
2.官方手册: http://gmt-tutorials.org/en/index.html
3.中文社区: https://gmt-china.org/
4.中文手册: https://docs.gmt-china.org/5.4.5/
5.台湾手册: http://gmt-tutorials.org/index.html
6.推荐博客 赵志远博客: https://zhaozhiyuan.org/
7.推荐博客:GMT5 教程 | 編者 Po-Chin Tseng: https://jimmytseng79.github.io/GMT5_tutorials/
8.推荐博客 SeiMan USTC地球物理学博士: https://blog.seisman.info/gmt-insert-map/
9.推荐博客 Beauty is life: https://zhongpenggeo.github.io/sites/archives.html
10.推荐博客 Gina Schmalzle: http://geodesygina.com/tag/etopo1.html
11.推荐博客:科学网-杨峰峰: http://wap.sciencenet.cn/blog-2637373-974284.html
12.colorbar一览(cpt-city): http://soliton.vm.bytemark.co.uk/pub/cpt-city/
13.Hue取色器: http://colorizer.org/



文章来源于微信公众号:气象学家
页: [1]
查看完整版本: GMT5(The General Mapping Tools)初探の安装、配置、运行