✍️ 田冬冬 , 陈箫翰 , 朱邓达  •  📅 2025-08-22

contour

官方文档:

contour

简介:

使用直接三角化法对数据进行等值线绘制

语法

gmt contour [ table ] -Jparameters -Rwest/east/south/north[/zmin/zmax][+r][+uunit] [ -A[n|contours][labelinfo] ] [ -B[p|s]parameters ] [ -Ccontours ] [ -D[template] ] [ -Eindexfile ] [ -G[d|f|n|l|L|x|X]params ] [ -I ] [ -Jz|Zparameters ] [ -Lpen ] [ -N ] [ -Q[cut][+z] ] [ -S[p|t] ] [ -T[h|l][+a][+dgap[/length]][+l[labels]] ] [ -U[stamp] ] [ -V[level] ] [ -W[type]pen[+c[l|f]] ] [ -X[a|c|f|r][xshift] ] [ -Y[a|c|f|r][yshift] ] [ -bbinary ] [ -dnodata[+ccol] ] [ -eregexp ] [ -hheaders ] [ -iflags ] [ -lflags ] [ -pflags ] [ -qiflags ] [ -ttransp ] [ -:[i|o] ] [ --PAR=value ]

描述

读取一个ASCII或二进制格式的输入数据文件 table 并绘制出等值线。

必选选项

table

一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。

-Jprojection (more …)

设置地图投影方式

-Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)

指定数据范围。

对于三维透视图(-p 选项) ,可以加上 /zmin/zmax 指定Z轴的范围。

可选选项

-A[n|contours][labelinfo]

-Acontours 设置标注间隔,如果在 -C 选项中指定标注间隔的话, 这里的设置会被覆盖。-An 则为不进行标注。也可以用 -A20,80,100 类似的用法,对指定的 等值线进行标注。如果只想要标注一条等值线,需要在末尾加上逗号,例如 -A20, ,这样 20 就不会被认为是标注间隔。 labelinfo 代表可以在最后追加下列额外选项:

+aangle

设置标注的旋转角度 angle 。也可以写成 +an 表示标注垂直于等值线。默认设置为 +ap 表示标注 平行于等值线。 +apu+apd 表示设置方向朝向山顶还是山底。

+cdx[/dy]

设置标签和文本框之间的间隙。后面加上 c|i|p 来指定单位或 % 来表示标签字体大小的百分比 [15%]。

+d

打开debug模式,绘制辅助点和辅助线展示等高线的设定。

+e

延迟标注。这用于基于文本构建裁剪路径,在该裁剪路径生效时放置其他图层, 使用 clip -C 关闭裁剪后再标注文本,这样使标注文本不被裁剪。 请注意,裁剪路径可能会截断没有文本重叠的其他区域。反复检查以确保得到预期的正确结果。 建议每次使用 +e 后,选择合适的位置手动运行 clip

+ffont

设置字体。默认会使用 FONT_ANNOT_PRIMARY 设定的字体,但字体大小会变成9p。

+g[color]

设置标注文本框的背景颜色,默认使用 PS_PAGE_COLOR 颜色,不设置本项时标注文本框的背景是透明的。

+i

隐藏等值线(默认绘制等值线),只绘制标注

+j[just]

设置标注相对于等值线中点的对齐方式,默认使用 MC

+ndx[/dy]

设置标注位置的偏移,后面加上 c|i|p 来指定单位。偏移增量设定在由等值线方向定义的坐标系中 (沿等值线方向为 x ,垂直等值线方向为 y)。 将 +n 改为 +N 则所有标注在整个绘图坐标系 x/y 中整体偏移。不能和 +v 一起使用。

+o

将文本框形状设置为圆角矩形。不能和 +v 一起使用。

+p[pen]

设置文本框轮廓的线型,不设置本项时无轮廓。默认宽度0.25p,颜色black,风格solid。

+rmin_rad

等值线的曲率半径小于 min_rad 处不作标注。默认 min_rad 设置为0。

+t[file]

将等值线标注文本的坐标 x,坐标 y,旋转角度 angle 和文本保存到文件 file。 默认文件名为Contour_labels.txt。

+uunit

在所有标注后面加上单位 unit ,默认无单位。如果设置为 +uz,则使用输入文件的z值单位。

+v

将标注文本沿着等值线弯曲。

+wn

指定使用多少个 (x,y) 点来估计标注旋转角度,默认由程序自动指定。

+=prefix

在所有标注前面加上前缀 prefix

-Bparameters (more …)

设置底图边框和轴属性。

-Ccontours

指定绘制等值线的形式,具体说明如下:

  1. 如果 contours 是一个以 “.cpt” 结尾的文件名,GMT会查找对应的CPT文件, 把CPT文件中的颜色块的边界绘制为等值线,并进行标注。如果使用了 -An 选项则只绘制等值线不标注。

  2. 如果 contours 是一个不以 “.cpt” 结尾的文件名,GMT会读取其中的内容作为等值线设置。 每行为一条等值线的设置,以如下格式给出: contour-level [angle] C|c|A|a [pen],中括号表示可选项。 Cc 表示绘制等值线但不标注,而 Aa 表示绘制等值线并进行标注。 angle 设置标注的旋转角。 pen 设置等值线的线型。

  3. 如果 contours 是一串用逗号隔开的数字,例如 -C20,80,100 ,则绘制对应的等值线。 如果只想要绘制一条等值线,需要在末尾加上逗号,例如 -C20,

  4. 如果没有指定 contours ,则默认使用当前CPT文件。

  5. 如果 contours 是一个常数,则以这个常数为间隔绘制等值线。

如果 -C-A 都没有指定的话,则自动计算合适的间隔绘制标注等值线。

-G[d|f|n|l|L|x|X]params

警告

某些时候等值线图会出现标注数字消失不见的情况。这是由于数字被标注在绘图范围外所致。 这种情况应该使用下面的 -G 选项手动设置标注在等值线上的位置。

有5种可选的方式控制标注文字的位置。

ddist[c|i|p] 或 Ddist[d|e|f|k|m|M|n|s]

使用小写的 d ,并指定标注之间的距离 dist 和单位 c (cm)、 i (inch)或 p (points)。 默认值为 10c

如果使用大写的 D,则表示距离 dist 是地图上的距离,单位也应该从以下几个地理距离单位中选择: e (m), f (foot), k (km), M (mile), n (nautical mile), u (US survey foot), d (arc degree), m (arc minute), s (arc second)。

ffile.txt[/slop[c|i|p]]

读取 ASCII 文本文件 file.txt,将标注放置在文件中指定的坐标位置。 坐标位置和等值线间的距离小于 slop 才会绘制标注文字。默认值为0即只绘制位于等值线上的坐标。

l|Lline1[,line2,…]

每个 line 的格式为 start_lon/start_lat/stop_lon/stop_lat ,标注文字会绘制在这些 line 与线段的交点。 小写的 l 表示直线,而大写的 L 表示使用大圆路径。

还可以使用子选项 Z+Z- 代表网格数据中全局最大值点或最小值点的坐标。 例如, Z-/135W/15S 代表网格数据中最小值点与 (135ºW, 15ºS)之间的连线; Z-/Z+ 代表网格数据中最小值点与最大值点之间的连线。

n|Nn_label[/min_dist[c|i|p]]

指定等值线上等间隔标注的个数,默认为1即只绘制一个标注。 小写的 n 表示标注位置在每段间隔的中心,而大写的 N 表示标注位置在每段间隔的起点。

可选选项 /min_dist[c|i|p] 指定相邻标注的最小距离。 该选项同时限制了只能在长度大于 min_dist 的等值线上进行标注。

x|Xxfile

读取 ASCII 文本格式的多段数据文件 xfile.txt ,标注文字会绘制在这些多段数据与线段的交点。 大写的 X 会先将输入数据重采样为大圆弧线。

添加可选选项 +rradius[c|i|p] 可以设置 x-y 平面上标注文字之间的最小间距。

-G 选项的用法示例可以参考 grdcontour 模块的 进阶示例 小节

-W[type]pen[+c[l|f]] (more …)

设置等值线的线型。默认情况下,有标注的等值线线型 pen0.75p,black , 无标注的等值线线型 pen0.25p,black 。如果要设置有标注的等值线线型,type 应该设置为 a , 例如 -Wa1.75p,red 。无标注的等值线线型,type 应该设置为 c ,例如 -Wc1.25p,red 。 如果加上 +cl ,则使用 -C 选项所指定的CPT文件为不同的等值线设置颜色; 如果使用 +cf ,则为标注设置颜色; 使用 +c 则同时为等值线和标注设置颜色。

示例

使用 GMT 远程数据服务器上的数据文件 @Table_5_11.txt ,以25为间隔绘制等值线,以50为间隔标注:

#!/usr/bin/env bash
gmt begin contour_ex1
    gmt contour @Table_5_11.txt -Wthin -C25 -A50 -Baf
gmt end show
../../_images/a6a31918447db1ea284209c991dc1b1e.png

只绘制并标注750和800两条等值线:

#!/usr/bin/env bash
gmt begin contour_ex2
    gmt contour @Table_5_11.txt -A750,800 -W0.5p -Baf
gmt end show
../../_images/3e0b55bb545b6eebed23e60d5517acf5.png

使用CPT文件temp.cpt定义的间隔绘制等值线

gmt contour temp.xyz -R0/150/0/100 -Jx0.1i -Ctemp.cpt -W0.25p