GMT在Windows下的正确使用方式-吐槽帖二

02 Aug 2018

今日再来吐槽一顿:

槽点一:模块崩溃

  1. 问题症状

    在windows下用的好好的,今天有一个脚本突然怎么都运行不出来,而在win10子系统里面半点问题没有!

错误信息:

GMTdev/GMT5/5.4/WIN64/share/PSL_prologue.ps:no such file or direcotory

  1. 原因
    经过一条一条命令测试,终于发现是psxy出错,无法调用某个库好像是。

  2. 解决办法:
    卸载重装!

GMT对非地理坐标的“歧视”

今天要画一个重力异常图,但坐标都是m而不是经纬度。
然后,GMT就开始抽风。

  1. 问题描述:

    gmt nearneighbor input.dat -R0/3000/0/3000 -I75e -S150e -Gout.grd 要把xyz数据网格化,试了xyz2grd,nearneighbo,surface,统统失效,不是说网格内存过大(上千GB!),就是出错。
    注意:这里e表示单位m,一般经纬度下用d,m,s

  2. 原因:
    GMT自动将非经纬度的数值转换为经纬度,如75e(表示75m)转换为经纬度,但把-R后面的默认为是经纬度(就是说经纬度都是3000度),这样网格化,确实需要几百GB的内存啊。
  3. 解决办法
    后来看到-R可以在后面+uunit,unit应该和-I的unit一样,但是我用+ue,又出错:

    unit id should be 0-8

然后把e换成数字也不行,折腾了一下午无果!深深感觉到GMT对非经纬度坐标的歧视与不支持。
最后用-INx/Ny+,把网格间距换成网格格点数量,骗过了GMT,用surface网格化。勉强完成。
槽点满满的一天。