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);

Descrição

Retorna uma versão da geometria dada com o algorítimo Douglas-Peucker.Evitrá a criação de geometrias derivadas (polígonos, em particular) que sejam inválidas. Só irá fazer algo com (multi)lines, (multi)polígonos e multipontos, mas você pode usar com qualquer tipo de geometria. Já que ocorre a simplificação em uma base objeto por objeto, você também pode alimentar uma GeometryCollection para esta função.

Desempenhado pelo módulo GEOS.

Disponibilidade: 1.3.3

Exemplos

É o mesmo exemplo de Simplificar, mas vemos que Preserva a Topologia previne uma simplificação exagerada. O círculo pode se tornar, no máximo, um quadrado.

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
                

Veja também.

ST_Simplify