以地图和卫星图为底图

示例贡献者:

陈箫翰


当绘图区域非常小时,GMT 自带的海岸线数据与地形数据精度较差,不适宜用来绘制底图。对于这种情况,读者可以使用公开的地图或卫星图接口(例如高德地图、谷歌地图等)绘制底图。GMT 没有下载此类地图的功能。 google-map-downloader 中的 downloader_gmtchina.py 脚本支持可以下载高德地图及卫星图以及谷歌地图及卫星图。详细用法见 google-map-downloader 的官方说明文档。

以厦门市为例,使用如下参数下载四种地图:

$ python downloader_gmtchina.py 118.055917 118.244753 24.399450 24.559724 12 google.tif google
$ python downloader_gmtchina.py 118.055917 118.244753 24.399450 24.559724 16 google_sat.tif google_sat
$ python downloader_gmtchina.py 118.055917 118.244753 24.399450 24.559724 12 amap.tif amap
$ python downloader_gmtchina.py 118.055917 118.244753 24.399450 24.559724 16 amap_sat.tif amap_sat

当绘图区域非常小时,在 GMT 中可以使用“度:分:秒”的格式表示地理坐标,避免计算小数。例如 121:52:38.3 表示东经 121 度 52 分 38.3 秒。下面的例子展示了绘制厦门市四种地图的示例。通过对比可见 GMT 自带的海岸线数据在绘图区域较小时准确性较差。

#!/usr/bin/env bash

gmt begin map
    # 设置绘图时以“度:分:秒”的格式显示坐标
    gmt set FORMAT_GEO_MAP ddd:mm:ss.xF
    # 设置标注、标题格式
    gmt set FONT_ANNOT 5p
    gmt set FONT_TITLE 8p
    gmt set MAP_TITLE_OFFSET 0p
    
    # 指定作图区域为东经118度4分9.1秒到118度12分36秒,北纬24度25分12.6秒到24度33分23秒
    # -Bxa5mf 设置经度标注间隔5分,-Bya4mf 设置纬度标注间隔4分
    gmt basemap -R118:04:09.1/118:12:36.0/24:25:12.6/24:33:23.0 -JM4c -Bxa5mf -Bya4mf -B+t"Amap (GCJ-02 to WGS84)"
    # 加载高德地图
    gmt grdimage amap.tif -Ve
    # 以最高精度绘制 GMT 自带的海岸线数据,并绘制比例尺
    gmt coast -W0.5p -Lg118:11:00/24:27:00+c118:11:00/24:27:00+w2k+u -Df

    # -X5.5c 将绘图原点右移5.5厘米
    gmt basemap -R118:04:09.1/118:12:36.0/24:25:12.6/24:33:23.0 -JM4c -Bxa5mf -Bya4mf -B+t"Amap Satellite (GCJ-02 to WGS84)" -X5.5c
    # 加载高德卫星图
    gmt grdimage amap_sat.tif -Ve
    gmt coast -W0.5p -Df

    # -X-5.5c 将绘图原点左移5.5厘米,-Y-5.5c 将绘图原点下移5.5厘米
    gmt basemap -R118:04:09.1/118:12:36.0/24:25:12.6/24:33:23.0 -JM4c -Bxa5mf -Bya4mf -B+t"Google Maps (GCJ-02 to WGS84)" -X-5.5c -Y-5.5c
    # 加载谷歌地图
    gmt grdimage google.tif -Ve
    gmt coast -W0.5p -Df

    gmt basemap -R118:04:09.1/118:12:36.0/24:25:12.6/24:33:23.0 -JM4c -Bxa5mf -Bya4mf -B+t"Google Satellite WGS84" -X5.5c
    # 加载谷歌卫星图
    gmt grdimage google_sat.tif -Ve
    gmt coast -W0.5p -Df
gmt end show
https://user-images.githubusercontent.com/26203721/186561576-cf6b7b29-7f29-4157-851a-23ec6ad51353.jpg