Ottenere aree e ID intersezione poligoni

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Ottenere aree e ID intersezione poligoni

Maurizio Marchi-2
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
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

stefano campus
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.
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

Marco
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.
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

Marco
Marco wrote
....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).
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?
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

Giuliano Curti
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
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

stefano campus
Administrator
In reply to this post by Marco
Marco wrote
P.S. hai avuto modo di provare il suggerimento dato da Stefano Campus (cioè di usare SAGA 2.1.2)? Funziona?
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.
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

Sieradz
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!
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

stefano campus
Administrator
essendo in saga, si deve inserire entro i moduli disponibili di processing

s.
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

pcav
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
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

Marco
In reply to this post by stefano campus
stefano campus wrote
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.
Ottimo! ...il buon SAGA sa come farsi valere quando il gioco si fa duro.
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

Sieradz
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...)

:)
Reply | Threaded
Open this post in threaded view
|

Re: Ottenere aree e ID intersezione poligoni

Maurizio Marchi-2
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