[Gfoss] problema topologico

Andrea Peri aperi2007 a gmail.com
Gio 18 Feb 2010 19:17:30 CET


>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 אטלעש
-----------------
-------------- parte successiva --------------
Un allegato HTML ט stato rimosso...
URL: <http://lists.faunalia.it/pipermail/gfoss/attachments/20100218/a2c50c5b/attachment.htm>


Maggiori informazioni sulla lista Gfoss