gmtsimplify¶
官方文件: | gmtsimplify |
---|---|
簡介: | 使用Douglas-Peucker算法對線段做簡化 |
gmtsimplify 模塊讀取一個或多個數據文件,並使用 Douglas-Peucker 算法對複雜多邊形進行簡化,用曲線近似表示爲一系列點並減少點的數量,並保證每個點與直線的偏離都在可容忍的範圍內。
語法¶
gmt simplify [ table ] -Ttolerance[unit] [ -V[level] ] [ -bbinary ] [ -dnodata ] [ -eregexp ] [ -fflags ] [ -ggaps ] [ -hheaders ] [ -iflags ] [ -oflags ] [ -:[i|o] ] [ --PAR=value ]
必須選項¶
- -Ttolerance[unit]
- 指定最大所能容忍的誤差,即任意數據點與簡化後的線段間的距離小於該值。默認單位爲用戶單位。對於地理數據(例如海岸線)可以指定其它距離單位。
可選選項¶
- table
- 一个或多个ASCII或二进制表数据。若不提供表数据,则会从标准输入中读取。
- -V[level] (more …)
- 设置 verbose 等级 [c]
- -bi[ncols][t] (more …)
- 设置二进制输入数据的格式
- -bo[ncols][type] (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[u][+n|p] (more …)
- 确定数据或线段的间断
- -h[i|o][n][+c][+d][+rremark][+rtitle] (more …)
- 跳过或生成指定数目的头段记录
- -icols[+l][+sscale][+ooffset][,…][,t[word]] (more …)
- 设置输入数据列及简单变换(0表示第一列,t 表示文本列)
- -ocols[,…][,t[word]] (more …)
- 设置输出数据列(0表示第一列,t 表示文本列)
- -:[i|o] (more …)
- 交换输入或输出中的第1和第二列。
- -^ 或 -
- 显示简短的帮助信息,包括模块简介和基本语法信息(Windows下只能使用 -)
- -+ 或 +
- 显示帮助信息,包括模块简介、基本语法以及模块特有选项的说明
- -? 或无参数
- 显示完整的帮助信息,包括模块简介、基本语法以及所有选项的说明
- --PAR=value
- 临时修改GMT参数的值,可重复多次使用。参数列表见 gmt.conf
示例¶
將澳大利亞的高精度海岸線數據簡化,容忍誤差爲500km:
gmt simplify @GSHHS_h_Australia.txt -T500k
將笛卡爾線段簡化,可容忍誤差爲0.45:
gmt simplify xylines.d -T0.45 > new_xylines.d
注意事項¶
gmtsimplify 對於線段和閉合多邊形的處理方式略有區別。顯式閉合的線段(即線段的首尾座標相同)會被認爲是閉合多邊形,否則視爲線段。被當作多邊形的線段可以被簡化爲無面積的3點多邊形,其不會被輸出。
BUGS¶
Douglas-Peucker 算法的已知問題是交叉點的處理,即其無法保證簡化後的線段不自我交叉,多個線段也可能互相交叉。此外,當前的算法實現只支持Flat Earth距離。
參考文獻¶
Douglas, D. H., and T. K. Peucker, Algorithms for the reduction of the number of points required to represent a digitized line of its caricature, Can. Cartogr., 10, 112-122, 1973.