sql polilinee e indirizzi da polinee osm

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

sql polilinee e indirizzi da polinee osm

Falz
Ciao a tutti,
gentilmente volevo chiedervi dove sbaglio, ho due tabelle Spatialite:
-tubi (linestring)
-osm_roads (linestring)

In osm_roads, nel campo "name" sono ivi gli indirizzi.
Volevo popolare in una colonna "indirizzo" della tabella tubi, gli indirizzi civici delle polilinee di openstreetmap:

(select r.name
from osm_roads r, tubi t
where st_intersects(t.geom, st_buffer(r.geom, 20))=1) as indirizzo,

(select r.name
 from tubi t, (select name, st_buffer(geom, 20) as geom from osm_roads) r
 where st_intersects(t.geom, r.geom)) as indirizzo2

Il problema è che non funzionano bene le formule in spatialite...

Avete gentilmente idee migliori?
Grazie
Simone
_______________________________________________
[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: sql polilinee e indirizzi da polinee osm

pigreco
[hidden email] wrote

> Ciao a tutti,
> gentilmente volevo chiedervi dove sbaglio, ho due tabelle Spatialite:
> -tubi (linestring)
> -osm_roads (linestring)
>
> In osm_roads, nel campo "name" sono ivi gli indirizzi.
> Volevo popolare in una colonna "indirizzo" della tabella tubi, gli
> indirizzi civici delle polilinee di openstreetmap:
>
> (select r.name
> from osm_roads r, tubi t
> where st_intersects(t.geom, st_buffer(r.geom, 20))=1) as indirizzo,
>
> (select r.name
>  from tubi t, (select name, st_buffer(geom, 20) as geom from osm_roads) r
>  where st_intersects(t.geom, r.geom)) as indirizzo2
>
> Il problema è che non funzionano bene le formule in spatialite...
>
> Avete gentilmente idee migliori?
> Grazie

Ciao, personalmente proverei cosi:

update tubi set indirizzo =
(select r.name
from osm_roads r, tubi t
where st_intersects (r.geom, st_buffer (t.geom, 8 ))= 1
AND tubi.pk = t.pk);

ma è uno script poco efficiente, in caso di molte linee durerebbe tanto;
per ovviare basterebbe utilizzare le virtualKNN introdotte da Furieri a
partire da spatialite 4.4.

qui un esempio:
https://pigrecoinfinito.wordpress.com/2018/01/04/spatialite-e-virtualknn/

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