gmtspatial
- 贡献者:
- 官方文档:
- 简介:
对点,线和多边形进行地理空间操作
gmtspatial 读取一个或者多个文件,文件中包含线或多边形等特征,对这些 特性进行操作,包括:面积计算,多边形相交等。
语法
gmt spatial [ table ] [ -A[amin_dist][unit]] [ -C ] [ -D[+aamax][+c|Ccmax][+ddmax][+ffile][+p][+sfact] ] [ -E+p|+n ] [ -F[l] ] [ -I[e|i] ] [ -L|dist/noise/offset ] [ -Npfile[+a][+pstart][+r][+z] ] [ -Q[unit][+cmin[/max]][+h][+l][+p][+s[a|d]] ] [ -Rregion ] [ -Sbwidth|h|i|u|s|j ] [ -T[clippolygon] ] [ -V[level] ] [ -Wdist[unit][+f|l] ] [ -aflags ] [ -bbinary ] [ -dnodata[+ccol] ] [ -eregexp ] [ -fflags ] [ -ggaps ] [ -hheaders ] [ -iflags ] [ -jflags ] [ -oflags ] [ -qflags ] [ -sflags ] [ -:[i|o] ] [ --PAR=value ]
必选选项
- table
一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。
可选选项
- -A[amin_dist][unit]
空间最邻近分析:计算每个点的最邻近点,并报告点对之间的距离和 ID (ID 是 以输入顺序从 0 开始计数)。-Aa 选项用来筛选距离大于 min_dist 的 点对,输出数据可能会进行一定的平均。如果输出的 ID 为负数,则表示原始的点 被平均,这里的 ID 的绝对值为取平均过程中第一个点的 ID。
注 :输入数据中假定包含 (lon, lat) 或者 (x, y),此外还可以包括 z 值和权重两列,在进行平均时,会同时计算位置和 z 值的加权平均值。
- -D[+aamax][+c|Ccmax][+ddmax][+ffile][+p][+sfact]
检查输入线或者多边形之间是否存在重复,若使用 +f 则检查该选项给定的文件 中的元素是否与输入文件中的元素存在重复。在确定是否重复的时候,GMT 会自动 考虑精确匹配(相同的个数和坐标),近似匹配(两个特征之间最近点之间的平均 小于阈值)以及某些特征是否反转。
+aamax 设置多边形之间面积差的阈值,若大于 amax ,认为不想等, 小于 amax ,则认为近似想等,默认值为 0.01
+c|Ccmax 两特征之间的平均距离处除平均长度称为相近比 , 设置两条线之间的相近比阈值 cmax ,若两条线的平均相近比 大于该值认为两条线为重复,反之;默认值为 0.01 。 C 选项则使用中值而非平均值
+ddmax 设置点距阈值 dmax ,大于该值认为为重复点,默认值为 0
+p 默认情况下会计算一条线和另一条线上所有点之间的距离,如果使用 +p 选项,则只考虑在另一条线(非延长线)有垂直投影的点,这样会减小 一定的计算量
+sfact 设置两条线的长度比值的阈值为 fact ,默认为 2,若大于 值,则两条线分别为子集和超集。
在进行重复检查时,根据特征的种类,GMT 将会自动选取上述选项中的几项进行判断
- -E+p|n
重置所有多边形顶点的顺序。 +p 改为顺时针, +n 改为逆时针。
- -F[l]
强制输入数据变为多边形,如果输入为多边形,则自动实现闭合。使用 l 选项 来确保输入的线段不被识别为多边形
- -I[e|i]
确定所有多边形对之间的相交点的位置。i 只计算自相交的多边形的相交点的 位置, e 只计算不同多边形之间的相交点的位置 [默认为都计算]。输出将 包括相交点的坐标,相对于整段线长度的位置以及两个多边形的名称。
- -Ldist/noise/offset
删除经数字化得到的多边形在 -R 边界上的线,通过设置 dist (单位为 m ,默认值为 0),坐标误差 noise [1e-10] 以及最大的偏移量 offset [1e-10] 等参数的极限值来判断是否位于边界上。
- -Npfile[+a][+pstart][+r][+z]
确定点是否在多边形内。如果在多边形的内部,则报告对应的多边形的 ID, pfile 为报告的多边形结果。
- -Q[unit][+cmin[/max]][+h][+l][+p][+s[a|d]]
测量多边形的面积或者线的长度。对于多边形,还计算其中心位置;对于线,则计算其 一半长度的位置。面积的计算取决于投影参数 PROJ_ELLIPSOID ,应该使用最 贴合的椭球以获得准确的结果。
+h 将多边形面积写到段信息中 [默认输出到标准输出]
+cmin[/max] 筛选线长度或多边形的面积为 min 到 max 的目标; 如果不指定 max ,则默认为无穷大
+s[a|d] 对线长度或多边形面积进行排序, a 为升序, d 为降序,默认为升序
+p 将多边形闭合从而将所有的输入视为多边形
+l 将输入视为线而不是多边形,即使是闭合的多边形也视为线
- -Rxmin/xmax/ymin/ymax[+r][+uunit] (more …)
指定数据范围
- -Sbwidth|h|i|j|s|u
对多边形进行一定处理。
-Sbwidth 计算缓冲多边形,width 为缓冲区的宽度
-Sh 对带孔的多边形进行标记并重置其顶点顺序(只是为了方便绘制)
-Si 返回多边形的交集,结果是闭合的
-Su 返回多边形的并,结果也是闭合的
-Ss 使用日期变更线(180 度经线)剖分多边形
-Sj 将使用日期变更线剖分后的多边形合并
注1 :只有 -Sb, -Sh 和 -Ss 已经实现,其他选项还未实现。
注2 :-Sb 是纯笛卡尔运算,因此 width 的单位和数据单位相同。对 地理坐标而言,width 必须是以度为单位;或者将坐标投影后进行该操作,再 转换为地理坐标。
- -T[clippolygon]
使用给定的多边形 clippolygon 裁剪多边形,结果可能不是闭合的多边形。 与 -R 选项同时使用时,同时参与裁剪。
- -V[level] (more …)
设置 verbose 等级 [w]
- -Wdist[unit][+f|+l]
对多段线的第一段和最后一段以其原本的方位角进行延长, dist 为延长距离, unit 为单位(仅限地理坐标)。 对于地理坐标,可以使用 distf[unit]/distl[unit] 语法分别设置起始段和结尾段延长的距离和单位。 +f 和 +l 分别表示只在起始段或者结尾段延长,默认在两端都延长。
- -acol=name[,…] (more …)
设置非空间数据项与数据列之间的对应关系
- -bi[ncols][type][w][+l|b] (more …)
设置二进制输入数据的格式
- -bo[ncols][type][w][+l|b] (more …)
设置二进制输出的数据格式
- -d[i|o]nodata (more …)
将输入数据中等于 nodata 的记录替换为 NaN,或将输出数据中值为 NaN 的记录替换为 nodata
- -e[~]“pattern” | -e[~]/regexp/[i] (more …)
筛选或剔除匹配指定模式的数据记录
- -f[i|o]colinfo (more …)
指定输入或输出列的数据类型
- -g[a]x|y|d|X|Y|D|[col]zgap[+n|p] (more …)
确定数据或线段的间断
- -h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle] (more …)
跳过或生成指定数目的头段记录
- -icols[+l][+sscale][+ooffset][,…][,t[word]] (more …)
设置输入数据列及简单变换(0表示第一列,t 表示文本列)
- -je|f|g (more …)
设置球面距离的计算方式
- -ocols[,…][,t[word]] (more …)
设置输出数据列(0表示第一列,t 表示文本列)
- -q[i|o][~]rows[+ccol][+a|f|s] (more …)
筛选输入或输出的行或数据范围
- -s[cols][+a|+r] (more …)
设置 NaN 记录的处理方式
- -:[i|o] (more …)
交换输入或输出中的第一和第二列
- -^ 或 -
显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数
距离单位
点位于多边形内/外
为了确定点在多边形内,外或在边界上,GMT 会平衡数据类型以及多边形形状等因素来 确定算法。对于笛卡尔坐标,GMT 使用 non-zero winding 算法,该算法非常快。对于 地理坐标,如果多边形不包括两极点且多边形的经度范围不超过 360 度,同样使用该 算法。否则,GMT 会采用 full spherical ray-shooting 方法。
示例
确定远程澳大利亚国界线构成的多边形的中心点和面积
gmt spatial @GSHHS_h_Australia.txt -fg -Qk
将 lines.txt
文件中的线转换为闭合的多边形
gmt spatial lines.txt -F > polygons.txt
计算 polygons.txt
文件中的所有多边形的面积
gmt spatial polygons.txt -Q > areas.txt
使用与上例同样的文件,将面积写到段头信息中,同时将所有的多边形的顶点顺序转换为 逆时针
gmt spatial polygons.txt -Q+h -E+p > areas.txt
计算 janmayen_land_full.txt
文件中所有多边形的面积,并把面积写到头段信息
中,以面积对这些多边形从大到小排列,并只保留面积大于 1000 平方米的多边形
gmt spatial -Qe+h+p+c1000+sd -V janmayen_land_full.txt > largest_pols.txt
计算文件 A.txt
和文件 B.txt
的相交点
gmt spatial A.txt B.txt -Ie > crossovers.txt
以多边形文件 B.txt
裁剪多边形文件 A.txt
,输出结果为线
gmt spatial A.txt -TB.txt > line.txt
如果某多边形中存在有孔的多边形,首先对其中的有孔多边形进行标记并重置顶点顺序, 以便后续的绘图或填充
gmt spatial file.txt -Sh > organized_file.txt
注意事项
GDAL/GMT 格式的文件被认为是完整的数据集,因此在使用该模块时,不能同时输入多个 该格式的文件。正确的做法是先使用 gmtconvert 模块转换为普通的表数据, 然后再使用该模块。