Buongiorno a tutti, sollevo una questione che mi sta interessando per lavoro da qualche giorno. Faccio un esempio per spiegarmi meglio. Mettiamo di avere una serie di poligoni, più o meno regolari, assimilabili alla superficie coperta da ogni chioma di ciascun albero di un bosco. A causa della diversa altezza di ciascun albero e della vicinanza tra i fusti, tali poligoni si sovrapporranno parzialmente tra loro in modo irregolare. A ciascun albero ho dato in ID numerico e ciascun poligono ha la sua area.
Esiste in QGIS o GRASS il modo di analizzare le relazioni di sovrapposizione tra le aree di chioma? Avrei cioè bisogno di sapere ciascun poligono con quale altro si sovrappone e quanta è la superficie in comune.
Grazie 1000, un saluto Maurizio Marchi, Ph.D. student
Florence, Italy ID skype: maurizioxyz Ubuntu 14.04 LTS linux user 552742 _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
Administrator
|
magari è quello che serve a te:
in SAGA 2.1.2 Shapes-Polygons-->Polygon Self-Intersection Description Self-intersection of one layer's polygons. Uses the free and open source software library Clipper created by Angus Johnson. http://www.angusj.com/delphi/clipper.php http://sourceforge.net/projects/polyclipping/ saluti s. |
In reply to this post by Maurizio Marchi-2
Assumiamo, per semplicità, che la tabella attributi del tuo shapefile di poligoni abbia il solo campo (colonna) ID con assegnata la sequenza 1,2,3,...n.
Vai in Barra dei menù --> Vettore --> Unione e lancia la funzione, chiamando "unione.shp" il nuovo shapefile che si creerà. Nella tabella attributi dello shapefile "unione" ora ci saranno due campi, uno ID e l'altro ID_2, nei quali potrai leggere quale chioma si interseca con quali altre chiome (una o più di una). Se togli il riempimento con colore solido dei poligoni dello shapefile "unione" e selezioni le varie righe (record) della tabella attributi, nella Mappa della Vista potrai apprezzare il risultato anche graficamente (se invece tenti di selezionare con il cursore del mouse non ci riesci perchè quando clicchi sulle zone di intersezione ti si evidenziano sia le intersezioni che le chiome intersecanti). A questo punto, sempre nella tabella attributi dello shapefile "unione", con lo strumento "seleziona elementi usando un'espressione" scrivi questa stinga di selezione: "ID" = "ID_2" e lancia la selezione. Ti si evidenzieranno le chiome intersecanti. Rendi modificabile il layer e cancellale. Una volta cancellate le chiome intersecanti, nello shapefile "unione" ti resteranno i soli poligoni derivanti dalle intersezioni e nella relativa tabella attributi, per ogni record, potrai capire da quale chioma si origina ogni singola intersezione. A questo punto, per concludere, vi in Vettore --> Strumenti di geometria --> aggiungi colonne geometriche e nella tabella attributi ti si crea una colonna con la superficie di ogni poligono intersezione. |
Ho notato ora che in realtà non è proprio così perchè il comando unione (o anche il comando intersezione) ti restituisce, in tabella, per ogni record che crea, solo dati relativi a poligoni che scaturiscono dall'unione al max di due chiome, mentre ignora del tutto i poligoni che scaturiscono dall'unione (o dall'intersezione) di più di due chiome. Peccato. Il suggerimento che ti ho dato funziona a metà. P.S. hai avuto modo di provare il suggerimento dato da Stefano Campus (cioè di usare SAGA 2.1.2)? Funziona? |
In reply to this post by Marco
Il giorno Thu, 4 Sep 2014 08:26:46 -0700 (PDT)
Marco <[hidden email]> ha scritto: > Assumiamo, per semplicità, che la tabella attributi .... mi lancio senza ... paracadute, tanto per me è un gioco :-) con le soluzioni prospettate da Stefano e Marco, che mi sembrano centrare il tuo quesito, ottieni l'intersezione delle proiezioni, _non_ l'intersezione degli oggetti; la chioma 1 potrebbe essere ad una quota tale da non intersecare la chioma 2, anche se in pianta potrebbe sembrarlo; per un controllo un pò più reale(*) dovresti: a) individuare il centroide del poligono b) individuare la quota c) individuare il raggio del cerchio circoscritto al poligono d) se la distanza fra i due centroidi è maggiore della somma dei raggi non c'è intersezione delle chiome, altrimenti sì; e) i metodi di S. e M. detti sopra possono essere utili per fare una prima selezione dei casi da esaminare (forse può bastare anche un semplice controllo dei boundingbox); ovviamente si tratta di valutare ancora una volta se il gioco vale la candela :-) spero di essere atterrato senza tanti danni :-) ciao, giuliano (*) i realtà il metodo presuppone l'identificazione delle chiome con sfere, i cipressi forse rientrerebbero a fatica..... :-) _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
Administrator
|
In reply to this post by Marco
funziona! restituisce uno shape con tante geometrie quante sono le intersezioni e come attributo l'id dei poligoni originali da cui deriva. ovviamente le parti di poligoni che non si intersecano hanno come nuovo id solo quello originale. insomma, uno "union" completo :-) s. |
Su Ste', l'utile strumento che hai citato non è contenuto in Qgis 2.4...
Potresti contattare "chi di dovere" affinchè venga implementato nel kernel della futura 2.6..? Grazie! |
Administrator
|
essendo in saga, si deve inserire entro i moduli disponibili di processing
s. |
Il 05/09/2014 11:14, stefano campus ha scritto:
> essendo in saga, si deve inserire entro i moduli disponibili di processing aggiungerlo e' facile, basta guardare un comando simile esistente e fare una pull request. in ogni caso, e' opportuno aprire un ticket con una feature request. saluti. -- Paolo Cavallini - www.faunalia.eu Corsi QGIS e PostGIS: http://www.faunalia.eu/training.html _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
In reply to this post by stefano campus
Ottimo! ...il buon SAGA sa come farsi valere quando il gioco si fa duro. |
Cercando un modo per risolvere il problema col solo Qgis, avrei escogitato la seguente tecnica:
1] VETTORE => STRUMENTI DI GESTIONE DATI => DIVIDI VETTORE che crea N sotto-shape figlie a partire dal padre 2] VETTORE => STRUMENTI DI GEOPROCESSING => INTERSEZIONE che estrapola le parti in comune, a due a due. A titolo di prova, ho preso le regioni Istat, le ho semplificate e bufferate in modo che si sovrapponessero reciprocamente, ottenendo questi 20 micro-file: 20regioni.zip ...e qui mi sono bloccato. Ora, se esistesse un metodo "loop" per eseguire il punto 2 confrontando automaticamente la shape N-esima con le restanti (N-1), si otterrebbe il risultato di Saga. Ve lo lascio come simpatico enigma in vista dell'imminente weekend (altro che Sudoku...) :) |
In reply to this post by Maurizio Marchi-2
Grazie 1000 a tutti per i consigli, mi metto a sperimentare il tutto!! Saluti, maurizio _______________________________________________ [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. 666+40 iscritti al 5.6.2014 |
Free forum by Nabble | Edit this page |