- Categorias:
ST_SIMPLIFY¶
Dado um objeto de entrada GEOGRAPHY que representa uma linha ou polígono, retorna uma aproximação mais simples do objeto. A função identifica e remove os vértices selecionados, resultando em um objeto semelhante com menos vértices.
Por exemplo, se o objeto de entrada for um polígono com 50 vértices, ST_SIMPLIFY poderá retornar um polígono mais simples com apenas 20 desses vértices.
Ao simplificar um objeto, a função remove um vértice somente se a distância entre esse vértice e a borda resultante da remoção desse vértice estiver dentro da tolerância especificada.
Sintaxe¶
ST_SIMPLIFY( <geography_expression>, <tolerance> [ , <preserve_collapsed> ] )
Argumentos¶
Obrigatório:
geography_expression
O objeto GEOGRAPHY a ser simplificado.
Dependendo do tipo do objeto GEOGRAPHY, ST_SIMPLIFY tem o seguinte efeito:
Tipo de objeto
Efeito de ST_SIMPLIFY
LineString MultiLineString, polígono ou MultiPolygon
ST_SIMPLIFY aplica o algoritmo de simplificação
Ponto ou MultiPoint
ST_SIMPLIFY não tem nenhum efeito.
GeometryCollection ou FeatureCollection
ST_SIMPLIFY aplica o algoritmo de simplificação a cada objeto da coleção.
tolerance
A distância máxima em metros entre um vértice e a borda resultante da remoção do vértice. Se a distância exceder esta tolerância para um vértice, ST_SIMPLIFY manterá esse vértice no objeto simplificado.
Opcional:
preserve_collapsed
Se
TRUE
, são retidos objetos que de outra forma seriam muito pequenos dada a tolerância.Por exemplo, quando
preserve_collapsed
éFALSE
etolerance
é10
(metros), uma linha de 1m é reduzida a um ponto no objeto simplificado. Quandopreserve_collapsed
éTRUE
, a linha é preservada no objeto simplificado.Padrão:
FALSE
.
Retornos¶
A função retorna um valor do tipo GEOGRAPHY.
Exemplos¶
Os exemplos nesta seção mostram a saída em formato WKT:
alter session set GEOGRAPHY_OUTPUT_FORMAT='WKT';
O exemplo a seguir retorna um LineString simplificado que tem menos vértices do que o LineString original. No objeto simplificado, um vértice é omitido se a distância entre o vértice e a borda que substitui o vértice for inferior a 1.000 metros.
SELECT ST_SIMPLIFY( TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'), 1000); +----------------------------------------------------------------------------------------------------+ | ST_SIMPLIFY( | | TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'), | | 1000) | |----------------------------------------------------------------------------------------------------| | LINESTRING(-122.306067 37.55412,-122.325879 37.586852) | +----------------------------------------------------------------------------------------------------+