Mac OS GMT安装与使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wokaowokaowokao12345/article/details/79969426

引言

GMT(Generic Mapping Tools)是一个被地学界广泛使用的绘图工具,可以完成海岸线、国界、河流等的绘制。GMT免费开源,且可以运行于Windows、Linux、Mac OS X三大主流操作系统。GMT软件是命令行模式的,用户需要输入各种参数,如经纬度、颜色配置等,生成ps或eps格式的地图文件。
具有多种开发语言API,如:GMT/FORTRAN API, GMT/Julia API, GMT/MATLAB API, GMT/Python API,使用上更加灵活。

Mac OS GMT安装

官网安装教程:http://gmt.soest.hawaii.edu/projects/gmt/wiki/Installing
Mac系统可以使用独立安装包进行安装,也可以使用Macports或者fink或者homebrew进行安装。
这里使用Macports进行安装GMT,如果你的系统中没有macports,就从官网下载macports一路安装就好。
macports安装结束后,打开终端,执行下面两段代码:

sudo port install gdal +curl +geos +hdf5 +netcdf
sudo port install gmt5

这两行命令分别执行,分别需要10分钟左右就可以完成gmt的安装。
gmt的安装过程可以说简单点不得了,因此这篇博文侧重gmt的使用去讲解。

GMT的几个简单例子

GMT官网教程:http://gmt.soest.hawaii.edu/projects/gmt/wiki/Documentation
GMT的使用,个人觉得入门还是挺复杂的,因为要通过各种命令进行做图。作为新手,还是低调做人的好,这里的例子也是源于官网。

Mac下建立.sh脚本文件

在写GMT命令时候,往往需要众多命令组合才能做出美观的插图,这时候在终端写命令可能不利于代码的调试,这里就讲一下如何建立脚本文件并运行。
首先我们需要建立一个脚本文件,可以用文本编辑器或者其它工具建立,注意保存为.sh格式。如,建立一个名为test1的.sh文件:test1.sh。在文件中我们可以写一段最简单的命令:echo Hello World!
赋予脚本可执行的权限

  • 进入Mac终端(快捷键:command+Space,输入Terminal 回车);
  • 进入test1.sh文件所在的目录:命令:cd /Users/desktop (后面是上面所建立的test1.sh文件所在的目录);
  • 赋予脚本可执行权限,输入命令:chmod +x test1.sh 回车

运行脚本

经过上述步骤,test1.sh已经成为一个可执行脚本,输入命令:./test1.sh 回车,终端输出“Hello World!”

以后建立脚本可以直接对这个脚本进行复制修改其中的命令就可以了。

例子1

步骤:
- 打开终端(command+space)
- cd/ filePath
- 将写好的脚本拖入终端

脚本中代码:

gmt pscoast -R-90/-70/0/20 -JM6i -P -Ba -Gchocolate > GMT_tut_3.ps
gmt ps2raster GMT_tut_3.ps -Tf

效果


这里写图片描述

命令解释
blockmean
对网格间隔框内的值取平均值。
数据预处理,从标准输入读离散的ASCII 数据文件,并将每个非空块的平均位置和值写入标准输出到由-R和-I参数定义的网格区域中,没有原始数据点的块空白。

gmt blockmean hawaii.xyg -R198/208/18/25 -I5m > hawaii_5x5.xyg

5*5单位求平均。

surface
通过程序 surface 网格化我们的数据,surface的一些选项:
-A aspect对向各项异性的网格设置方向比值
-C limit设置收敛极值。缺省为数据范围的 1/1000
-T 设值张性系数 [ 缺省为 0]
surface程序假定数据已经被预处理过,预处理可以使用blockmean等。
用 surface 把数据网格化,重要的一点是:blockmean, blockmedian, blockmode 命令一定要在 surface 前运行,而且这两步一定要用同样的网格间隔。
cpt文件
Cpt 文件可以用任何方法创建。GMT 提供两种模式:
1. 创建一个简单的、线性的颜色表作为主色表(有几种是内置的),确定拟表示 的颜色边界的 z–值(makecpt )
2. 由内置主 cpt 颜色表创建颜色表,在一个网格数据文件中 z 值的直方图均衡分 布。(grd2cpt )
makecpt
–C 给出所调用的主 cpt 文件名
–I 倒转颜色级数指向
–V 在 verbose 模式下运行
–Z 构筑一个连续的而不是离散的表

下面练习是分别创建离散的和连续的彩色 cpt 文件,数据范围由 –20 到 60, 每 10 个单位改变一次颜色。试分析两种表示的区别:

makecpt –Crainbow –T–20/60/10 –> disc.cpt
makecpt –Crainbow –T–20/60/10Z > cont.cpt

psscale
绘制色谱表。
–Ccptfile 必需的cpt 文件
–D xpos/ ypos/ length/ width[ h] 设定色谱图例的左侧中心坐标和图例的长/宽。默认是垂直的,加上h变为水平。其中位置是通过指定颜色棒左边框中点(水平颜色棒是顶边框中点)的位置来实现。
–I max_intensity 增加照明效应
–B 选项可用来绘制标题和单位符号(以及随意设定色谱图例的标注, 记号和网格线宽度)。x轴标签一般指定颜色对应数据的意义,y轴指定数据的单位。如-B5:elebation:/:m:,其中5代表刻度线的间隔,/线前指定y轴标签,/后指定x轴标签,如果/:m:改为/:m@+2:即显示为平方米。
-A选项指定颜色的注释(a)和(或)标签(l)的位置在水平刻度条的上方或垂直刻度条的左侧。c选项可将标签显示为垂直的一列。
-E选项作用为给颜色条上下分别加三角,其中b表示背景色,f表示前景色,/length设置三角的高度(默认颜色条宽度的一半)。
如果标签字体过大,可以使用gmtset LABEL_FONT_SIZE 12P自行设置字号。

grdimage
由 2–D 网格数据构筑彩色影像图。
–E dpi 设置所需要的影像分辨率[缺省为数据分辨率]
–I intenfile 使用intensfile文件的亮度数据建立虚拟照明
–M 使用(电视)YIQ 转换改为灰度
-B 设置边框上每隔?有一个标记

-K -O -V
–K 省略了文件尾,说明更多的 PostScript 代码将会加到后面[缺省是结束绘图过程]。
–O 选择覆盖绘图模式并省略了文件头[缺省是初始化一个新的绘图过程]。
–V 选择verbose模式,将建立程序运行报告文件stderr [Default runs “silently”].


这里写图片描述

任意一个完整的PS文件都必须包含头段(初始化),正文(绘图部分),尾巴(输出图像)。GMT的每个绘图命令默认都会同时输出头段、正文以及尾巴。
如左图所示,如果一张图只需要一个命令就可以画出来,那么就不需要-K和-O选项。
如中图所示,如果一张图由两个命令绘制出来,第一个命令需要省略尾巴部分(使用-K),第二个命令需要省略头段部分(使用-O)。
如右图所示,如果一张图由多个命令组成,第一个命令省略尾巴(-K),中间命令省略头段和尾巴(-K -O),最后一个命令省略头段(-O)。
另外一个需要注意的地方是重定向符号,第一个命令使用重定向符号>创建新文件并写入PS命令;余下所有命令绘图命令使用重定向符号>>向PS文件中追加新的PS命令;

pscoast
“–R130/150/35/50”就是一个区域范围,格式为“[W|E|S|N]” ,经度纬度区间。
“–JM6i”就是设置墨卡托投影—– “Jm与JM的区别在于绘图大小不一样的规定方法。m是规定的一度的大小,比如Jm1i,就是用1 inch来代表一度。JM则是规定的整幅图的大小,例如:JM5i 就是定义图片是5inch大。”
“–B5”坐标轴增量是5
“–G200” 填充颜色 灰度
“–Lf134/49/42.5/500” 比例尺绘制 500km的比例134/49/42.5 是比例尺的定位
“–K” 暗示,其后这个文件会被其他元素输入而覆盖上。。

ps2raster
-A:一般ps文件的尺寸为一张A4纸的大小(PAPER_MEDIA),很多时候绘图只占用了纸张的一小部分。这个选项可以重新定义BoudingBox,将空白的部分去除。-Au可以额外去除GMT的时间戳(-U)。(觉得这个选项去空白去得有点过了,图像周围基本一点空白都没有)
-E:设置位图的精度。默认pdf格式dpi=720,其他格式dpi=300。pdf格式是矢量格式,但是其中的图案填充以及字体是以位图的格式存储的,-E选项对这部分是有效的。
-T:指定输出格式,默认为jpeg格式。b指bmp,e代表eps,f代表pdf,j代表jpeg,g代表png,G代表透明的png,m代表ppm,t代表tiff。对于bgjt后可加-以产生灰度图。EPS是格式转换过程的中间文件,因而可以和其他格式同时生成,比如可以使用-Tef同时产生pdf和eps文件。

psmask
创建剪裁路径或覆盖模板。
psmask 命令可以读同样的预处理数据并根据 数据的分布设置等值线的 mask。一旦剪裁路径被激活,我们可以绘出最后等值 线区的轮廓,然后第二次调用 psmask 来最终解除剪裁。表示如下:

psmask –R245/255/20/30 –I5m ship_5m.xyz –JM6i –B2 –P –K –V > map.ps 
grdcontour ship.grd –JM –OK –C250 –A1000 >> map.ps
psmask –CO >> map.ps

psclip

例子2

未完待续

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页