ST_SimplifyPreserveTopology
Prev | 8.14. Geometry Processing | Next

## Name

ST_SimplifyPreserveTopology — Returns a simplified and valid version of a geometry, using the Douglas-Peucker algorithm.

## Synopsis

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

## Description

Returns a "simplified" version of the given geometry using the Douglas-Peucker algorithm. Will avoid creating derived geometries (polygons in particular) that are invalid. 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.

Performed by the GEOS module.

Availability: 1.3.3

## Examples

Same example as Simplify, but we see Preserve Topology prevents oversimplification. The circle can at most become a square.

    SELECT ST_Npoints(geom) As np_before, ST_NPoints(ST_SimplifyPreserveTopology(geom,0.1)) As np01_notbadcircle, ST_NPoints(ST_SimplifyPreserveTopology(geom,0.5)) As np05_notquitecircle,
    ST_NPoints(ST_SimplifyPreserveTopology(geom,1)) As np1_octagon, ST_NPoints(ST_SimplifyPreserveTopology(geom,10)) As np10_square,
    ST_NPoints(ST_SimplifyPreserveTopology(geom,100)) As  np100_stillsquare
    FROM (SELECT ST_Buffer('POINT(1 3)', 10,12) As geom) As foo;

    --result--
     np_before | np01_notbadcircle | np05_notquitecircle | np1_octagon | np10_square | np100_stillsquare
    -----------+-------------------+---------------------+-------------+---------------+-------------------
            49 |                33 |                  17 |           9 |             5 |                 5

## See Also

ST_Simplify

Prev | Up | Next
ST_Simplify | Home | ST_SimplifyPolygonHull