ST_Simplify — 使用 Douglas-Peucker 算法返回几何的简化版本。
geometry ST_Simplify(
geometry geomA, float tolerance)
;
geometry ST_Simplify(
geometry geomA, float tolerance, boolean preserveCollapsed)
;
使用 Douglas-Peucker 算法返回给定几何图形的“简化”版本的函数。这个函数的目标是避免创建无效的派生几何(尤其是多边形)。通常,这个函数会用于(多)线和(多)多边形,但你也可以安全地将任何类型的几何图形传递给它。由于简化是以对象为单位进行的,因此你还可以将 GeometryCollection(几何对象的集合)传递给此函数。
"保留已折叠" 标志将保留在给定容差下本来会被认为太小而被删除的对象。例如,使用 10 米的容差对 1 米长的线进行简化。如果指定了 preserveCollapsed
参数为 true,则该线将不会消失。这个标志对于渲染引擎非常有用,以避免在地图上有大量非常小的对象消失,留下意外的空隙。
![]() |
|
请注意,返回的几何图形可能会失去其简单性(请参阅ST_IsSimple) |
![]() |
|
请注意,拓扑可能不会保留,并可能导致无效的几何图形。 使用(请参阅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