geotiff或kml图片转换作为GMT的底图
需要的软件:GMT,gdal_translate(安装方式参见:在GMT中使用SRTM3高精度地形)
主要命令:grdimage,gdal_translate
基本原理
- 由于grdimage不仅可以使用单个grd数据作为输入,同时还可以输入r,g,b三个波段的geotiff格式的数据,如果安装了gdal,还可以用geotiff图片作为底图。
- geotiff图件可以转换为grd,因为两者都是带坐标信息的。
流程
第一步:kml to geotiff
- 先导出kmz(或者kml,但推荐前者)
- 用在线网站把kmz转为geotiff:convert kml to geotiff
第二步: geotiff作为底图
得到geotiff之后有两种方法,
- 把geotiff转为grd。注意,转出来之后z值是0-1.可以用gmtinfo查看具体信息。
- 用grdimage画图,由于z值是0-1,推荐用gray色标。
- 方法二:
更简单的方式:grdimag -D就可以实现带坐标图片作为底图
-D表示会自动调用gdal来读取图片,所以确保自己安装了gdal_translate;
-Dr表示强制规定图片的经纬度范围是-R所设置的 脚本: ```
- 方法二:
更简单的方式:grdimag -D就可以实现带坐标图片作为底图
#!/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
- 转换裁剪后的图片:
Bug
如果你的图片不是WGS84坐标(比如说做了墨卡托投影),那么gdal无法读取图片中的经纬度(因为它不是经纬度格式)。
如何确保你的tiff图片是WGS84坐标系统且没有做投影:
gdalinfo input.tiff
这种说明是正常的没有做投影的;
这种是做过墨卡托投影的,无法直接作为gmt的输入图片。切记!
参考资料:
GMT绘图geotiff转grd
更多资料
GMT目录
Windows下安装gmt
GMT绘制GPS速度矢量图
GMT制图专题
2018-11-11:第二次更新,跑成功了kml到geotiff,再到grd的完整流程