Os estados de documentação PostGIS que ST_PointOnSurface
retorna "um ponto garantido estar na superfície". Parece que essa função pode ser implementada trivialmente para fornecer resultados que satisfaçam a documentação, mas fornecem pouca utilidade no mundo real, embora eu esteja certo de que o PostGIS fornece uma implementação não trivial.
Esta introdução ao PostGIS fornece uma boa comparação e contraste ST_Centroid
com ST_PointOnSurface
e diz que "[ST_PointOnSurface] é substancialmente mais caro em termos de computação que a operação do centróide".
Existe uma explicação mais completa de como ST_PointOnSurface
é calculado? Estou usando ST_Centroid
, mas encontrei alguns casos extremos nos meus dados em que o centróide está fora da geometria. Acredito que esse ST_PointOnSurface
seja o substituto correto, mas o nome da função e a documentação deixam espaço para incertezas.
Além disso, a despesa computacional é ST_PointOnSurface
incorrida mesmo que o centróide já esteja dentro da geometria?
Respostas:
Com base em algumas experiências, acho que
ST_PointOnSurface()
funciona mais ou menos assim, se a geometria for um polígono:Isso pode não fazer sentido, então aqui está um esboço de um polígono com um raio dividindo-o nas partes norte e sul:
Assim,
ST_PointOnSurface()
eST_Centroid()
geralmente são pontos diferentes, mesmo em polígonos convexos.A única razão para a "superfície" no nome, eu acho, é que, se a geometria tiver linhas 3D, o resultado será simplesmente um dos vértices.
Concordo que mais explicações (e melhores nomes) teriam sido úteis e espero que um programador do GEOS possa lançar um pouco mais de luz sobre o assunto.
fonte