geotiff或kml图片转换作为GMT的底图

09 Aug 2018

需要的软件:GMT,gdal_translate(安装方式参见:在GMT中使用SRTM3高精度地形
主要命令:grdimage,gdal_translate

基本原理

  1. 由于grdimage不仅可以使用单个grd数据作为输入,同时还可以输入r,g,b三个波段的geotiff格式的数据,如果安装了gdal,还可以用geotiff图片作为底图。
  2. geotiff图件可以转换为grd,因为两者都是带坐标信息的。

流程

第一步:kml to geotiff

  1. 先导出kmz(或者kml,但推荐前者)
  2. 用在线网站把kmz转为geotiff:convert kml to geotiff

    第二步: geotiff作为底图

    得到geotiff之后有两种方法,

  3. 把geotiff转为grd。注意,转出来之后z值是0-1.可以用gmtinfo查看具体信息。
  4. 用grdimage画图,由于z值是0-1,推荐用gray色标。
    • 方法二: 更简单的方式:grdimag -D就可以实现带坐标图片作为底图
      -D表示会自动调用gdal来读取图片,所以确保自己安装了gdal_translate;
      -Dr表示强制规定图片的经纬度范围是-R所设置的 脚本: ```

#!/bin/bash PS=translate.ps RR=R-114/-96/38/50 JJ=JM10c TIFF=map.tiff gmt gmtset MAP_FRAME_TYPE=fancy gmt grdimage $TIFF -$JJ -$RR -D -Ba2g2 -BSWen –MAP_GRID_PEN_PRIMARY=0.2p,green >$PS gmt psconvert $PS -A -Tj rm gmt.* ```

map.tiff

translate.jpg

Bug

如果你的图片不是WGS84坐标(比如说做了墨卡托投影),那么gdal无法读取图片中的经纬度(因为它不是经纬度格式)。
如何确保你的tiff图片是WGS84坐标系统且没有做投影:

gdalinfo input.tiff

image.png

这种说明是正常的没有做投影的;

image.png 这种是做过墨卡托投影的,无法直接作为gmt的输入图片。切记!


参考资料:
GMT绘图geotiff转grd


更多资料

GMT目录
Windows下安装gmt
GMT绘制GPS速度矢量图
GMT制图专题


2018-11-11:第二次更新,跑成功了kml到geotiff,再到grd的完整流程