Name

ST_Simplify — 使用Douglas-Peucker算法返回几何体的简化版本。

Synopsis

geometry ST_Simplify(geometry geomA, float tolerance);

geometry ST_Simplify(geometry geomA, float tolerance, boolean preserveCollapsed);

描述

使用Douglas-Peucker算法返回给定几何体的简化版本。我实际上只对(多)线和(多)多边形做了一些事情,但你可以安全地用任何类型的几何体调用它。由于简化是在逐个对象的基础上进行的,因此您还可以将GeometryCollection提供给此函数。

“保留折叠”标志将保留原本会在给定公差的情况下太小的对象。例如,一条1米长的线路简化为10M公差。如果 preserveCollapsed 参数指定为True,则该行不会消失。此标志对于渲染引擎非常有用,以避免大量非常小的对象从地图上消失,留下令人惊讶的间隙。

[Note]

请注意,返回的几何可能会失去简单性(请参见 ST_IsSimple )

[Note]

注意:拓扑可能不会保留,并可能导致无效的几何图形。使用(请参见 ST_SimplifyPreserveTopology )以保持拓扑结构。

可用性:1.2.2

示例

过于简化的圆变成了三角形,中间是八角形,

SELECT ST_Npoints(geom) AS np_before,
       ST_NPoints(ST_Simplify(geom,0.1)) AS np01_notbadcircle,
       ST_NPoints(ST_Simplify(geom,0.5)) AS np05_notquitecircle,
       ST_NPoints(ST_Simplify(geom,1)) AS np1_octagon,
       ST_NPoints(ST_Simplify(geom,10)) AS np10_triangle,
       (ST_Simplify(geom,100) is null) AS  np100_geometrygoesaway
  FROM
    (SELECT ST_Buffer('POINT(1 3)', 10,12) As geom) AS foo;

 np_before | np01_notbadcircle | np05_notquitecircle | np1_octagon | np10_triangle | np100_geometrygoesaway
-----------+-------------------+---------------------+-------------+---------------+------------------------
        49 |                33 |                  17 |           9 |             4 | t
      

另请参阅

ST_IsSimple, ST_SimplifyPreserveTopology, ST_SimplifyVW, Topology ST_Simplify