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或二进制表数据。若不提供表数据,则会从标准输入中读取。
可选选项
- -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 ]。
- -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.