Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_SETEFFECTIVEAREA

📄字数 778
👁️阅读量 加载中...

功能描述

使用 Visvalingam-Whyatt 算法设置每个顶点的有效区域。有效区域存储为顶点的 M 值。

语法格式

sql
GEOMETRY ST_SETEFFECTIVEAREA(GEOMETRY geom, DOUBLE tolerance = 0, INTEGER set_area = 1);

参数说明

  • geom:目标 GEOMETRY 对象。
  • tolerance:容差。可选,默认为:0,返回完整的几何图形。如果设置,则将返回简化的几何图形,仅包含有效区域大于或等于阈值的顶点。

函数返回类型

GEOMETRY 类型

使用说明

  1. 该函数可用于任何类型的几何图形(包括GeometryCollections),但只有线和多边形元素会被简化。
  2. 返回的几何图形可能会失去其简单性(参见ST_IsSimple),拓扑可能不会被保留,并且多边形结果可能是无效的(参见ST_IsValid)。
  3. 使用 ST_SimplifyPreserveTopology 来保留拓扑并确保有效性。
  4. 输出几何图形将丢失原始的 M 值。
  5. 该函数处理 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)