ST_Simplify — Returns a simplified version of a geometry, using the Douglas-Peucker algorithm.

`geometry `

geometry **ST_Simplify**(`geomA`, float `tolerance``)`

;

`geometry `

geometry **ST_Simplify**(`geomA`, float `tolerance`, boolean `preserveCollapsed``)`

;

Returns a "simplified" version of the given geometry using the Douglas-Peucker algorithm. Will actually do something only with (multi)lines and (multi)polygons but you can safely call it with any kind of geometry. Since simplification occurs on a object-by-object basis you can also feed a GeometryCollection to this function.

The "preserve collapsed" flag will retain objects that would otherwise
be too small given the tolerance. For example, a 1m long line simplified with a 10m
tolerance. If `preserveCollapsed`

argument is
specified as true, the line will not disappear.
This flag is useful for rendering engines, to avoid having large numbers of very
small objects disappear from a map leaving surprising gaps.

Note that returned geometry might lose its simplicity (see ST_IsSimple) |

Note topology may not be preserved and may result in invalid geometries. Use (see ST_SimplifyPreserveTopology) to preserve topology. |

Availability: 1.2.2

A circle simplified too much becomes a triangle, medium an octagon,

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