ST_SETEFFECTIVEAREA
📄字数 778
👁️阅读量 加载中...
功能描述
使用 Visvalingam-Whyatt 算法设置每个顶点的有效区域。有效区域存储为顶点的 M 值。
语法格式
sql
GEOMETRY ST_SETEFFECTIVEAREA(GEOMETRY geom, DOUBLE tolerance = 0, INTEGER set_area = 1);参数说明
- geom:目标 GEOMETRY 对象。
- tolerance:容差。可选,默认为:0,返回完整的几何图形。如果设置,则将返回简化的几何图形,仅包含有效区域大于或等于阈值的顶点。
函数返回类型
GEOMETRY 类型
使用说明
- 该函数可用于任何类型的几何图形(包括GeometryCollections),但只有线和多边形元素会被简化。
- 返回的几何图形可能会失去其简单性(参见ST_IsSimple),拓扑可能不会被保留,并且多边形结果可能是无效的(参见ST_IsValid)。
- 使用 ST_SimplifyPreserveTopology 来保留拓扑并确保有效性。
- 输出几何图形将丢失原始的 M 值。
- 该函数处理 3D,三维度会影响有效区域。
示例
计算 LineString 的有效区域。 因为使用阈值为零,所以返回输入几何体中的所有顶点。
sql
SQL> select ST_AsText(ST_SetEffectiveArea(geom)) all_pts, ST_AsText(ST_SetEffectiveArea(geom,30) ) thrshld_30
FROM (SELECT 'LINESTRING(5 2, 3 8, 6 20, 7 25, 10 10)'::geometry geom) As foo;
+------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------+
| ALL_PTS | THRSHLD_30 |
+------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------+
| LINESTRING M (5 2 3.402823466385289e+38,3 8 29,6 20 1.5,7 25 49.5,10 10 3.402823466385289e+38) | LINESTRING M (5 2 3.402823466385289e+38,7 25 49.5,10 10 3.402823466385289e+38) |
+------------------------------------------------------------------------------------------------+--------------------------------------------------------------------------------+
(1 row)