gmtselect

官方文档:gmtselect
简介:基于多种准则筛选数据

该命令会从输入文件中读取前两列作为经度和纬度,并判断该点是否符合一定的空间准则, 以筛选出符合条件的记录。输入文件中仅前两列会被使用。

七个空间准则包括:

  1. 在矩形区域内( -R-J
  2. 与点文件中的每个点的距离在一定范围之内
  3. 与线文件中的每条线的距离在一定范围之内
  4. 在多边形文件所指定的多边形内
  5. 在某个地理区域内(需要海岸线数据)
  6. Z 值在某个范围内
  7. 该点所在的网格单元内具有有效值(即非零和非NaN的值)

七个空间准则

准则1

使用 -R-J 筛选出在该区域内的点:

gmt select points.xy -R0/5/0/5

准则2

筛选所有与点文件中的每个点的距离在一定范围内的点。

-C<pointfile>+d<dist>[<unit>]

该准则会筛选出与文件 <pointfile> 中的每个点的距离在 <dist> 之内的记录。

<dist> 等于0,则 <pointfile> 中的第三列是每个数据点各自的 影响半径,即筛选出不在任何一个数据点的影响半径内的点。默认情况下 <dist> 是笛卡尔坐标系下的距离,单位为用户单位。若指定 -fg 选项,则表明 <dist> 为球面距离。若使用了 -R-J ,则 <dist> 表示投影后的纸面距离,单位由参数 PROJ_LENGTH_UNIT 决定。

准则3

筛选所有与线文件中的每条线的距离在一定范围之内的点。

-L<linefile>+d<dist>[<unit>][+p]

<linefile> 中包含了一系列线段,该准则会筛选出与这些线段的距离不超过 <dist> 的记录。

<dist> 等于零,则可以在 <linefile> 中每段数据的段头记录中使用 -D<dist> 参数,为每个线段分别指定距离值。

默认情况下 <dist> 是笛卡尔坐标系下的距离,单位为用户单位。若指定 -fg 选项,则表明 <dist> 为球面距离。若使用了 -R-J , 则 <dist> 表示投影后的纸面距离,单位由 PROJ_LENGTH_UNIT 决定。

使用 +p 则会将数据点垂直投影到线段上,只有投影位置在线段的两个端点内的 记录才会被保留,即只有线段左右一定距离内的点才会被保留,超过线段两端点的点 不会被保留。

准则4

筛选出在某个多边形内的点。

-F<polygonfile>
<polygonfile> 中可以包含一个或多个多边形,该选项筛选出所有在多边形内的 记录。

准则5

根据地理特征信息筛选数据。

-N<wet>/<dry>

跳过或保留陆地(dry)/海湖(wet)区域内的点。

<wet><dry> 可以取 sk ,分别表示 skip 和 keep。 默认值为 -Ns/k ,即保留所有位于陆地上的记录,并跳过所有海洋、湖泊中的 记录。

-N<ocean>/<land>/<lake>/<island>/<pond>
进一步细分地理特征,五项分别表示海洋、陆地、湖泊、岛屿、池塘(?)。每一项均 可以取 sk ,分别表示 skip 和 keep。默认值为 -Ns/k/s/k/s , 等效于 -Ns/k,即仅保留所有陆地上的记录。
-D[a|f|h|i|l|c][+]
选择海岸线数据的精度,仅与 -N 选项一起使用有效。见 pscoast-D 选项的介绍。
-A<min_area>[/<min_level>/<max_level>][+ag|i|s|S][+r|l][+p<percent>]

不绘制面积过小的区域(湖泊或岛屿),或不绘制某个级别的湖泊边界。

在绘制湖泊时,若不管湖泊的面积大小而把所有湖泊的边界都画上去,可能导致图 看上去比较乱,该选项用于对湖泊进行筛选。面积小于 <min_area> 平方千米 或者湖泊级别不在 [min_level,max_level] 范围的边界都不会被绘制。 默认值为 0/0/4 ,即绘制所有湖泊边界,即绘制0到4级所有级别的面积大于0的 湖泊。

对于level=2,即湖岸线,包括常规的湖以及很宽的河流。加上 +r 则只绘制河流, 加上 +l 则只绘制常规湖。

对于南极洲而言,因为有冰层的存在,所以海岸线有多种处理方式:

  1. +ai 用ice shell boundary作为南极洲的海岸线,默认值
  2. +ag 以ice grounding line作为海岸线
  3. +as 忽略南纬60度以南的海岸线,用户可以使用 psxy 绘制自己的南极洲海岸线
  4. +aS 忽略南纬60度以北的海岸线

+p<precent> :一个多边形,降低精度后,边数减少,面积变化,当面积变化 过大时再绘制这个多边形就不合适了,该子选项用于去除那些面积与最高精度面积 之比小于 <percent> 的多边形。

准则6

筛选Z值在某个范围内的点

-Z<min>[/<max>][+c<col>]

判断记录的Z值是否在 <min><max> 之间或等于 NaN。

若省略 <max> 则判断Z值是否等于 <min> 。若不限制范围的上限或下限,i 可以使用 - 代替。

若第三列Z值代表时间,想要判断Z值是否在某个时间范围内,需要使用 -f2T 选项。

可以使用 +c<col> 指定记录中的某一列作为Z值,默认以第三列(col=2) 作为Z值。若想要对多列做类似的测试,可以重复使用 -Z 选项,每次指定 不同的列号。注意:当多次使用 -N 选项时,不可使用 -Iz 选项。

准则7

根据数据点所在的网格单元内具有有效值(即非零和非NaN的值)来筛选数据。

-G<gridmask>
使用 -G<gridmask> 指定一个网格文件。对于每个数据点而言,判断其对应的 网格单元是否具有有效值(即非零或非NaN的值),若该网格单元有有效值,则保留 该数据点。

其他选项

-E[fn]
在判断点是否在一个多边形内时,默认会将恰好在多边形边界线上的点也认为是在 多边形内,使用该选项会将多边形上的点认为是在多边形外部。 fn 分别修改 -F-N 选项的行为。
-I[cfglrsz]
对七个准则取反,即筛选出不符合准则的记录。c、f、g、l、r、s、z分别对应于 -C-F-G-L-R-S-Z

示例

筛选与 pts.txt 中所有点的距离在300 km以内,与 lines.txt 中线段的 距离在100 km以外的点:

gmt select lonlatfile -fg -Cpts.txt+d300k -Llined.txt+d100k -Il > subset

此处需要使用 -fg 以告知程序正在处理地理数据。

筛选某个区域内所有不在陆地上的点:

gmt select data.txt -R120/121/22/24 -Dh -Nk/s > subset

筛选 quakes.txt 中所有位于多边形区域内的点:

gmt select quakes.txt -Flonlatpath.txt -fg > subset

stations.txt 中的点投影后与 origin.txt 的距离在5 cm之内的点:

gmt select stations.txt -Corigin.txt+d5 -R20/50/-10/20 -JM20c \
    --PROJ_LENGTH_UNIT=cm > subset