[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