GMT 入门
GMT 实例
GMT 进阶
- 基础知识
- 表数据
- 网格文件
- 颜色表 CPT
- 标准选项
- 地图投影
- -JX: Linear, logarithmic, power, and time
- -JP: Polar/Cylindrical
- -JA: Lambert azimuthal equal area
- -JB: Albers conic equal area
- -JC: Cassini cylindrical
- -JCyl_stere: Cylindrical stereographic
- -JD: Equidistant conic
- -JE: Azimuthal equidistant
- -JF: Azimuthal gnomonic
- -JG: Azimuthal orthographic/General perspective
- -JH: Hammer equal area
- -JI: Sinusoidal equal area
- -JJ: Miller cylindrical
- -JK: Eckert equal area
- -JL: Lambert conic conformal
- -JM: Mercator cylindrical
- -JN: Robinson
- -JO: Oblique Mercator
- -JPoly: (American) polyconic
- -JQ: Equidistant cylindrical
- -JR: Winkel Tripel
- -JS: General stereographic
- -JT: Transverse Mercator
- -JU: Universal Transverse Mercator (UTM)
- -JV: Van der Grinten
- -JW: Mollweide
- -JY: Cylindrical equal area
- 配置参数
- 地学数据集
- 中国地理空间数据集
- 中文支持
- API
- 模块手册
- basemap
- begin
- clear
- clip
- coast
- colorbar
- contour
- coupe
- end
- figure
- filter1d
- fitcircle
- gmt
- gmt-config
- gmtbinstats
- gmtconnect
- gmtdefaults
- gmtget
- gmtinfo
- gmtlogo
- gmtmath
- gmtselect
- gmtset
- gmtsimplify
- gmtspatial
- gmtsplit
- gmtvector
- gmtwhich
- grd2cpt
- grd2xyz
- grdblend
- grdclip
- grdcontour
- grdconvert
- grdcut
- grdedit
- grdfill
- grdimage
- grdinfo
- grdlandmask
- grdmask
- grdmath
- grdpaste
- grdproject
- grdsample
- grdtrack
- grdtrend
- grdvector
- grdview
- grdvolume
- gshhg
- histogram
- image
- img2google
- img2grd
- kml2gmt
- makecpt
- mapproject
- mask
- meca
- nearneighbor
- plot
- polar
- project
- psconvert
- rose
- sac
- sample1d
- solar
- spectrum1d
- sph2grd
- sphdistance
- sphinterpolate
- sphtriangulate
- surface
- ternary
- text
- triangiulate
- velo
- wiggle
- x2sys_binlist
- x2sys_cross
- x2sys_datalist
- x2sys_get
- x2sys_init
- x2sys_list
- x2sys_merge
- x2sys_put
- x2sys_report
- x2sys_solve
- xyz2grd
- mgd77manage
- mgd77convert
- mgd77header
- mgd77info
- mgd77list
- mgd77magref
- mgd77path
- mgd77sniffer
- mgd77track
- legend
- docs
- subplot
- inset
附录
其他
Windows 下的 GMT 中文支持
ghostscript 的中文支持
如果没有正确配置 Ghostscript 的中文支持,GMT 生成的 PNG、PDF 等格式的图片中的中文将会出现乱码。因此 Ghostscript 的中文支持对于希望使用中文的用户来说是必须进行配置的。
警告
GMT安装包中内置的 Ghostscript 不支持中文。若想要GMT支持中文,注意在安装GMT时不勾选Ghostscript组件,待GMT安装完成后再自行安装 Ghostscript。
新手常常没有意识到自己安装GMT时勾选了Ghostscript组件,导致中文乱码出现。如果严格按照下列步骤配置,依然遇到了中文乱码问题,建议卸载GMT,并按照《 Windows 下安装 GMT 》章节的步骤与要求重新安装GMT与Ghostscript。
安装包下载地址:
警告
请注意 Ghostscript 的版本!由于 Ghostscript 自身的 bug,请勿使用 9.27、9.51 和 9.52 版本的 Ghostscript。
备注
安装 Ghostscript 的过程中记得勾选 Generate cidfmap for Windows CJK TrueType fonts
以生成中文字体配置文件。
在安装 ghostscript 的过程中,会有一个生成 cidmap 的选项,选中该选项则表示会为当前系统自动生成中文所需的 cidmap 文件。默认该选项是被选中的,一定 不要 将该选项取消。
为了能够在将PS文件转换为其他图片格式时也支持中文,需要设置环境变量 GS_FONTPATH
。具体步骤如下:
点击“计算机”->“属性”->“高级系统设置”->“环境变量”打开“环境变量”编辑工具
在“系统变量”部分中,新建变量
GS_FONTPATH
并设置其值为C:\Windows\fonts
GMT 的中文支持
新建GMT自定义字体配置文件 C:\Users\用户名\.gmt\PSL_custom_fonts.txt
(注意 用户名
应该替换为实际的用户名。若不存在 C:\Users\用户名\.gmt
目录则需新建该目录。Windows的文件管理器无法新建以 . 开头的文件夹,因而需要打开CMD,然后执行命令 mkdir .gmt
以创建该文件夹)。
备注
Windows默认隐藏文件的扩展名。新手在新建这个字体配置文件时,常常将文件名错误写成 PSL_custom_fonts.txt.txt
,导致中文字体添加失败。因此强烈建议在资源管理器 -> 查看中开启显示文件扩展名:
向 GMT自定义字体配置文件 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
用 gmt text -L
查看 GMT 字体:
$ gmt text -L Font # Font Name ------------------------------------ 0 Helvetica 1 Helvetica-Bold ... ...... 39 STSong-Light--GB-EUC-H 40 STFangsong-Light--GB-EUC-H 41 STHeiti-Regular--GB-EUC-H 42 STKaiti-Regular--GB-EUC-H 43 STSong-Light--GB-EUC-V 44 STFangsong-Light--GB-EUC-V 45 STHeiti-Regular--GB-EUC-V 46 STKaiti-Regular--GB-EUC-V
可以看到,新添加的四种中文字体对应的字体编号为 39 到 46。其中 STSong-Light-GB-EUC-H
即为宋体,GB-EUC
是文字编码方式, H
表示文字水平排列,V
表示竖排文字。强烈建议在执行测试脚本前确认自己的中文字体编号。
GMT 中文测试
备注
请自行确认你的中文字体编号。如果编号不是39到46,请自行修改以下测试脚本。
警告
目前发现 Git Bash 运行Bash脚本时, echo
生成文件使用的是 UTF8 编码,从而可能会导致中文乱码。建议在有中文需求时使用bat脚本,或者避免在Bash脚本中使用 echo
。
使用记事本和 Notepad++ 的用户,应注意含中文的bat文件和输入数据文件都应以 ANSI 编码保存,使用其他编码方式则极可能出现乱码。Notepad++除了注意要选择 “ 编码 -> 使用ANSI编码 ” 以外,还应该选中“ 设置 -> 首选项 -> 新建 -> 编码 -> ANSI ”。
Visual Studio Code 用户,应注意确保含中文的bat文件和输入数据文件都采用 GB2312 编码方式。在Visual Studio Code右下角状态栏中可以查看并修改当前文件的编码方式。
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 REM GMT 6.3 中连续使用echo命令输出含中文的文件时,必须在开始设置 chcp 936 chcp 936 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 REM GMT 6.3 中每句使用中文的命令之前必须设置 chcp 936 chcp 936 gmt text tmp -R0/8/0/4 -JX12c/4c -Bxaf+l"X轴" -Byaf+l"Y轴" -BWSen+t"中文标题" -F+f del tmp gmt end
备注
GMT 6.x 目前在Windows下处理中文时存在BUG,可能会出现某些中文正常显示,某些不正常显示的情况。使用:
gmt set PS_CHAR_ENCODING Standard+
可临时避免这一BUG。
此外,GMT 6.3 中每句使用中文的命令之前,以及使用echo命令输出含中文的文件之前,必须设置 chcp 936
,否则将出现乱码:
chcp 936
成图效果如下:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论