[Gfoss] Centroidi di poligoni concavi
a.furieri a lqt.it
a.furieri a lqt.it
Ven 2 Nov 2018 10:58:32 CET
On Fri, 2 Nov 2018 09:20:08 +0100, Massimiliano Moraca wrote:
> Come così?
>
> point_on_surface( ST_Centroid( $geometry ) )
>
no, non cosi' ma cosa':
SELECT ST_PointOnSurface(geometry);
che tu usi PostGIS o SpatiaLite o QGIS ha ben poca importanza,
visto che in tutti i casi il lavoro vero e proprio viene
comunque delegato alla libreria GEOS.
la GEOS da parte sua supporta due diverse API che vengono
poi incapsulate all'interno delle corrispondenti funzioni SQL:
1. GEOSCentroid()
questa ritorna sempre il centroide geometricamente
corretto, che nel caso di poligoni concavi puo'
facilmente cadere all'esterno della figura
2. GEOSPointOnSurface()
invece questa per prima cosa prova a chiamare la
precedente, e poi verifica se il punto ottenuto
cade o meno all'interno della figura.
se il vincolo non e' verificato, allora prova a
generare ciclicamente altri punti fino a quando
non riesce a trovarne uno che effettivamente
cada all'interno della figura.
ovviamente questa seconda funzionalita' e' piu'
lenta della precedente, perche' puo' richiedere
elaborazioni piu' lunghe e complesse, ma in genere
si tratta di differenze abbastanza marginali.
ciao Sandro
Maggiori informazioni sulla lista
Gfoss