前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GMT5(The General Mapping Tools)初探の安装、配置、运行

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

作者头像
气象学家
发布2020-02-17 17:28:00
2.9K0
发布2020-02-17 17:28:00
举报
文章被收录于专栏:气象学家

欢迎订阅微信公众号:『气象学家』

阅读建议

仅仅就macOS安装GMT5为例来展开,Linux平台和GMT6暂时不介绍。 后续会增加更多气象领域的更多应用实例。安装依据内容目录来按图索骥,根据具体错误来调试。

内容目录

前言介绍图库GalleryGMT安装,以macOS为例GMT环境变量配置、中文支持、运行GMT绘图示例示例1示例2参考网站

前言介绍

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

图库Gallery

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

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

GMT安装,以macOS为例

安装 Homebrew:

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装 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安装最为推荐!!!)

代码语言:javascript
复制
# GMT
export GMT5HOME=/usr/local/Cellar/gmt/5.4.5_3/
export PATH=${GMT5HOME}/bin:$PATH
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GMT5HOME}/lib
export 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 basictex

  1. 执行脚本:

$ sudo perl cjk-gs-integrate.pl 该脚本会自动搜索系统中自带的中文字体,并生成gs支持中文所需的配置文件。 如果操作无效,说明basictex的环境变量没有起作用,需要手动添加到~/.bashrc中: export PATH=/usr/local/texlive/2018basic/bin/x86_64-darwin:$PATH

  1. GMT的中文支持 在 ~/.gmt(若无该文件夹,请自行新建)下创建字体配置文件:

$ touch ~/.gmt/PSL_custom_fonts.txt $ open ~/.gmt/PSL_custom_fonts.txt

  1. 打开 GMT 字体配置文件,在文件中加入如下语句:
代码语言:javascript
复制
STSong-Light-UniGB-UTF8-H  0.700    1
STFangsong-Light-UniGB-UTF8-H  0.700    1
STHeiti-Regular-UniGB-UTF8-H   0.700   1
STKaiti-Regular-UniGB-UTF8-H   0.700   1
STSong-Light-UniGB-UTF8-V  0.700    1
STFangsong-Light-UniGB-UTF8-V  0.700    1
STHeiti-Regular-UniGB-UTF8-V   0.700   1
STKaiti-Regular-UniGB-UTF8-V   0.700   1

这几句话分别添加了宋体、仿宋、黑体和楷体四种字体的横排和竖排两种方式。

  1. gmt pstext -L命令查看 GMT 当前的字体配置:

$ gmt pstext -L

代码语言:javascript
复制
Font #  Font Name
------------------------------------
0   Helvetica
1   Helvetica-Bold
...    ......
39 STSong-Light-UniGB-UTF8-H
40 STFangsong-Light-UniGB-UTF8-H
41 STHeiti-Regular-UniGB-UTF8-H
42 STKaiti-Regular-UniGB-UTF8-H
43 STSong-Light-UniGB-UTF8-V
44 STFangsong-Light-UniGB-UTF8-V
45 STHeiti-Regular-UniGB-UTF8-V
46 STKaiti-Regular-UniGB-UTF8-V

其中 39-46 号字体为新添加的中文字体。以后要用中文字体时,需要用这些编号来指定字体,也许你的机器上的编号和这里不同。请自行确认你的中文字体编号。如果编号不是39到46,请自行修改以下测试脚本。

代码语言:javascript
复制
#!/bin/bash
gmt set FONT_TITLE 25p,41,black
gmt set FONT_LABEL 15p,39,black

gmt pstext -R0/8/0/4 -JX12c/4c -Bxaf+l"X轴" -Byaf+l"Y轴" \
    -BWSen+t"中文标题" -F+f -P > GMT_Chinese.ps << EOF
2 3.5 25p,39,black 宋体横排
2 2.5 25p,40,blue  仿宋横排
2 1.5 25p,41,red   黑体横排
2 0.5 25p,42,green 楷体横排
4 3.5 25p,43,black 宋体竖排
5 3.5 25p,44,blue  仿宋竖排
6 3.5 25p,45,red   黑体竖排
7 3.5 25p,46,green 楷体竖排
EOF
gmt psconvert -A -P -Tf GMT_Chinese.ps
gmt psconvert -A -P -Tg GMT_Chinese.ps

rm gmt.*

注意:

生成的 PNG、JPG格式的图片中可直接显示中文,而生成的 PDF 文件用 macOS 自带的 PDF 预览工具打开无法显示中文,使用 Adobe Reader 打开则可以正常显示中文。

GMT绘图示例

示例1

代码语言:javascript
复制
#!/bin/bash
R=65/18/117/45+r
J=B90/0/40/30/6.5i
PS=GMT_tutor3.ps
D=earth_relief_03m.grd

gmt gmtset FONT_ANNOT_PRIMARY 10p

# 裁剪区域地形数据
gmt grdcut $D -R55/120/10/50 -GTibet.grd

# 计算区域地形梯度
gmt grdgradient Tibet.grd -A0 -Nt -Gint.grad

# 利用psbasemap确定格网标注等参数
gmt psbasemap -R$R -J$J -B10g10 -BwSEN -K > $PS

# 绘制地形
gmt grdimage -R$R -J$J -Bg10 Tibet.grd -Iint.grad -CTibet.cpt -K -O >> $PS

# 利用pscoast绘制水系、比例尺
gmt 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

# 绘制两个色标
gmt psscale -Dx-0.3i/1.4i+w2.5i/0.15i+ma -CTibet.cpt -G1600/9000 -By+lm -Bxa1000f200 -K -O >> $PS
gmt psscale -Dx-0.3i/0+w1.3i/0.15i+ma -CTibet.cpt -G-3500/0 -L -O >> $PS

gmt psconvert -A -P -Tg $PS

rm gmt.* Tibet.grd int.grad

chmod 777 GMT_tutor3.sh ./GMT_tutor3.sh

出图:

示例2

代码语言:javascript
复制
#!/bin/bash
R=70/138/13/56
J=M105/35/6.5i
PS=CN-capitals.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
# 设置比例尺标签为35号中文字体
gmt set FONT_LABEL 8p,35 MAP_LABEL_OFFSET 4p

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

# 绘制省会位置
## 此处使用两次 psxy 命令以实现图中所示的空心圆叠加实心圆的效果
gmt psxy CN-capitals.dat -J$J -R$R -Sc0.08c -Gblack -K -O >> $PS
gmt psxy CN-capitals.dat -J$J -R$R -Sc0.15c -W0.2p,black -K -O >> $PS
# 绘制省会名称
gmt pstext CN-capitals.dat -J$J -R$R -F+f7p,35+j -Dj0.15c/0.15c -K -O >> $PS
# 标记北京所在位置
echo 116.46 39.92 | gmt psxy -J$J -R$R -Gred -Sa0.4c -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
echo "南海诸岛" | gmt pstext -J$J -R$R -F+f10p,35+cBC -D0c/0.1c -N -Gwhite -O >> $PS

gmt psconvert -A -P -Tg $PS
rm 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/

有任何问题都欢迎交流探讨,共同学习进步!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 气象学家 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容目录
  • 前言介绍
  • 图库Gallery
  • GMT安装,以macOS为例
  • GMT环境变量配置、中文支持、运行
  • GMT绘图示例
    • 示例1
      • 示例2
      • 参考网站
      相关产品与服务
      ICP备案
      在中华人民共和国境内从事互联网信息服务的网站或APP主办者,应当依法履行备案手续。腾讯云为您提供高效便捷的 ICP 备案服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档