[Gfoss] problema topologico

>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](http://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 :slight_smile:

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 àèìòù

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 :slight_smile:

Ciao,

Stefano