## Name

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

## Synopsis

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

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

## Description

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

## Examples

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

```SELECT ST_Npoints(geom) AS np_before,
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
```