[Gfoss] calcolo e rappresentazione del percentuale del bosco_QGIS o GRASS

Ciao a tutti!

Si tratta di un problema che ho risolto in modo mooooooolto complicato e penso che ci sia una soluzione più semplice. Forse c’è un modulo di GRASS che può fare questo lavoro.

Suppongo di avere un bacino idrografico (o la superficie di un comune, di una regione, di un Paese ecc.) per cui ho un’altro strato che contiene la distribuzione dei boschi o dello spazio costruito, per esempio. Vorrei ottenere il percentuale del bosco o dello spazio edificato per ogni kmq (o per ogni 2 kmq, 0,5 kmq ecc.) per tutta la superficie del bacino/comune ecc. Questo risultato deve essere un nuovo strato che contenga la superficie analizzata divisa in quadrati (la dimensione a scelta dell’utente) e i valori calcolati per poter ottenere una rappresentazione cartografica classificando i quadrati in base ai valori.

Se non si può ottenere il percentuale, almeno la superficie boscata/costruita per ogni quadrato (1 kmq, 0,5 kmq ecc.)! La stessa cosa per la lunghezza totale della rete idrografica per ogni kmq (km rete idrografica/kmq di superficia del bacino).

Mi sembra che gli utenti ArcGIS ottengano automaticamente queste carte tematiche.

Gli strati di partenza sono vettoriali, ma posso trasformarli in raster. Posso anche ottenere la griglia con fTools.

Vi ringrazio in anticipo,
Gabriela

In QGIS master c’e’ zonal stats, penso che ti aiuti.
Saluti.

···
-- 
Paolo Cavallini
See: [http://www.faunalia.it/pc](http://www.faunalia.it/pc)

2012/3/4 Paolo Cavallini <cavallini@faunalia.it>:

Il 04/03/2012 16:27, Gabriela Osaci Costache ha scritto:

Ciao a tutti!

Si tratta di un problema che ho risolto in modo mooooooolto complicato e
penso che ci sia una soluzione più semplice. Forse c'è un modulo di GRASS
che può fare questo lavoro.

In QGIS master c'e' zonal stats, penso che ti aiuti.

In GRASS ugualmente zonal statistics:
http://grass.osgeo.org/grass64/manuals/html64_user/v.rast.stats.html

Ciao
Markus

In QGIS master c’e’ zonal stats, penso che ti aiuti.

Paolo Cavallini

Grazie di cuore! Così è molto semplice, ma qualcosa non va sia in QGIS sia in GRASS.

Zonal stats mi ha calcolato il valore dell’area dei boschi per ogni quadrato di 1 kmq del bacino, ma non mi ha creato una nuova colonna con questi valori.

Facendo degli “scavi” ho scoperto “statistiche zonali” che richiede un raster e un vettore e un prefisso per la nuova colonna. Questo sì, mi ha creato nuove colonne con i valori calcolati (count, sum, mean). Ho usato il file dei boschi come raster e la superficie del bacino divisa in kmq come vettore. E’ stato molto semplice, solo che la superficie del bosco è sbagliata (per esempio, per un valore reale di 357011 m quadrati è stato calcolato 3570 non si sa che). Ripetendo la procedura per i fiumi, i valori della loro lunghezza per ogni kmq sono completamente sbagliati. Per esempio, per una lunghezza reale di 492,27 m è stato calcolato 97 (?), per 257,106 m - 49. Ho calcolato i valori reali dei fiumi usando linea di misura esistente in QGIS. Con zonal statist e statistiche zonali si ottengono gli stessi valori. Dove sbaglio?

In GRASS ugualmente zonal statistics:
> http://grass.osgeo.org/grass64/manuals/html64_user/v.rast.stats.html

Markus

Grazie di cuore anche a te! Per quanto riguarda i valori, la stessa cosa capita anche con “v.rast.stats”. Ho letto il manuale, dove si dice qualcosa del genere: la mappa vettoriale verrà rasterizzata in base alla risoluzione del raster (spero di aver tradotto bene; non so inglese). Non capisco! Io devo usare una mappa raster (i boschi) e una mappa vettoriale (il bacino diviso in kmq). Rasterizzando la mappa vettoriale ottengo due mappe raster! Come devo fare? Forse la risoluzione diversa è la causa degli errori di calcolo.

Saluti e grazie,
Gabriela

Puo’ darsi che sia un bug (lo strumento e’ nuovo): qualcuno puo’ per favore confermare, ed aprire un ticket, meglio se con un piccolissimo campione di esempio?
Grazie.

···
-- 
Paolo Cavallini
See: [http://www.faunalia.it/pc](http://www.faunalia.it/pc)

Il 07/03/2012 10:20, Paolo Cavallini ha scritto:

Facendo degli "scavi" ho scoperto "statistiche zonali" che richiede un raster e un
vettore e un prefisso per la nuova colonna. Questo sì, mi ha creato nuove colonne
con i valori calcolati (count, sum, mean). Ho usato il file dei boschi come raster
e la superficie del bacino divisa in kmq come vettore. E' stato molto semplice,
solo che la superficie del bosco è sbagliata (per esempio, per un valore reale di
357011 m quadrati è stato calcolato 3570 non si sa che). Ripetendo la procedura per
i fiumi, i valori della loro lunghezza per ogni kmq sono completamente sbagliati.
Per esempio, per una lunghezza reale di 492,27 m è stato calcolato 97 (?), per
257,106 m - 49. Ho calcolato i valori reali dei fiumi usando linea di misura
esistente in QGIS. Con zonal statist e statistiche zonali si ottengono gli stessi
valori. Dove sbaglio?

Puo' darsi che sia un bug (lo strumento e' nuovo): qualcuno puo' per favore
confermare, ed aprire un ticket, meglio se con un piccolissimo campione di esempio?

Nessuno conferma?
Saluti.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

Il 20/03/2012 16:15, Paolo Cavallini ha scritto:

i fiumi, i valori della loro lunghezza per ogni kmq sono completamente sbagliati.
Per esempio, per una lunghezza reale di 492,27 m è stato calcolato 97 (?), per
257,106 m - 49. Ho calcolato i valori reali dei fiumi usando linea di misura
esistente in QGIS. Con zonal statist e statistiche zonali si ottengono gli stessi
valori. Dove sbaglio?

Puo' darsi che sia un bug (lo strumento e' nuovo): qualcuno puo' per favore
confermare, ed aprire un ticket, meglio se con un piccolissimo campione di esempio?

Salve.
Se ci mandate un piccolissimo esempio di dati di prova, con i risultati
giusti e quelli sbagliati, verifichiamo ed eventualmente correggiamo.
Saluti, e grazie.

--
Paolo Cavallini
See: http://www.faunalia.it/pc

Ciao a tutti!

Nell’ultimo tempo ho fatto nuovi provi, ma la situazione è la stessa. Perché è già passato tanto tempo, riprendo il problema: dovevo calcolare il percentuale del bosco (oppure solo la superficie boscata, perché il percentuale si può ottenere tramite il calcolatore dei campi) per alcuni comuni/bacini o suddividendo un comune/bacino in maglie quadrate (1 kmq ciascuna). Sono partita da due vettoriali (.shp): lo strato dei comuni (o dei bacini o una griglia) e lo strato dei boschi, ambedue poligonali.

In lista Paolo e Markus mi avevano suggerito di usare ZonalStats, Statistiche zonali e v.rast.stats. Dopo le prime prove mi sono resa conto che Statistiche zonali e v.rast.stats erano proprio gli strumenti che cercavo, essendo molto facile da usarli, però, paragonando con le aree calcolate sia in QGIS (sui vettoriali) sia in gvSIG (per controllo), i risultati ottenuti erano sbagliati.

Devo precisare che per usare Statistiche zonali e v.rast.stats ho dovuto trasformare uno degli strati da vettore in raster. Dunque, ho usato: lo strato poligonale (.shp) dei comuni/o una griglia (1 kmq ciascun quadrato, realizzata con fTools) e lo strato raster dei boschi.

Risultati:

  1. Quando ho usato lo strato raster dei boschi ad una risoluzione di 10 (stabilita in GRASS) le aree calcolate sia con Statistiche zonali (SZ) sia con v.rast.stats erano 100 volte più piccole rispetto all’area reale (per esempio un quadrato di 1 kmq = 1 000 000 mq era calcolato come 10 000 mq).

  2. Cambiando la risoluzione del raster si ottengono valori differenti: con la risoluzione 1 (stabilita in GRASS) si ottengono i valori quasi reali, ma non per tutte le aree, per esempio:

  • 1 000 000 mq (valore reale, QGIS, gvSIG) - 1 000 000 mq (calcolato con SZ e con v.rast.stats - evviva!!!)
  • 999 990,76 mq (valore reale, QGIS, gvSIG) - 999 992 mq (calcolato con SZ e con v.rast.stats)
  • 762 933,02 mq (valore reale, QGIS, gvSIG) - 763 336 mq (calcolato con SZ e con v.rast.stats)
  • 335 316,97 mq (valore reale, QGIS, gvSIG) - 335 581 mq (calcolato con SZ e con v.rast.stats)
  • 241 915,87 mq (valore reale, QGIS, gvSIG) - 242 047 mq (calcolato con SZ e con v.rast.stats)
  1. Con una risoluzione del raster di 0,5 si ottengono valori quattro volte più grandi (!!!) rispetto al valore reale (comunque, per grandi regioni è difficile lavorare con questa risoluzione e anche con quella di 1,0).

  2. Anche per la lunghezza totale dei fiumi (.shp di tipo linea, rasterizzato, risol. 1,0) per ogni comune e per ogni maglia quadrata di 1 kmq si ottengono valori sbagliati (i più vicini alla realtà con risol. di 1,0): 12 m invece di 15 m ecc.

  3. Ho provato a rasterizzare anche lo strato dei comuni/e della griglia alla risoluzione del raster e trasformarla di nuovo in vettore ma niente è cambiato.

  4. Osservo che sia ZS che v.rast.stats e ZonalStats calcolano solo valori INTERI e non decimali (come r.report) per l’area. Ho provato con un DEM (risol. 10, risoluzione che per il calcolo delle area risulta completamente sbagliata) e per l’altitudine massima, minima e la differenza tra loro (range) può calcolare e inserire nella tabella i valori decimali corretti (per la carta dell’energia del rilievo).

Ho fatto centinaia di provi e non capisco dove sbaglio…qui casca l’asino.

Mi potete aiutare? Qualcuno conosce come devo fare? Mi sembra una cosa così semplice per un programma GIS…

Grazie,
Gabriela


Da: Paolo Cavallini cavallini@faunalia.it
A: gfoss@lists.gfoss.it
Inviato: Giovedì 26 Aprile 2012 13:25
Oggetto: Re: [Gfoss] calcolo e rappresentazione del percentuale del bosco_QGIS o GRASS

Il 20/03/2012 16:15, Paolo Cavallini ha scritto:

i fiumi, i valori della loro lunghezza per ogni kmq sono completamente sbagliati.
Per esempio, per una lunghezza reale di 492,27 m è stato calcolato 97 (?), per
257,106 m - 49. Ho calcolato i valori reali dei fiumi usando linea di misura
esistente in QGIS. Con zonal statist e statistiche zonali si ottengono gli stessi
valori. Dove sbaglio?

Puo’ darsi che sia un bug (lo strumento e’ nuovo): qualcuno puo’ per favore
confermare, ed aprire un ticket, meglio se con un piccolissimo campione di esempio?
Salve.
Se ci mandate un piccolissimo esempio di dati di prova, con i risultati
giusti e quelli sbagliati, verifichiamo ed eventualmente correggiamo.
Saluti, e grazie.


Paolo Cavallini
See: http://www.faunalia.it/pc


Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell’Associazione GFOSS.it.
584 iscritti al 7.4.2012

Il 14/05/2012 18:04, Gabriela Osaci Costache ha scritto:

passato tanto tempo, riprendo il problema: dovevo calcolare il percentuale del bosco
(oppure solo la superficie boscata, perché il percentuale si può ottenere tramite il
calcolatore dei campi) per alcuni comuni/bacini o suddividendo un comune/bacino in
maglie quadrate (1 kmq ciascuna). Sono partita da due vettoriali (.shp): lo strato
dei comuni (o dei bacini o una griglia) e lo strato dei boschi, ambedue poligonali.

Probabilmente non ho capito, ma se hai due vettori poligonali, perche' non fai
semplicemente un overlay vettoriale?
Per quanto riguarda comunue i valori forse errati del calcolo, credo che la cosa
migliore sia fare un piccolissimo esempio, e metterlo a disposizione, in modo che si
possano fare prove sugli stessi dati.
Grazie.
--
Paolo Cavallini - Faunalia
www.faunalia.eu
Full contact details at www.faunalia.eu/pc

Probabilmente non ho capito, ma se hai due vettori poligonali, perche’ non fai
semplicemente un overlay vettoriale?
Per quanto riguarda comunue i valori forse errati del calcolo, credo che la cosa
migliore sia fare un piccolissimo esempio, e metterlo a disposizione, in modo che si
possano fare prove sugli stessi dati.
Grazie.

Paolo Cavallini - Faunalia

Ciao, Paolo!

Hai capito perfettamente il problema. All’inizio, molto tempo fa (prima di chiedere l’aiuto) così ho fatto: overlay vettoriale. Allora, qual è il problema? Ti spiego:

  1. Facendo l’unione tra la griglia e i boschi il risultato (.shp) contiene per ogni quadrato sia le aree boscate sia le aree non boscate (le ultime non mi servono nel calcolo e mi imbrogliano). Anzi, nell’ultimo tempo l’unione di fTools mi dà errori (con celle vuote ecc.), ma si potrebbe usare v.overlay.or di GRASS (non era questo il mio problema).

  2. Facendo un’intersezione tra la griglia e i boschi (con fToolso con v.overlay.and) ottengo solo i boschi sovrapposti alla griglia (evviva!), MA per i quadrati in cui ci sono più “pezzi” di bosco c’è una riga nella tabella per ciascun “pezzo”, senza il TOTALE boscato per quel quadrato. Per esempio, nel quadrato “100” ci sono tre boschi, tutti e tre con lo stesso ID (100), ma scritti su tre righe diverse. C’è un metodo automatico per raggruppare i boschi appartenenti allo stesso quadrato in modo da calcolare automaticamente l’area totale per ciascun quadrato (come fa v.rast.stats)?

Per la rappresentazione cartografica finale non avevo bisogno della rappresentazione areale del bosco, ma della griglia vuota (poligono), colorata secondo i valori dell’area boscata. Dunque, in OpenOffice Calc ho calcolato il totale del bosco per ciascun quadrato (in base all’identità del quadrato) e questo valore l’ho inserito nella tabella della griglia iniziale, su una nuova colonna. Troppo “manuale” e complicato, ma non mi è venuta un’altra idea (ho imparato QGIS e un po’ di GRASS completamente da sola, dunque scusatemi tutti l’ignoranza)! Questo è il motivo per cui ho chiesto aiuto: per sapere un metodo più semplice.

Per quanto riguarda l’esempio, cosa devo inviarti? La griglia (.shp) e i boschi (.shp)? I risultati in GRASS?

Grazie mille,
Gabriela

On 18:28 Tue 15 May , Gabriela Osaci Costache wrote:

2. Facendo un'intersezione tra la griglia e i boschi (con fToolso con
v.overlay.and) ottengo solo i boschi sovrapposti alla griglia
(evviva!), MA per i quadrati in cui ci sono più "pezzi" di bosco c'è
una riga nella tabella per ciascun "pezzo", senza il TOTALE boscato
per quel quadrato. Per esempio, nel quadrato "100" ci sono tre boschi,
tutti e tre con lo stesso ID (100), ma scritti su tre righe diverse.
C'è un metodo automatico per raggruppare i boschiappartenenti allo
stesso quadrato in modo da calcolare automaticamente l'area totale
per ciascun quadrato (come fa v.rast.stats)?

Secondo me ti conviene utilizzare SQlite come database.
Fai un'interrogazione con la funzione di aggregazione sum

CREATE VIEW boschiPerQuadrato AS
SELECT IDquadrati, sum(boschi)
GROUP BY IDquadrati ;


Da: Marco Curreli marcocurreli@tiscali.it
A: gfoss@lists.gfoss.it
Inviato: Martedì 15 Maggio 2012 23:51

Secondo me ti conviene utilizzare SQlite come database.
Fai un’interrogazione con la funzione di aggregazione sum

CREATE VIEW boschiPerQuadrato AS
SELECT IDquadrati, sum(boschi)
GROUP BY IDquadrati ;

Grazie mille! Non ho usato mai SQlite e devo confessarti che per me postgis, spatialite, sqlite sono cinese :frowning: Lo so: vivo ancora nell’Età della Pietra…

Qualche minuto fa ho dato un’occhiata al manuale di QGIS (versione italiana), ma non sono riuscita a capire molto. Leggerò però con attenzione la settimana seguente (sperando di avere il tempo) e cercherò qualche tutorial su Internet. Se, per caso, conosci un tutorial in italiano (su come creare la database… insomma i primi passi) puoi mandarmi l’indirizzo? Grazie in anticipo.

Saluti,
Gabriela

Non conosco molto bene le funzioni avanzate di QGis, normalmente per
queste cose uso GRASS.

Io farei così:

- in grass, imposta la connessione al db sqlite con db.connect, è
  abbastanza semplice - dal menù database:
  gestione database --> connessione

- importa lo shapefile in grass; all'interno del db avrai la tabella del
  tematismo convertita dal dbf originario

Per quanto riguarda il linguaggio SQL, sqlite accetta tutte le più
comuni istruzioni sql; la documentazione la trovi in
http://www.sqlite.org/docs.html; la sintassi è descritta nel documento
"SQL Syntax".

A parer mio è più chiara la documentazione di PostgreSQL
http://www.postgresql.org/docs/9.1/static/index.html, guarda i primi due
capitoli, in cui è descritto il linguaggio SQL; la guida è fatta molto
bene, e tiene distinta la sintassi SQL standard, che è la stessa di
sqlite, da quella propria di Postgres.

Ciao,
  Marco

Grazie di cuore! Spero di farcela!

Saluti,
Gabriela


Da: Marco Curreli marcocurreli@tiscali.it
A: gfoss@lists.gfoss.it
Inviato: Mercoledì 16 Maggio 2012 23:05
Oggetto: Re: [Gfoss] calcolo e rappresentazione del percentuale del bosco_QGIS o GRASS

Non conosco molto bene le funzioni avanzate di QGis, normalmente per
queste cose uso GRASS.

Io farei così:

  • in grass, imposta la connessione al db sqlite con db.connect, è
    abbastanza semplice - dal menù database:
    gestione database → connessione

  • importa lo shapefile in grass; all’interno del db avrai la tabella del
    tematismo convertita dal dbf originario

Per quanto riguarda il linguaggio SQL, sqlite accetta tutte le più
comuni istruzioni sql; la documentazione la trovi in
http://www.sqlite.org/docs.html; la sintassi è descritta nel documento
“SQL Syntax”.

A parer mio è più chiara la documentazione di PostgreSQL
http://www.postgresql.org/docs/9.1/static/index.html, guarda i primi due
capitoli, in cui è descritto il linguaggio SQL; la guida è fatta molto
bene, e tiene distinta la sintassi SQL standard, che è la stessa di
sqlite, da quella propria di Postgres.

Ciao,
Marco


Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e’ una lista di discussione pubblica aperta a tutti.
Non inviate messaggi commerciali.
I messaggi di questa lista non rispecchiano necessariamente
le posizioni dell’Associazione GFOSS.it.
584 iscritti al 7.4.2012