SQL ottenere attributi tramite geometria

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

SQL ottenere attributi tramite geometria

Luca Delucchi
Ciao a tutti,

avrei bisogno di passare degli attributi da alcuni elementi ad altri
nella stessa tabella e l'unico modo per fare il match è tramite le
geometrie, queste combaciano perfettamente anche se in alcuni casi
sono solo porzioni.
I dati provengono da OSM e importati in PostGIS tramite osm2pgsql, io
dovrei passare le informazioni di una linea in un'altra linea che è
solo una porzione della prima.

Ho provato con ST_Overlaps ma mi ritorna troppi pochi valori (29), io
me ne aspetto migliaia, la query che ho usato è la seguente

select
  i.highway, l.route, l.ref
from
  planet_osm_line as i,
  (select route, ref, way from planet_osm_line where route='hiking') as l
where
  highway in ('path') and ST_Overlaps(i.way, l.way);

qualcuno mi dice dove sbaglio?

grazie

--
ciao
Luca

http://gis.cri.fmach.it/delucchi/
www.lucadelu.org
_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: SQL ottenere attributi tramite geometria

Marco Li Volsi
Ciao, domandone:
  • le linee "destinazione" sono strettamente contenute dentro le linee "sorgente" oppure sporgono un po'?
  • una linea "destinazione" si sovrappone (anche parzialmente) con solo una linea "sorgente"?

Il 05/11/2015 07:20, Luca Delucchi ha scritto:
Ciao a tutti,

avrei bisogno di passare degli attributi da alcuni elementi ad altri
nella stessa tabella e l'unico modo per fare il match è tramite le
geometrie, queste combaciano perfettamente anche se in alcuni casi
sono solo porzioni.
I dati provengono da OSM e importati in PostGIS tramite osm2pgsql, io
dovrei passare le informazioni di una linea in un'altra linea che è
solo una porzione della prima.

Ho provato con ST_Overlaps ma mi ritorna troppi pochi valori (29), io
me ne aspetto migliaia, la query che ho usato è la seguente

select
  i.highway, l.route, l.ref
from
  planet_osm_line as i,
  (select route, ref, way from planet_osm_line where route='hiking') as l
where
  highway in ('path') and ST_Overlaps(i.way, l.way);

qualcuno mi dice dove sbaglio?

grazie



_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: SQL ottenere attributi tramite geometria

Andrea Peri

Che intendi per "sporgere" ?
Le linee sono monodimensionali e non hanno spessore.
Ma forse ti riferivi a un tratto che fuoriesce dalla sovrapposizione ?

A.

Il 05 nov 2015 11:53 AM, "Marco Li Volsi" <[hidden email]> ha scritto:
Ciao, domandone:
  • le linee "destinazione" sono strettamente contenute dentro le linee "sorgente" oppure sporgono un po'?
  • una linea "destinazione" si sovrappone (anche parzialmente) con solo una linea "sorgente"?

Il 05/11/2015 07:20, Luca Delucchi ha scritto:
Ciao a tutti,

avrei bisogno di passare degli attributi da alcuni elementi ad altri
nella stessa tabella e l'unico modo per fare il match è tramite le
geometrie, queste combaciano perfettamente anche se in alcuni casi
sono solo porzioni.
I dati provengono da OSM e importati in PostGIS tramite osm2pgsql, io
dovrei passare le informazioni di una linea in un'altra linea che è
solo una porzione della prima.

Ho provato con ST_Overlaps ma mi ritorna troppi pochi valori (29), io
me ne aspetto migliaia, la query che ho usato è la seguente

select
  i.highway, l.route, l.ref
from
  planet_osm_line as i,
  (select route, ref, way from planet_osm_line where route='hiking') as l
where
  highway in ('path') and ST_Overlaps(i.way, l.way);

qualcuno mi dice dove sbaglio?

grazie



_______________________________________________
[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.
786 iscritti al 30.9.2015

_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: SQL ottenere attributi tramite geometria

Marco Li Volsi
esattamente:
            ---------------------------
                ------------------------------

Il 05/11/2015 12:01, Andrea Peri ha scritto:

Che intendi per "sporgere" ?
Le linee sono monodimensionali e non hanno spessore.
Ma forse ti riferivi a un tratto che fuoriesce dalla sovrapposizione ?

A.

Il 05 nov 2015 11:53 AM, "Marco Li Volsi" <[hidden email]> ha scritto:
Ciao, domandone:
  • le linee "destinazione" sono strettamente contenute dentro le linee "sorgente" oppure sporgono un po'?
  • una linea "destinazione" si sovrappone (anche parzialmente) con solo una linea "sorgente"?

Il 05/11/2015 07:20, Luca Delucchi ha scritto:
Ciao a tutti,

avrei bisogno di passare degli attributi da alcuni elementi ad altri
nella stessa tabella e l'unico modo per fare il match è tramite le
geometrie, queste combaciano perfettamente anche se in alcuni casi
sono solo porzioni.
I dati provengono da OSM e importati in PostGIS tramite osm2pgsql, io
dovrei passare le informazioni di una linea in un'altra linea che è
solo una porzione della prima.

Ho provato con ST_Overlaps ma mi ritorna troppi pochi valori (29), io
me ne aspetto migliaia, la query che ho usato è la seguente

select
  i.highway, l.route, l.ref
from
  planet_osm_line as i,
  (select route, ref, way from planet_osm_line where route='hiking') as l
where
  highway in ('path') and ST_Overlaps(i.way, l.way);

qualcuno mi dice dove sbaglio?

grazie



_______________________________________________
[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.
786 iscritti al 30.9.2015


_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: SQL ottenere attributi tramite geometria

Andrea Peri
In reply to this post by Luca Delucchi

Secondo me sei on presenza di una situazione di linee che non collimano esattamente. Il che può succedere se i vertici delle due linee confrontate non coincidono.

Come controprova USA la funzione sharedpath che ti ritorna due collezioni.
Una dei tratti che coincidono e una dei tratti che non coincidono.
La somma ti darà la linea intera.
Se va come pensò sarà quasi tutto nella parte che non coincide.

Il 05 nov 2015 7:21 AM, "Luca Delucchi" <[hidden email]> ha scritto:
Ciao a tutti,

avrei bisogno di passare degli attributi da alcuni elementi ad altri
nella stessa tabella e l'unico modo per fare il match è tramite le
geometrie, queste combaciano perfettamente anche se in alcuni casi
sono solo porzioni.
I dati provengono da OSM e importati in PostGIS tramite osm2pgsql, io
dovrei passare le informazioni di una linea in un'altra linea che è
solo una porzione della prima.

Ho provato con ST_Overlaps ma mi ritorna troppi pochi valori (29), io
me ne aspetto migliaia, la query che ho usato è la seguente

select
  i.highway, l.route, l.ref
from
  planet_osm_line as i,
  (select route, ref, way from planet_osm_line where route='hiking') as l
where
  highway in ('path') and ST_Overlaps(i.way, l.way);

qualcuno mi dice dove sbaglio?

grazie

--
ciao
Luca

http://gis.cri.fmach.it/delucchi/
www.lucadelu.org
_______________________________________________
[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.
786 iscritti al 30.9.2015

_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: SQL ottenere attributi tramite geometria

Andrea Peri

Interseca gli prende anche roba che si incrocia e anche i tratti in contatto sui nodi start/end.

Il 05 nov 2015 12:29 PM, "Amedeo Fadini" <[hidden email]> ha scritto:
2015-11-05 12:06 GMT+01:00 Andrea Peri <[hidden email]>:
> Secondo me sei on presenza di una situazione di linee che non collimano
> esattamente. Il che può succedere se i vertici delle due linee confrontate
> non coincidono.
Ma dalla query si capisce che le geometrie vengono dalla stessa tabella...
Possono essere le stesse linee digitate da mapper diversi?
Se fosse così con ST_intesects() non dovrebbe risolvere?
Magari serve filtrare i risultati per tipo di geometria (escludendo i punti)...

amefad

_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: SQL ottenere attributi tramite geometria

Luca Delucchi
In reply to this post by Marco Li Volsi
2015-11-05 11:53 GMT+01:00 Marco Li Volsi <[hidden email]>:
> Ciao, domandone:
>

ciao

> le linee "destinazione" sono strettamente contenute dentro le linee
> "sorgente" oppure sporgono un po'?

no dovrebbero essere completamente contenute

> una linea "destinazione" si sovrappone (anche parzialmente) con solo una
> linea "sorgente"?
>

non è detto (ecco questo è un punto a cui non avevo pensato)

--
ciao
Luca

http://gis.cri.fmach.it/delucchi/
www.lucadelu.org
_______________________________________________
[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.
786 iscritti al 30.9.2015
Reply | Threaded
Open this post in threaded view
|

Re: SQL ottenere attributi tramite geometria

Luca Delucchi
In reply to this post by Andrea Peri
2015-11-05 12:06 GMT+01:00 Andrea Peri <[hidden email]>:
> Secondo me sei on presenza di una situazione di linee che non collimano
> esattamente. Il che può succedere se i vertici delle due linee confrontate
> non coincidono.
>

utilizzando ST_Within invece di ST_Overlaps ottengo un ottimo
risultato (quasi perfetto), solo alcune linee  non vengono prese in
considerazione,

> Come controprova USA la funzione sharedpath che ti ritorna due collezioni.

bella funzione, ma poi come posso usare il risultato di questa funzione?


--
ciao
Luca

http://gis.cri.fmach.it/delucchi/
www.lucadelu.org
_______________________________________________
[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.
786 iscritti al 30.9.2015