Centroidi di poligoni concavi

classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

Centroidi di poligoni concavi

Massimiliano Moraca
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 :)

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
[hidden email]
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
Ingegnere, consulente GIS e ciclista urbano
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

pigreco
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 :)

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/
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

Marco
In reply to this post by Massimiliano Moraca
Prova con calcolatore di campi usando la funzione:
 point_on_surface(  $geometry )

Il giorno ven 2 nov 2018 alle ore 08:55 Massimiliano Moraca <
[hidden email]> 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 :)
>
> -----
> Ingegnere, consulente GIS e ciclista urbano
> --
> Sent from:
> http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
> _______________________________________________
> [hidden email]
> 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
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

Massimiliano Moraca
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 <
[hidden email]> 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 <
> [hidden email]> 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 :)
>>
>> -----
>> Ingegnere, consulente GIS e ciclista urbano
>> --
>> Sent from:
>> http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
>> _______________________________________________
>> [hidden email]
>> 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
>
>
_______________________________________________
[hidden email]
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
Ingegnere, consulente GIS e ciclista urbano
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

Ivano
In reply to this post by Massimiliano Moraca
Ciao,
geometricamente il risultato è corretto, ma puoi usare:
st_closestpoint(geom, st_centroid(geom))
Queso ti permette di garantirti  che il punto restituito (condizione di
prossimità al centroide effettivo), possa trovarsi all'interno o almeno sul
bordo del poligono.
Puoi anche provare ad utilizzare :
ST_Within(St_PointOnSurface(surface), surface)
per verificare se il risultato è True/False  dipendententemente da quali
sono i tuoi obiettivi.

Saluti.
*_______________________________________________________________*

*                      dott. Ivano GIULIANO*
GIS & Data Science - Environmental and Urban Planner

*The information contained in this e-mail message is confidential and
intended only for the use of the individual or entity named above. If you
are not the intended recipient, please notify us immediately by telephone
or e-mail and destroy this communication. Due to the way of the
transmission, we do not undertake any liability with respect to the secrecy
and confidentiality of the information contained in this e-mail message.*




Il giorno ven 2 nov 2018 alle ore 08:55 Massimiliano Moraca <
[hidden email]> 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 :)
>
> -----
> Ingegnere, consulente GIS e ciclista urbano
> --
> Sent from:
> http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
> _______________________________________________
> [hidden email]
> 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
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

Marco
In reply to this post by Massimiliano Moraca
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 <
[hidden email]> 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 <
> [hidden email]> 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 <
>> [hidden email]> 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 :)
>>>
>>> -----
>>> Ingegnere, consulente GIS e ciclista urbano
>>> --
>>> Sent from:
>>> http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
>>> _______________________________________________
>>> [hidden email]
>>> 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
>>
>>
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

a.furieri
In reply to this post by Massimiliano Moraca
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
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

Massimiliano Moraca
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>

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
[hidden email]
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
Ingegnere, consulente GIS e ciclista urbano
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

Ivano
Ciao,
non è una ricentratura,

ST_PointOnSurface()e ST_Centroid() sono di genere punti diversi, anche su
poligoni convessi.

Ivano

--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
[hidden email]
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
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

Massimiliano Moraca
Grazie per la precisazione :)

Il giorno ven 2 nov 2018 alle ore 13:38 Ivano <[hidden email]> ha
scritto:

> Ciao,
> non è una ricentratura,
>
> ST_PointOnSurface()e ST_Centroid() sono di genere punti diversi, anche su
> poligoni convessi.
>
> Ivano
>
> --
> Sent from:
> http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
> _______________________________________________
> [hidden email]
> 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
_______________________________________________
[hidden email]
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
Ingegnere, consulente GIS e ciclista urbano
Reply | Threaded
Open this post in threaded view
|

Re: Centroidi di poligoni concavi

Massimiliano Moraca
Ragazzi ecco lo scopo della mia richiesta di stamattina[0]. Dovevo fare uno
spatial join preciso e nel mio caso il solo ST_Centroid non andava bene. Ne
ho approfittato e anche grazie alle vostre indicazioni ho fatto un piccolo
video al volo. Spero sia gradito ed utile.

PS: siete nei credits :)


[0] https://youtu.be/7g4kMoEySH8

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/
_______________________________________________
[hidden email]
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
Ingegnere, consulente GIS e ciclista urbano