[Gfoss] Centroidi di poligoni concavi

Buongiorno a tutti!

Devo generare con PostGIS i centroidi di alcuni poligoni, una parte di essi
sono estremamente concavi per cui il centroide ricade all'esterno del
poligono "padre". Con QGIS risolvo la questione con il plugin realcentroids
ma volendo fare questo in PostGIS la sola funzione ST_Centroid non basta.

Mi sapete dire se è possibile forzarla a generare il punto all'interno del
poligono padre?
Se ci sono altre alternative proponete pure :slight_smile:

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/

Massimiliano Moraca wrote

Buongiorno a tutti!

Devo generare con PostGIS i centroidi di alcuni poligoni, una parte di
essi
sono estremamente concavi per cui il centroide ricade all'esterno del
poligono "padre". Con QGIS risolvo la questione con il plugin
realcentroids
ma volendo fare questo in PostGIS la sola funzione ST_Centroid non basta.

Mi sapete dire se è possibile forzarla a generare il punto all'interno del
poligono padre?
Se ci sono altre alternative proponete pure :slight_smile:

Ciao,
PostGIS: ST_PointOnSurface --->
https://postgis.net/docs/ST_PointOnSurface.html
SpatiaLite: ST_PointOnSurface ---->
http://www.gaia-gis.it/gaia-sins/spatialite-sql-4.2.0.html
QGIS: point_on_surface(geom) ----> https://goo.gl/71cRD8

SALUTI

-----
https://pigrecoinfinito.wordpress.com/
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/

Prova con calcolatore di campi usando la funzione:
point_on_surface( $geometry )

Il giorno ven 2 nov 2018 alle ore 08:55 Massimiliano Moraca <
massimilianomoraca@gmail.com> ha scritto:

Buongiorno a tutti!

Devo generare con PostGIS i centroidi di alcuni poligoni, una parte di essi
sono estremamente concavi per cui il centroide ricade all'esterno del
poligono "padre". Con QGIS risolvo la questione con il plugin realcentroids
ma volendo fare questo in PostGIS la sola funzione ST_Centroid non basta.

Mi sapete dire se è possibile forzarla a generare il punto all'interno del
poligono padre?
Se ci sono altre alternative proponete pure :slight_smile:

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from:
http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni
dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017

Come così?

point_on_surface( ST_Centroid( $geometry ) )

Non torno al pc prima di qualche ora e non posso quindi verificare...

Il giorno ven 2 nov 2018 alle ore 09:18 Marco Spaziani <
spaziani.marco@gmail.com> ha scritto:

Prova con calcolatore di campi usando la funzione:
point_on_surface( $geometry )

Il giorno ven 2 nov 2018 alle ore 08:55 Massimiliano Moraca <
massimilianomoraca@gmail.com> ha scritto:

Buongiorno a tutti!

Devo generare con PostGIS i centroidi di alcuni poligoni, una parte di
essi
sono estremamente concavi per cui il centroide ricade all'esterno del
poligono "padre". Con QGIS risolvo la questione con il plugin
realcentroids
ma volendo fare questo in PostGIS la sola funzione ST_Centroid non basta.

Mi sapete dire se è possibile forzarla a generare il punto all'interno del
poligono padre?
Se ci sono altre alternative proponete pure :slight_smile:

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from:
http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni
dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017

https://gis.stackexchange.com/questions/193027/postgis-get-a-point-inside-a-line-or-polygon

Il giorno ven 2 nov 2018 alle ore 09:20 Massimiliano Moraca <
massimilianomoraca@gmail.com> ha scritto:

Come così?

point_on_surface( ST_Centroid( $geometry ) )

Non torno al pc prima di qualche ora e non posso quindi verificare...

Il giorno ven 2 nov 2018 alle ore 09:18 Marco Spaziani <
spaziani.marco@gmail.com> ha scritto:

Prova con calcolatore di campi usando la funzione:
point_on_surface( $geometry )

Il giorno ven 2 nov 2018 alle ore 08:55 Massimiliano Moraca <
massimilianomoraca@gmail.com> ha scritto:

Buongiorno a tutti!

Devo generare con PostGIS i centroidi di alcuni poligoni, una parte di
essi
sono estremamente concavi per cui il centroide ricade all'esterno del
poligono "padre". Con QGIS risolvo la questione con il plugin
realcentroids
ma volendo fare questo in PostGIS la sola funzione ST_Centroid non basta.

Mi sapete dire se è possibile forzarla a generare il punto all'interno
del
poligono padre?
Se ci sono altre alternative proponete pure :slight_smile:

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from:
http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni
dell'Associazione GFOSS.it.
796 iscritti al 28/12/2017

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

Grazie mille a tutti, alla fine ho usato ST_PointOnSurface ed ho notato che
vengono ricentrati anche i centroidi che cadono dentro il poligono e
generati da ST_Centroid.

Nell'immagine che vedete i punti verdi sono quelli posizionati da
ST_PointOnSurface mentre i blu sono quelli di ST_Centroid.

<http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/file/t395848/export.png&gt;

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/