sphtriangulate

贡献者:

周茂


官方文档:

sphtriangulate

简介:

创建球面 Delaunay 三角网或 Voronoi 图

Delaunay 三角网 是 Delaunay 三角化的结果。Delaunay 三角化是一种空间三角剖分算法。该算法的优点在于能避免三角网结果中出现“极瘦” 的三角形。

Voronoi 图 又称泰森多边形,由 Delaunay 三角网中连接两相邻点线段的中垂线组成的连续多边形组成。

sphtriangulate 读取一个或者多个经纬度坐标文件并进行球面 Delaunay 三角化。-Qv 选项可进步一生成 Voronoi 图。通常,多边形输出结果为闭合的并且可填充,使用 -T 选项则输出构成多边形的弧段而非多边形。

语法

gmt sphtriangulate [ table ] [ -A ] [ -C ] [ -D ] [ -Lunit ] [ -Nfile ] [ -Qd|v ] [ -T ] [ -V[level] ] [ -bbinary ] [ -dnodata[+ccol] ] [ -eregexp ] [ -hheaders ] [ -iflags ] [ -jflags ] [ -qiflags ] [ -rreg ] [ -sflags ] [ -:[i|o] ] [ --PAR=value ]

必选选项

table

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

可选选项

-A

计算球面三角的面积或多边形(见 -Q )的面积并输出到段信息中 [默认不计算面积]。面积单位见 -L 选项。

-C

用于节省内存。该模块默认在运算过程中同时保存地理坐标和笛卡尔坐标,但对于大型数据集,这可能会占据很大内存,因此使用该选项可以只保留其中一种坐标以节省内存,必要的时候 GMT 会自动实现坐标转换。

-D

用于删掉重复点 [默认不删除]。

-Lunit

指定距离和面积计算的单位,可选项包括 e (m), f (foot), k (km), M (mile),n (nautical mile),u (survey foot),或 d (spherical degree)。除非设置了 -je ,否则使用球面近似距离;在这种情况下,计算面积前将纬度转换为自定义的纬度。当单位设置为度时,面积的结果为球面度。

-Nfile

将多边形信息写到 file 文件中。对于Delaunay 三角网,相关信息包括:每个三角形三个定点的编号(若设置 -A 还包括三角形面积);对于 Voronoi ,包括节点坐标( -A )选项使用同上。如果输出文件格式为 ASCII,这些信息都显示在段信息中,并可将整个结果输出到标准输出,无需使用 -N 选项;如果输出文件为二进制文件,则 -N 选项是必须的。

-Qd|v

d 选项为计算 Delaunay 三角网,v 选项为计算 Voronoi 图 [默认使用 d ]。

-T

将结果输出为弧段 [默认输出闭合的三角形或者多边形]。当使用 -A 选项时,同时计算弧段的长度并写到段信息中,单位见 -L 选项。

-V[level] (more …)

设置 verbose 等级 [w]

-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 …)

筛选或剔除匹配指定模式的数据记录

-h[i|o][n][+c][+d][+msegheader][+rremark][+ttitle] (more …)

跳过或生成指定数目的头段记录

-je|f|g (more …)

设置球面距离的计算方式

-qi[~]rows[+ccol][+a|f|s] (more …)

筛选输入的行或数据范围

-s[cols][+a|+r] (more …)

设置 NaN 记录的处理方式

-:[i|o] (more …)

交换输入或输出中的第一和第二列

-r[g|p] (more …)

设置网格配置方式 [默认为网格线配准]

-^-

显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -

-++

显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明

-? 或无参数

显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明

--PAR=value

临时修改GMT参数的值,可重复多次使用。参数列表见 配置参数

示例

从远程数据文件 hotspots.txt 中创建球面三角网,并绘制

gmt sphtriangulate @hotspots.txt -Qd -T | gmt plot -Rg -JG-120/-30/7i -Bafg -W3p -pdf map

三角化 testdata.txt 中的点,创建 Voroni 图并绘制

gmt sphtriangulate testdata.txt -Qv | gmt plot -Rg -JG30/30/6i -L -W1p -Bag -pdf testdata

基于包含多段记录的数据文件 globalnodes.txt 计算 Delaunay 三角网,并计算每个三角形的面积,输出到段信息中

gmt sphtriangulate globalnodes.txt -Qd -A > global_tri.txt

除上述示例外, GMT 官方示例 35示例 48 也使用了该模块。

注意事项

多边形或三角形面积的计算使用了 STRIPACK 算法。该算法需要输入中不包含重复点。 blockmean 等模块可以将多个接近的点合并成单个点。sphtriangulate-D 选项也可以删除重复点,但是这通过对点的坐标精确比较实现,对大型数据集来说,运行可能会很慢。STRIPACK 算法在检测到重复点时,会直接退出执行。

参考文献

Renka, R, J., 1997, Algorithm 772: STRIPACK: Delaunay Triangulation and Voronoi Diagram on the Surface of a Sphere, AMC Trans. Math. Software, 23(3), 416-434.

相关模块

triangiulate, sphdistance