GMT 图中图模式

在绘制区域地图时,为了更清晰地显示研究区域的地理位置,通常会额外绘制一个更大区域范围的地图,并在大区域地图中标记出研究区域的位置。这种图称之为 inset map。中文没有统一的翻译,大家一般称之为图中图、小图或者插页图。

GMT 中 inset 模块用于管理图中图模式。图中图模式以 inset begin 开始,并以 inset end 结束。

使用 inset begin 进入图中图模式,其作用是在纸张上规划出一个矩形区域,并将绘图原点移动到该矩形区域的左下角。接下来的所有绘图命令均只在该区域内进行操作。当使用 inset end 结束图中图模式时,绘图原点会自动恢复到图中图模式之前的位置,且所有设置参数都将回到之前的状态。

用矩形框标记研究区域

下面的示例中研究区域为日本东京周围的一个小区域。为了展示其地理位置,我们在大图的左下角的小图中绘制了日本全图,同时在小图中用矩形框出了大图中的研究区域范围。

inset begin 定义了小图的位置位于大图左下角(-DjBL),小图区域的宽度为 3 厘米,高度为 3.6 厘米(+w3c/3.6c),并且相对大图左下角偏移 0.1 厘米(+o0.1c)。同时还设置了小图区域的背景色为白色(+gwhite),并绘制了小图区域的边框(+p1p)。

在小图区域内,我们使用 coast 模块绘制了日本全图,小图投影参数为 -JM?,其中 ? 表示根据 inset begin-D 选项指定的宽度自动决定小图宽度。同时我们使用 plot 模块的 -Sr+s 选项在小图中绘制了一个对应于大图区域的矩形框,该命令需要输入矩形区域的两个对角顶点的经纬度。

#!/usr/bin/env bash
gmt begin inset-map png,pdf
    gmt coast -R139.2/140.5/34.8/36 -JM12c -Baf -BWSne -W2p -A1000 -Glightbrown -Sazure1 --FORMAT_GEO_MAP=dddF
    gmt inset begin -DjBL+w3c/3.6c+o0.1c -F+gwhite+p1p
        gmt coast -R129/146/30/46 -JM? -EJP+glightbrown+p0.2p -A10000
        # Plot a rectangle region using -Sr+s
        echo 139.2 34.8 140.5 36 | gmt plot -Sr+s -W1p,blue
    gmt inset end
gmt end show
../../_images/inset-gmtplot-0.png

用颜色标记研究区域

下面的示例中研究区域为澳大利亚。为了展示其地理位置,我们在大图的右上角区域绘制了全球地图,并用特殊的颜色将澳大利亚区域标记出来。

inset begin 定义了小图的位置位于大图右上角(-DjTR),小图区域宽度为 1.5 英寸(+w1.5i)。同样的,在小图内部我们在需要指定地图宽度的地方使用了 ? 让 GMT 自动帮我们决定小图的宽度。

#!/usr/bin/env bash
gmt begin inset-example png,pdf
    gmt coast -R110E/170E/44S/9S -JM6i -B -BWSne -Wfaint -N2/1p -Gbrown -EAU+gbisque
    gmt inset begin -DjTR+w1.5i+o0.15i/0.1i -F+gwhite+p1p+c0.1c
        gmt coast -JG120/30S/? -Rg -Bg -Wfaint -Gbrown -EAU+gbisque -A5000
    gmt inset end
gmt end show
../../_images/inset-gmtplot-1.png