[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