使用Douglas-Peucker算法简化一个给定的Geometry对象,并返回。
语法
geometry ST_Simplify(geometry geomA , float tolerance , boolean preserveCollapsed);
参数
参数名称 | 描述 |
---|---|
geomA | 目标Geometry对象。 |
tolerance | 简化容差。 |
preserveCollapsed | 标志位,是否保留过小的对象。 |
描述
- 该函数实际上只支持(Multi)Line、(Multi)Polygon和MultiPoint类型对象,但是你可以安全地对任何Geometry对象使用该函数。
- 由于简化操作是逐个对象进行的,因此您还可以将GeometryCollection应用于该函数。
- 当Geometry对象的尺度远小于容差时,如果启用保留标志位,将不会消失。
该标志对于渲染引擎很有用,可避免大量非常小的对象从地图上消失从而留下异常的间隙。
- 返回的Geometry对象可能会丢失简单性。
- 输入对象拓扑结构可能会变化,也可能会产生无效的Geometry对象。
可以使用ST_SimplifyPreserveTopology来维持输入对象的拓扑结构。
示例
不同容差简化效果对比:
select g,ST_Simplify(g,0.25),
ST_Simplify(g,0.5)
from (select 'LINESTRING(0 0,2 2,3 1,3.5 1.5,5 0,5.25 0.25,5.5 0)'::geometry as g) as t;