GMT6¶
- 软件来源
- 适用平台
Linux、macOS、Windows
- 推荐阅读
- 更新日期
2021-01-27
GMT 是地球科学最广泛使用的制图软件之一,具有强大的绘图功能和数据处理功能。
注解
目前 GMT4 和 GMT5 都已经停止维护,建议直接学习 GMT6。
安装¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | # 安装编译所需软件包
$ sudo apt update
$ sudo apt install build-essential cmake libcurl4-gnutls-dev libnetcdf-dev
# 安装可选软件包
$ sudo apt install ghostscript gdal-bin libgdal-dev libglib2.0-dev libpcre3-dev libfftw3-dev liblapack-dev
# 安装制作动画所需的软件包
$ sudo apt install graphicsmagick ffmpeg
# 下载软件包
$ cd ~/software/GMT-src
$ wget http://mirrors.ustc.edu.cn/gmt/gmt-6.1.1-src.tar.gz
$ wget http://mirrors.ustc.edu.cn/gmt/gshhg-gmt-2.3.7.tar.gz
$ wget http://mirrors.ustc.edu.cn/gmt/dcw-gmt-1.1.4.tar.gz
# 解压三个压缩文件
$ tar -xvf gmt-6.1.1-src.tar.gz
$ tar -xvf gshhg-gmt-2.3.7.tar.gz
$ tar -xvf dcw-gmt-1.1.4.tar.gz
# 将 gshhg 和 dcw 数据复制到 gmt 的 share 目录下
$ mv gshhg-gmt-2.3.7 gmt-6.1.1/share/gshhg-gmt
$ mv dcw-gmt-1.1.4 gmt-6.1.1/share/dcw-gmt
# 切换到 gmt 源码目录下
$ cd gmt-6.1.1
# 用文本编辑器新建并打开 CMake 用户配置文件
$ vim cmake/ConfigUser.cmake
set (CMAKE_INSTALL_PREFIX "/home/zhao/opt/GMT-6.1.1")
set (GMT_USE_THREADS TRUE)
set (GMT_ENABLE_OPENMP TRUE)
# 注意,此处新建的 build 文件夹位于 gmt-6.1.1 目录下,不是 gmt-6.1.1/cmake 目录下
# 编译安装,如果先安装了 anaconda,需要先注释掉环境变量
$ mkdir build
$ cd build/
$ cmake ..
$ make
$ make install
# 添加环境变量
$ vim ~/.bashrc # 取消 anaconda 的注释
# GMT6
export GMT6HOME=/home/zhao/opt/GMT-6.1.1
export PATH=${GMT6HOME}/bin:$PATH
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GMT6HOME}/lib64
# 关闭单行命令完成自动打开图片
export GMT_END_SHOW=off
# 将数据、配置文件放到自定义路径
export GMT_DATADIR=/home/zhao/data/gmtdata/
export GMT_CACHEDIR=/home/zhao/data/gmtdata/cache
export GMT_USERDIR=/home/zhao/data/gmtdata/
$ source ~/.bashrc
# GMT 添加中文字体
$ vim $GMT_DATADIR/PSL_custom_fonts.txt
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
# ghostscript 配置中文
$ sudo apt install poppler-data
$ sudo apt install fonts-arphic-uming fonts-arphic-ukai # 安装 gs 默认 Linux 字体
# 新建 winfonts 文件夹
$ sudo mkdir /usr/share/fonts/winfonts/
# 将 Windows 下的中文字体拷贝过来
$ sudo cp /mnt/c/windows/fonts/{simhei.ttf,simkai.ttf,simsun.ttc,simfang.ttf} /usr/share/fonts/winfonts
# 修改 gs 中文配置文件
$ sudo vim /etc/ghostscript/cidfmap.d/90gs-cjk-resource-gb1.conf
% 原配置文件的内容,与 STSong-Light 等相关的四行必须删除
/BousungEG-Light-GB <</FileType /TrueType /Path (/usr/share/fonts/truetype/arphic/uming.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/GBZenKai-Medium <</FileType /TrueType /Path (/usr/share/fonts/truetype/arphic/ukai.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/Song-Medium /GBZenKai-Medium ;
/Adobe-GB1 /BousungEG-Light-GB ;
/Adobe-GB1-Bold /GBZenKai-Medium ;
% 新增 Windows 字体的支持
/STSong-Light <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simsun.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STFangsong-Light <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simfang.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STHeiti-Regular <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simhei.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STKaiti-Regular <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simkai.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
$ sudo update-gsfontmap
# 中文测试
$ vim gmt6.1.1-cn-test.sh
#!/bin/bash
gmt begin GMT_Chinese png
gmt set FONT_TITLE 25p,41,black
gmt set FONT_LABEL 15p,39,black
gmt text -R0/8/0/4 -JX12c/4c -Bxaf+l"X轴" -Byaf+l"Y轴" -BWSen+t"中文标题" -F+f << 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 end
$ bash gmt6.1.1-cn-test.sh
# 将数据服务器更改为科大镜像
$ gmt set GMT_DATA_SERVER http://china.generic-mapping-tools.org
$ mv gmt.conf $GMT_DATADIR/
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | # 安装 epel-release
$ sudo yum install epel-release
# 启用 GMT 官方仓库
$ sudo yum install yum-plugin-copr
$ sudo yum copr enable genericmappingtools/gmt
# 安装最新版GMT
$ sudo yum install gmt
# 当有新版本发布时可直接更新
$ sudo yum update gmt
# ghostscript 配置中文
$ sudo yum install ghostscript-chinese-zh_CN
# 新建 winfonts 文件夹
$ sudo mkdir /usr/share/fonts/winfonts/
# 将 Windows 下的中文字体拷贝过来
$ sudo cp /mnt/c/windows/fonts/{simhei.ttf,simkai.ttf,simsun.ttc,simfang.ttf} /usr/share/fonts/winfonts
# 修改 gs 中文配置文件
$ sudo vim /usr/share/ghostscript/conf.d/cidfmap.zh_CN
% 原配置文件的内容,与 STSong-Light 等相关的四行必须删除
/BousungEG-Light-GB <</FileType /TrueType /Path (/usr/share/fonts/truetype/arphic/uming.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/GBZenKai-Medium <</FileType /TrueType /Path (/usr/share/fonts/truetype/arphic/ukai.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/Song-Medium /GBZenKai-Medium ;
/Adobe-GB1 /BousungEG-Light-GB ;
/Adobe-GB1-Bold /GBZenKai-Medium ;
% 新增 Windows 字体的支持
/STSong-Light <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simsun.ttc) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STFangsong-Light <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simfang.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STHeiti-Regular <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simhei.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
/STKaiti-Regular <</FileType /TrueType /Path (/usr/share/fonts/winfonts/simkai.ttf) /SubfontId 0 /CSI [(GB1) 4] >> ;
# 添加环境变量
$ vim ~/.bashrc
# 将数据、配置文件放到自定义路径
export GMT_DATADIR=/home/zhao/data/gmtdata/
export GMT_CACHEDIR=/home/zhao/data/gmtdata/cache
export GMT_USERDIR=/home/zhao/data/gmtdata/
$ source ~/.bashrc
# GMT 添加中文字体
$ vim $GMT_DATADIR/PSL_custom_fonts.txt
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
# 中文测试
$ vim gmt6.1.1-cn-test.sh
#!/bin/bash
gmt begin GMT_Chinese png
gmt set FONT_TITLE 25p,41,black
gmt set FONT_LABEL 15p,39,black
gmt text -R0/8/0/4 -JX12c/4c -Bxaf+l"X轴" -Byaf+l"Y轴" -BWSen+t"中文标题" -F+f << 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 end
$ bash gmt6.1.1-cn-test.sh
# 将数据服务器更改为科大镜像
$ gmt set GMT_DATA_SERVER http://china.generic-mapping-tools.org
$ mv gmt.conf $GMT_DATADIR/
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 1. 安装 GMT6
- http://mirrors.ustc.edu.cn/gmt/bin/gmt-6.1.1-win64.exe
安装过程中在 Choose components 页面,除 Ghostscript 组件外所有选项都勾选上。
安装完成后在 C:\Users\用户名\.gmt\PSL_custom_fonts.txt 中加入如下语句:
STSong-Light--GB-EUC-H 0.700 1
STFangsong-Light--GB-EUC-H 0.700 1
STHeiti-Regular--GB-EUC-H 0.700 1
STKaiti-Regular--GB-EUC-H 0.700 1
STSong-Light--GB-EUC-V 0.700 1
STFangsong-Light--GB-EUC-V 0.700 1
STHeiti-Regular--GB-EUC-V 0.700 1
STKaiti-Regular--GB-EUC-V 0.700 1
2. 安装 Ghostscript
- https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs950/gs950w64.exe
安装过程中必须勾选 Generate cidfmap for Windows CJK TrueType fonts 。
安装完成后必须添加环境变量:新建变量 GS_FONTPATH 并设置其值为 C:\Windows\fonts
3. 安装 UnixTools
- https://gmt-china.org/data/UnixTools.zip
直接下载并解压到 GMT 的 bin 目录。
4. 中文测试
脚本文件和输入数据文件都必须采用 GB2312 编码方式。
gmt begin map pdf,png
REM GMT在Windows下处理中文存在一些已知BUG
REM 需要设置 PS_CHAR_ENCODING 为 Standard+ 以绕过这一BUG
gmt set PS_CHAR_ENCODING Standard+
gmt set FONT_TITLE 25p,41,black
gmt set FONT_LABEL 15p,39,black
echo 2 3.5 25p,39,black 中文宋体 > tmp
echo 2 2.5 25p,40,blue 中文仿宋 >> tmp
echo 2 1.5 25p,41,red 中文黑体 >> tmp
echo 2 0.5 25p,42,green 中文楷体 >> tmp
echo 4 3.5 25p,43,black 中文宋体 >> tmp
echo 5 3.5 25p,44,blue 中文仿宋 >> tmp
echo 6 3.5 25p,45,red 中文黑体 >> tmp
echo 7 3.5 25p,46,green 中文楷体 >> tmp
gmt text tmp -R0/8/0/4 -JX12c/4c -Bxaf+l"X轴" -Byaf+l"Y轴" -BWSen+t"中文标题" -F+f
del tmp
gmt end
|