problema topologico

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

problema topologico

Stefano Salvador
... o almeno così credo :-)

Ho un layer composto da linee che spesso si intersecano tra loro, io vorrei che ad ogni intersezione le linee avessero un nodo. Con PostGIS sono riuscito ad estrarre tutte le intersezioni ma non so poi come aggiungerle alla linea nella giusta posizione, con GRASS invece ho provato con v.net ma senza successo.


Qualche idea ?


Ciao,

Stefano

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: problema topologico

mando
Se ti serve una cosa come l'allegato che ti ho messo, prova con qgis Strumenti > Strumenti di Analisi>Intersezioni linea.

ciao 
luca
2010/2/18 Stefano Salvador <[hidden email]>
... o almeno così credo :-)

Ho un layer composto da linee che spesso si intersecano tra loro, io vorrei che ad ogni intersezione le linee avessero un nodo. Con PostGIS sono riuscito ad estrarre tutte le intersezioni ma non so poi come aggiungerle alla linea nella giusta posizione, con GRASS invece ho provato con v.net ma senza successo.


Qualche idea ?


Ciao,

Stefano

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.

Schermata 2010-02-18 a 12.55.41.png (27K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: problema topologico

Andrea Peri
In reply to this post by Stefano Salvador
>Ho un layer composto da linee che spesso si intersecano tra loro, io vorrei
>che ad ogni intersezione le linee avessero un nodo. Con PostGIS sono
>riuscito ad estrarre tutte le intersezioni ma non so poi come aggiungerle
>alla linea nella giusta posizione, con GRASS invece ho provato con v.net ma

In Postgis il modo esiste.

Feci anche io delle prove al riguardo con poligoni archi e nodi.

Comunque per mettere a punto il tutto ci vuole del tempo, tanta pazienza e svariate prove.
Per cui se hai fretta ti conviene passare da altro ambiente :)

Comunque:

Si tratta di effettuare una serie di stringhe sql basate su varie nidificazioni di subquery e appoggiare i risultati su delle tabelle temporanee pe rtiutilizzarli
(poi alla fine cancelli e rimuovi le tabelle temporanee)

A grandissime linee:
selezioni le linee che si intersecano con un filtro usando

 ST_Intersects(a.geom,b.geom)=true

Le tagli con
ST_Multi(ST_Intersection(ST_Boundary(a.geom),b.geom)) as geom

Le butti in una tabella con geometria MultiLine.
Ci aggiungi un progressivo preso da una sequence per fare contento quell'impiastro di qgis.

Per i nodi
li inserisci in una tabella di punti in cui il primo e l'ultimo li identifichi trmaite una stringa wkt che crei al volo e usi per definire la geometria che popola la tabella dei punti.

La stringa wkt la ricavi con un costrutto sql di questo tipo:

ST_X(ST_PointN(b.geom,1)) || ' ' || ST_Y(ST_PointN(b.geom,1)) as coordinata_partenza
ST_X(ST_PointN(b.geom,ST_NPoints(b.geom))) || ' ' || ST_Y(ST_PointN(b.geom,ST_NPoints(b.geom))) as coordinata_finale

Ovviamente e' il festival delle query nidificate e con qualche tabella temporanea di appoggio su cui inserisci i dati per poi riprenderli con la successsiva query.

Ciao,


--
-----------------
Andrea Peri
. . . . . . . . .
qwerty àèìòù
-----------------


_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: problema topologico

Stefano Salvador



Le tagli con
ST_Multi(ST_Intersection(ST_Boundary(a.geom),b.geom)) as geom



Grazie Andrea,

questo era il passaggio che mi mancava, adesso sento di essere sulla strada giusta :-)


Ciao,


Stefano

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.
Reply | Threaded
Open this post in threaded view
|

Re: problema topologico

Andrea Peri
In reply to this post by Stefano Salvador
>/ ST_Multi(ST_Intersection(ST_Boundary(a.geom),b.geom)) as geom


OOps,

Rimuovi la funzione ST_Boundary altrimenti non funziona.

ST_Boundary serviva a me che facevo una cosa un po' differente, ma per il taglio delle linestring va levato.

Andrea.




/

_______________________________________________
Iscriviti all'associazione GFOSS.it: http://www.gfoss.it/drupal/iscrizione
[hidden email]
http://lists.faunalia.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell'Associazione GFOSS.it.