0%

基本知识

PROJ是什么?

PROJ 是安装GMT时依赖的一个程序,功能是提供地理坐标、大地测量坐标和投影坐标的转换功能。GMT中的投影、坐标转换和椭球面距离计算等功能来自PROJ。如果用户自己加入或者修改投影,则修改此程序。
PROJ项目开始于1983年。

阅读全文 »

问答

问:GMT中psxy绘制线的宽度单位能设置为km吗?
答:psxy的线宽单位只有c,i,p,是没有办法直接设置地图中线的宽度是地理单位的,例如m,km等。

Width is by default measured in points (1/72 of an inch). Append c, i, or p to specify pen width in cm, inch, or points, respectively.

问:就没有别的办法了吗?
答:可以通过设定地图比例尺scale,然后根据比例尺来计算出地图上1cm表示的实际地理长度。例如比例尺为1:500000时,线宽1m表示500,000米,1cm表示5km。

阅读全文 »

AWK是常用的数据处理工具,内置的变量名称为:

变量名 含义
ARGC 命令行变元个数
ARGV 命令行变元数组
FILENAME 当前输入文件名
FNR 当前文件中的记录号
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符
NF 当前记录里域个数
NR 到目前为止记录数
OFS 输出域分隔符
ORS 输出记录分隔
$NF 表示最后一列

阅读全文 »

以后以提问的形式进行吧,这样可能更有益于学习。

提问:请问我想提取出青海湖的岸线在别的程序使用,能使用GMT吗?
回答:可以,pscoast -M 具有这种功能,使用下面的代码

阅读全文 »

首先解决几个基本的问题。

提问:我有一个tif格式的文件,可以在GMT中直接使用吗?
回答:可以直接使用。因为GMT已经引用了GDAL。

提问:我的tif坐标是UTM,能转成经纬度吗?
回答:可以,有两种方法可以转化,并互相检验。一种是grdproject,一种是先通过grd2xyz转成文本,然后通过mapproject转换为经纬度,在通过xyz2grd转为nc。经检验,两种方法一致,因此直接采用第一种即可。需要注意的是选择UTM投影代号。

阅读全文 »

傅里叶变换是常用的计算信号频率(功率谱)的工具,各种编程语言都可以简单的快速实现FFT变换。GMT作为绘图工具,不仅可以绘图,也集成了非常强大的地学数据处理功能,对一维、二维的数据都可以实现傅里叶变换,从而确定出信号的频率信息。

spectrum1d(help-page)是计算一维信号频域信息的工具,它采用了Welch的计算方法,该方法在Matlab中也经常使用,优点是可靠、易编程,结果易理解。

GMT开发者给出了一个例子,可参考github,但是例子中的数学稍微不易理解。经过修改,输入信号修改为两个周期三角函数的叠加,经过测试,GMT可以准确地计算出频率和波长。

阅读全文 »

地图投影

地图投影的基本原理是球坐标到平面坐标的数学变换,按照变形又分为等面积投影、等角度投影和任意投影,传统地图考虑到人类生存的大陆投影变形最小,而放大了南北极的变形,且一般遵从上北下南的常识(即下图的东西撕开)。

竖地图

竖地图也是一种地图投影。国内较著名的竖版地图由长期从事大地测量学地球物理学地震学地图学地理学马克思主义哲学研究的诗人郝晓光研究员编制,他的地图将南北极以较小的变形投影到一张图上,这版地图相当受欢迎,获得了各个社会群体的喜爱。国产竖版地图影响甚大,除了改变人类的“世界观”,它还改变了北斗卫星在北极的布局,改变了中国对美战略等。近期的一则消息拿美国Princeton University科学家所公开的Gott-Wagner投影和国产竖版地图做比较,专家结论是美国地图不好,并给出了几点依据。不明觉厉吧,国产的地图真无敌,轻松打败美国地图。

竖版地图,图片来源:郝晓光主页

经资料查询,其竖版地图的制图法则在于:

“经向世界地图”采用“等差分纬线多圆锥投影方法”,而我们所做的只是将“经向世界地图”的纵坐标线(经线)与横坐标线(纬线),变换成“纬向世界地图”的横坐标(经线)与纵坐标线(纬线)。也就是说,“纬向世界地图”与“经向世界地图”在投影方法上的区别仅仅是“坐标换轴”。(《经纬跨越四百年)

简单理解,就是把经纬替换,投影的数学法则不变。

下面我们试着用GMT软件和另一种投影方式制作竖版地图,主要目的是好玩

GMT通用绘图工具绘制不同投影的全球地图

GMT是科学绘图领域使用最普遍的开源工具,它调用了另一个开源软件Proj的全部投影(有149种),基本满足各种制图场景。

使用GMT绘制全球地图非常方便,例如仅下面一行命令,就绘制出常见的Robinson projection(罗宾逊投影)地图:

1
$ gmt pscoast -Rd -JN5i -Bg30 -Df -A10000 -Glightgray -N1/0.005c -W1/0.01c -png mapnormal

GMT绘制的Robinson投影全球地图

1963年,阿瑟·h·罗宾逊(Arthur H. Robinson)响应兰德·麦克纳利公司(Rand McNally company)的呼吁,发明了罗宾逊投影。从那时起,该公司就在通用世界地图中使用了这种投影技术。罗宾逊在1974年公布了该计划的建造细节,1988年,国家地理学会(NGS)开始使用罗宾逊投影法绘制通用世界地图,取代了范德格林滕投影法,NGS在1998年放弃了罗宾逊投影,转而使用Winkel tripel投影,因为后者“减少了靠近极地的陆地的变形”。来源

GMT绘制竖版地图

使用GMT的通用墨卡托全球投影(Transverse Mercator projection)投影,可以仅一行代码实现竖版地图:

1
2
3
gmt begin TMcontours ps,png
gmt coast -R0/360/-80/80 -JT160/-50/4i -Glightgray -A10000 -Df -Ba30g30 -X6i -N1/0.005c -W1/0.01c
gmt end

仔细看这幅地图,容易发现澳大利亚和南极洲的海岸线匹配较好,可能亿万年前澳大利亚是南极洲的一部分吧。

1
2
3
gmt begin TMcontours ps,png
gmt coast -R0/360/-80/80 -JT330/-40/4i -Glightgray -A10000 -Df -Ba30g30 -N1/0.005c -W1/0.01c
gmt end

如果换一个视角,可以更加清晰展示全球五大洲陆地的版块运动,上图易见:南美洲和非洲,南极的威德尔海和南非,马达加斯加和非洲大陆都可以拼在一起。这或许可以解释为什么南非、南美洲、澳大利亚有企鹅。

企鹅分布

图片来源

中科院测地所郝晓光研究员编制了竖版世界地图,并且凸显出了北极的战略性意义,指出北京到纽约最近路线通过北冰洋而不是太平洋。这和人们在传统地图上看到的可能不太符合,通过GMT可以计算大圆距离,并在不同的投影上进行绘图,展示北京到纽约的实际最短航线。

阅读全文 »

有时会用到高性能服务器去做一些计算,其中包含GMT计算程序的调用。而高性能计算机并不给一般用户登录互联网和管理员权限,因此需要在Linux服务器上,使用一般用户的身份手动编译GMT以及全部所需要的依赖程序。最初以为这个很麻烦,但是经过陆续一周的依赖源编译,还是安装成功了,确实很麻烦。

阅读全文 »