名称

ST_Simplify — 使用道格拉斯-普克算法返回几何的简化版本。

语法

geometry ST_Simplify(geometry geomA, float tolerance);

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

说明

使用道格拉斯-普克算法返回给定几何的“简化”版本。实际上只对(多)线和(多)面进行处理,但你可以安全地对任何类型的几何调用它。由于简化是基于对象逐个进行的,因此你还可以向此函数提供几何集合。

“保留已折叠”标志将保留那些在给定容差下本来太小的对象。例如,一条 1 米长的线使用 10 米的容差进行简化。如果 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_IsSimpleST_SimplifyPreserveTopologyST_SimplifyVW,拓扑 ST_Simplify