Sei sulla pagina 1di 61

Universit degli Studi di Parma Dipartimento di Scienze della Terra

A. Clerici

GRASS6.0
esercizi introduttivi

Gruppo Utenti Italiani di GRASS

Dicembre 2005

Indice

Premessa Introduzione

. ..... ...........

p.3 p.3 p.6

Caratteristiche di GRASS

Esercizio 1. Visualizzazione delle carte

.................................................. p.8 .... p.14

Esercizio 2. Apertura di pi monitor e creazione di cornici Esercizio 3. Interrogazione delle carte

............................ p.16

Esercizio 4. Copia, ridenominazione, cancellazione, unione e conversione di carte raster e vettoriali ...................................................................................... p.18 .... p.21

Esercizio 5. Modifica della regione di lavoro e utilizzo di una maschera Esercizio 6. Un esempio pratico di utilizzo

.. p.25 .... p.34

Esercizio 7. Gestione degli attributi delle carte vettoriali Esercizio 8. Operazioni con carte vettoriali Esercizio 9. Operazioni di stampa

.. p.40

... p.43 ... p.46

Esercizio 10. Creazione di uno script di shell

Esercizio 11. Modalit alternative d'immissione dei comandi: linterfaccia grafica GIS Manager Soluzione degli esercizi di verifica Elenco dei comandi utilizzati .. p.48

.... p.55 ... p.59

Appendice A. Installazione della Location spearfish60 . p.60

Premessa
Il manualetto destinato a chi si appresta ad utilizzare GRASS per la prima volta, ed illustra i comandi, con i relativi parametri ed opzioni, d'uso pi frequente. E strutturato in modo che gli esercizi possano essere eseguiti senza lassistenza di un tutore, anche se ovviamente la presenza di una persona esperta pu risultare utile in alcune circostanze. Il ricorso al manuale dellutente di GRASS (disponibile anche in linea) pu comunque chiarire la maggior parte dei dubbi e aiutare a risolvere molti problemi, oltre a permettere lapprofondimento di ogni singolo comando. Si suppone che gli esercizi vengano eseguiti utilizzando la versione 6.0 di GRASS; in particolare la versione utilizzata nella stesura del presente manuale la 6.0.2 cvs del 3.12.2005. Negli esercizi vengono utilizzate le carte raster e vettoriali contenuti nel DATABASE (LOCATION) spearfish60, disponibile presso uno dei siti (o dei mirrors) di GRASS. In appendice vengono illustrate le modalit per linstallazione del Database. Alla fine di ogni esercizio viene proposta una verifica delle conoscenze acquisite. Le soluzioni sono riportate alla fine del manuale.

Introduzione
Definizione Un Sistema Informativo Geografico, o GIS (da Geographic Information System), un Sistema informatico per l'acquisizione, conservazione, analisi e visualizzazione di dati geografici. Viene definito sistema in quanto costituito da un insieme di componenti, hardware, software e umane, che interagiscono fra loro. Caratteristica essenziale di un GIS la capacit di gestire dati geografici, o georeferenziati, vale a dire dati relativi ad elementi od oggetti della superficie terrestre la cui posizione definita da un insieme di coordinate. Il modello dei dati In un GIS tutti gli oggetti presenti sulla superficie terrestre sono rappresentati mediante tre caratteristiche essenziali: la geometria, la topologia e gli attributi. La geometria riproduce la forma degli oggetti e viene ricondotta a tre elementi di base: punto, linea (o arco) e poligono (o area). Un punto viene utilizzato per riprodurre elementi puntiformi, come ad esempio un punto quotato, un pozzo, o la posizione di una stazione meteorologica. La linea definisce elementi a sviluppo lineare come una strada, una linea elettrica o un corso d'acqua. Il poligono definisce aree chiuse, come un edificio, un lago o un affioramento geologico. La topologia l'insieme delle informazioni che riguardano le mutue relazioni spaziali tra i diversi elementi come la connessione, l'adiacenza o l'inclusione. Ad esempio viene specificato se un arco comune a due poligoni adiacenti, o se un poligono completamente racchiuso all'interno di un altro. Gli attributi rappresentano i dati descrittivi dei singoli oggetti reali. Per un elemento puntiforme rappresentante un pozzo, gli attributi possono ad esempio essere costituiti dalla profondit, l'anno di perforazione e il proprietario, per una stazione meteorologica la temperatura dell'aria o le precipitazioni, per una strada la larghezza, la categoria o il tipo di pavimentazione. La rappresentazione dei dati Nei GIS possono essere utilizzate due diverse tecniche di rappresentazione dei dati: vettoriale e raster. Nella rappresentazione vettoriale un punto definito da una coppia di coordinate mentre una linea o un poligono dalle coordinate di un insieme di punti che quando connessi fra loro con segmenti retti, formano la rappresentazione grafica dell'oggetto (fig.1). Generalmente i due punti alle estremit di una linea vengono definiti nodi, i punti intermedi di una spezzata vengono definiti vertici. In GRASS unimmagine vettoriale costituita da un insieme di caratteristiche geometriche e di attributi. La geometria salvata in uno specifico formato vettoriale di GRASS (formato nativo). E comunque possibile importare e trasformare molti altri formati (ArcInfo-Coverages, CSV, DGN, SHAPE files, GML, MapInfo, MySQL, ODBC, OGDI, PostgreSQL/PostGIS, S57, SDTS, TIGER, UK .NTF,VRT). In alternativa, la geometria pu anche essere salvata in un database PostGIS. Inoltre alcuni formati GIS, come ad es. i files SHAPE, possono essere utilizzati direttamente senza la conversione di formato. Tutti gli attributi delle immagini vettoriali sono salvati in table allinterno di un database e collegati alle caratteristiche geometriche mediante una DBMI (DataBase Management Interface). Attualmente sono gestibili in GRASS i seguenti DBMS (Database Menagement Systems): DBF (DataBase File), PostgreSQL, MySQL, ODBC, mediante i driver denominati dbf, pg e ogr. Il formato DBF il cui driver, dbf, sempre presente, rappresenta il driver di default. Nella rappresentazione raster l'area considerata suddivisa in un insieme di celle, generalmente di forma quadrata, in ciascuna delle quali viene registrato l'attributo (o categoria) presente. Ad ogni cella viene quindi attribuito un valore numerico (fig.2). 3

In GRASS ad ogni oggetto di una carta raster pu essere eventualmente attribuita, oltre al valore di categoria, unetichetta descrittiva. I formati vettoriale e raster sono salvati in direttori diversi, e sono gestiti mediante comandi diversi, per cui possibile assegnare lo stesso nome ad una carta vettoriale e ad una raster senza problemi di conflittualit.

Fig.1 Rappresentazione vettoriale di punti, linee (archi) e aree (poligoni)

Fig.2 Rappresentazione raster di punti, linee (archi) e aree (poligoni). 4

In un GIS le diverse categorie di oggetti presenti sulla superficie terrestre sono distinti in elaborati diversi, o carte. Ogni elaborato contiene quindi una diversa caratteristica o tematismo, come l'idrografia, laltimetria, ecc. (fig.3). E tuttavia possibile linserimento di diversi tematismi in una stessa carta suddividendoli in layer distinti.

Fig.3 Rappresentazione del territorio mediante tematismi distinti, passibili di elaborazione tramite un GIS. I dati in forma raster occupano generalmente pi memoria dei dati in forma vettoriale in quanto ad ogni cella viene assegnato un attributo, anche se esistono tecniche di compattazione dei dati che limitano questo inconveniente. Il vantaggio che lo spazio geografico risulta uniformemente definito in un modo semplice e prevedibile. In tal modo i sistemi raster hanno generalmente pi potenza analitica dei sistemi vettoriali nell'analisi dello spazio continuo e sono pertanto adatti all'analisi di dati che presentano una continua variabilit nello spazio, come le temperature, le precipitazioni, l'altimetria ecc. Questi sistemi trovano quindi unapplicazione ottimale nella valutazione di problemi che includono numerose combinazioni matematiche di dati appartenenti a diversi tematismi. Sono quindi eccellenti nella valutazione di modelli ambientali. Infine, dal momento che le immagini da satellite impiegano una struttura raster, la maggior parte di questi sistemi pu facilmente incorporare ed elaborare dati di questo tipo. Componenti di un GIS Per quanto all'utente un GIS pu apparire come un unico programma di calcolo, in realt esso tipicamente suddiviso in un certo numero di componenti, o elementi, con funzioni diverse. Nella maggior parte dei GIS si possono comunemente individuare le seguenti componenti essenziali: 1) Un database spaziale e degli attributi. E' costituito da un'insieme di carte e di informazioni associate, in forma digitale. Dal momento che nel database sono contenuti oggetti, o elementi, della superficie terrestre, possibile distinguere un database spaziale che descrive la geografia (forma e posizione) degli oggetti, ed un database degli attributi, che descrive le caratteristiche, o qualit, degli stessi oggetti. Cos, ad esempio, possibile avere il perimetro di una porzione di superficie poligonale definito nel database spaziale mediante le coordinate dei vertici e alcune sue caratteristiche, come la litologia, il tipo di suolo, la pendenza media, contenute nel database degli attributi. 2) Un sistema di visualizzazione Contiene quelle componenti che permettono la visualizzazione di elementi del database per produrre carte sia sullo schermo che su supporto cartaceo tramite una stampante o un plotter. Generalmente un GIS non produce rappresentazioni sofisticate, delegando ad altri sistemi specificamente dedicati la produzione di elaborati di alta qualit. 3) Un sistema di digitalizzazione 5

E' costituito da un programma per convertire dati cartografici esistenti su supporto cartaceo in forma digitale e quindi passibili di elaborazione tramite il GIS. La digitalizzazione viene effettuata comunemente mediante una tavola grafica (o digitalizzatore) o direttamente da schermo su immagini acquisite tramite scanner. 4) Un sistema di analisi geografica Caratteristica fondamentale di un GIS, che lo distingue dai tradizionali Sistemi di Gestione delle Basi di Dati (DBMS, Data Base Menagement System), la capacit di confrontare differenti entit in base alla loro topologia. Si immagini ad esempio che di un determinato territorio siano disponibili due elaborati digitalizzati, rappresentanti il primo la distribuzione dei vari tipi vegetali, il secondo la distribuzione delle varie litologie. I due tematismi, vegetazione e litologia, non presentano ovviamente la stessa topologia; in altre parole gli appezzamenti con i diversi tipi di vegetazione hanno forma e distribuzione diversa dalle porzioni di territorio occupate dai diversi tipi litologici. Con un GIS possibile individuare quelle aree in cui un particolare tipo vegetale risulta associato ad una particolare litologia. Questo tipo di operazione, molto usato nei GIS, definito sovrapposizione (overlay), in quanto equivale all'operazione manuale di sovrapposizione di carte trasparenti contenenti tematismi diversi. E' un'operazione non effettuabile con i comuni DBMS per la mancanza delle informazioni topologiche degli oggetti analizzati.

Caratteristiche di GRASS
GRASS (da Geographical Resources Analysis Support System) un "open source" GIS acquisibile ed utilizzabile gratuitamente ed costituito da circa 400 moduli, o comandi, diversi. GRASS funziona sotto sistema operativo Unix (o similari), sia su work station che su personal computer e sotto sistema operativo Windows mediante cygwin, che simula lambiente Unix. Comandi e documentazione Nel GRASS Reference Manual (consultabile anche in linea) contenuta la descrizione di ciascun comando di GRASS. Il tipo di comando indicato dalla prima lettera, come specificato nella seguente tabella. Prefisso d. db. g. i. ps. r. r3. v. Funzione Visualizzazione Gestione del database Operazioni di tipo generale Elaborazione di immagini Creazione di carte in formato Postscript Elaborazione di carte raster Elaborazione dati raster 3D (voxel) Elaborazione di carte vettoriali Esempio d.rast Visualizza una carta raster db.tables Lista tutte le table di un database g.list Lista le carte disponibili i.rectify Rettifica le immagini ps.map Crea una carta in formato Postscript r.reclass Modifica le categorie di una carta raster r3.info Riporta le informazioni relative ad una carta raster 3D v.patch Unisce pi carte vettoriali

Nel manuale i comandi vengono riportati in ordine alfabetico e per ciascun comando vengono brevemente descritti gli scopi, la sintassi, le modalit di utilizzo, eventualmente accompagnati da note esplicative, esempi ed un elenco dei comandi correlati.. Per molti dei comandi, o delle procedure, pi complessi sono stati scritti specifici tutorials, come ad esempio per il comando v.digit (modulo per la digitalizzazione). Organizzazione dei dati In GRASS i dati sono contenuti in una directory Unix definita DATABASE (ad esempio /home/grass.data). Il DATABASE suddiviso in sottodirettori definiti LOCATIONS. Ciascuna LOCATION rappresenta un DATABASE indipendente la cui denominazione viene definita dall'utente.

DATABASE (ad es. /home/grass.data) | ----------------------------------------------------------------------------| | | | | LOCATION1 LOCATION2 LOCATION3 .......... .........

Un criterio per definire la suddivisione di un DATABASE in LOCATIONS potrebbe essere ad esempio quello geografico. Pertanto uno studio condotto sull'intero territorio italiano, potrebbe avere le LOCATIONS rappresentate dalle diverse Regioni italiane. 6

Ciascuna LOCATION a sua volta suddivisa in sottodirettori definiti MAPSETS:

DATABASE (/home/grass.data) | ----------------------------------------------------------------------------------------| | LOCATION1 LOCATION2 | | --------------------------------------------------------------------------------------------------| | | | | | | PERMANENT MAPSET1 MAPSET2 . PERMANENT MAPSET1 ............
Ogni volta che viene creata dallutente una nuova LOCATION, viene creato automaticamente un Mapset denominato PERMANENT, che pu essere modificato solo dal creatore della LOCATION e contiene diverse informazioni, quali ad es. le coordinate della regione di lavoro e la risoluzione delle carte raster. Gli altri MAPSET della LOCATION sono creati dallutente/i, in numero illimitato e con qualunque nome. La suddivisione in MAPSET pu essere utilizzata per separare i diversi tematismi all'interno di una stessa LOCATION. Nell'esempio precedente per ogni Regione potrebbe risultare utile destinare alle caratteristiche altimetriche, vegetazionali o idrografiche specifici MAPSET. Oppure pu essere utilizzato per distinguere laccesso a diversi utenti, a ciascuno dei quali pu essere destinato uno specifico MAPSET.

Esercizio 1. Visualizzazione delle carte


Il mezzo pi frequentemente utilizzato in un GIS per la visualizzazione di un tematismo (o carta), sia in formato vettoriale che raster, il monitor grafico. La rappresentazione su di un monitor grafico risulta pi veloce ed economica, e quindi pi efficiente, delle stampe su carta o delle rappresentazioni tabellari dei dati. Scopo di questo esercizio introdurre l'utente ai comandi di visualizzazione (display) su monitor previsti in GRASS. Avvio di GRASS GRASS viene attivato digitando il nome assegnato al programma in fase di installazione.: grass60 [Invio]

Sullo schermo appare una finestra con il menu per la definizione del Database, vale a dire la directory in cui si trovano i dati all'interno dell'elaboratore, della Location e del Mapset. La prima volta che si entra in GRASS, la finestra dovrebbe avere il seguente aspetto:

Nella casella Database riportata la directory in cui sono contenuti i dati e nella casella denominata Location lelenco delle Location disponibili. Si verifichi che il Database indicato corrisponda alla directory di salvataggio dei dati e che la Location evidenziata sia spearfish60. Si crei quindi un nuovo Mapset, scrivendone il nome, ad es. esercizi, nellapposita casella Create new mapsets:. Si prema quindi il tasto Create sottostante. Il nome inserito compare nellelenco dei Mapsets disponibili. Si clicchi sul nome per selezionarlo. Si prema quindi il tasto Enter GRASS, in basso a sinistra. Ad ogni successivo ingresso in GRASS, i nomi che risultano evidenziati sono quelli attivi al momento delluscita dall'ultima sessione di lavoro. Compare la finestra dellinterfaccia grafica denominata GIS manager. In GRASS esistono due modalit di immissione dei comandi: 1) A linea di comando: a) Digitando il nome del comando e immettendo di seguito i parametri e le opzioni necessarie. b) Digitando solo il nome del comando e immettendo i parametri e le opzioni tramite linterfaccia grafica che appare. 2) Mediante linterfaccia grafica GIS manager. Per il momento verr utilizzata la modalit a linea di comando che permette di analizzare meglio la sintassi dei singoli comandi e risulta quindi pi adatta ad un uso didattico, mentre luso dellinterfaccia grafica verr considerato pi avanti. La modalit linea di comando presenta anche il vantaggio di poter richiamare i comandi precedentemente 8

immessi utilizzando il tasto [freccia in alto]. Si elimini pertanto linterfaccia GIS Manager cliccando nel vertice superiore destro. Il controllo passa al prompt di GRASS, che ha un aspetto simile al seguente: GRASS 6.0.2cvs (spearfish60):> In presenza del prompt possibile immettere i comandi di GRASS (d'ora in avanti, per evitare ripetizioni, il prompt di GRASS verr omesso, indicando solo i comandi. Verr anche omesso, quando risulter ovvio, l'uso del tasto [Invio] necessario per l'immissione dei comandi).

Apertura di una finestra grafica (monitor) Per visualizzare unimmagine innanzitutto necessario aprire una finestra grafica (o monitor nel gergo di GRASS) mediante il comando: d.mon start=x0 (start lopzione di default e pu essere omessa, per cui si pu scrivere d.mon x0) Il monitor che compare pu essere ovviamente spostato, trascinando con il mouse il bordo superiore della cornice, in qualunque posizione dello schermo, oppure ridimensionato, mediante il trascinamento di un bordo o di un vertice. Visualizzazione di carte raster GRASS ha diversi strumenti per la rappresentazione sullo schermo di immagini di tipo raster. Quello pi comunemente usato d.rast. Per visualizzare limmagine raster dellaltimetria dellarea, si immetta il seguente comando: d.rast map=elevation.dem (map= pu essere omesso, per cui si pu anche scrivere d.rast elevation.dem) La carta elevation.dem appare nel monitor. I diversi colori con cui limmagine visualizzata, corrispondono ai diversi valori altimetrici presenti nelle celle che compongono limmagine. Per conoscere lintervallo di valori presenti in una carta raster, si pu utilizzare il comando r.describe. Ad es., per conoscere lintervallo altimetrico di elevation.dem, si immetta: r.describe elevation.dem viene visualizzato: * 1066-1840 Il simbolo * indica la presenza di celle prive di valore (o con valore null, nel gergo di GRASS), mentre i valori di quota sono compresi nellintervallo indicato. E possibile visualizzare solo uno o pi intervalli dei valori presenti utilizzando lopzione catlist=. Ad es.: d.rast elevation.dem catlist=1250-1400,1700-1800 ha come effetto la visualizzazione sul monitor delle sole aree con i valori corrispondenti ai due intervalli altimetrici specificati. Si ripeta il comando con un altro tematismo: d.rast geology Questa seconda immagine si sovrappone alla prima, cancellandola. Infatti, d.rast sovrappone sempre unimmagine a quella presente nel monitor. Tuttavia, se la carta presenta delle aree con valore null, queste possono essere rese trasparenti, utilizzando lopzione o (overlay), e permettere la visione della carta sottostante. Si visualizzi ad esempio la carta delluso del suolo: 9

d.rast landuse Gran parte dellarea, in colore bianco, contiene il valore null. Si visualizzi ora elevation.dem (il comando pu essere recuperato con il tasto[freccia in alto]): d.rast elevation.dem e quindi: d.rast landuse o La carta delluso del suolo viene sovrapposta allaltimetria che tuttavia risulta visibile in corrispondenza delle aree con valore null nella carta landuse. La carta geology contiene i diversi tipi litologici presenti nellarea. Per avere una lista delle categorie presenti, con letichetta descrittiva di ciascuna di esse, si immetta: r.cats geology Il risultato che compare nella finestra dei comandi : 1 2 3 4 5 6 7 8 9 metamorphic transition igneous sandstone limestone shale sandy shale claystone sand

Per introdurre una legenda nellimmagine, in una posizione e con dimensioni scelte dallutente, si visualizzi la carta con: d.rast geology e quindi si immetta: d.legend geology m Lopzione m permette di posizionare la legenda in un riquadro definito dallutente mediante il mouse, come specificato nel menu che appare nella finestra dei comandi. Si posizioni ad es. il mouse vicino al vertice superiore sinistro del monitor e si prema il tasto sinistro. Si trascini quindi la cornice che appare fino a descrivere un rettangolo verticale che occupi una piccola porzione del monitor. Si prema quindi il tasto destro. La legenda viene visualizzata nello spazio definito dal rettangolo. In modo analogo si pu visualizzare una scala grafica, con il comando: d.barscale m Per eliminare l'immagine presente nel monitor si usa il comando: d.erase L'immagine scompare dalla finestra grafica che assume un colore di fondo bianco. Tuttavia d.erase ha tredici opzioni per il colore di fondo. Ad es., si immetta di nuovo il comando, ma con l'opzione color=yellow (color pu essere abbreviato in col, o anche omesso). d.erase col=yellow (d.erase yellow)

10

Lo sfondo della finestra assume il colore giallo. I tredici colori disponibili con il comando sono: white (default), black, red, yellow, green, blue, aqua, brown, orange, indigo, magenta, violet e gray (o grey). Visualizzazione di carte vettoriali Per visualizzare una carta vettoriale si utilizza il comando d.vect, che ha un numero molto elevato di opzioni e di parametri. Luso pi semplice consiste nel indicare soltanto il nome della carta vettoriale. Ad esempio, con: d.erase d.vect roads viene riprodotta sul monitor la rete stradale in nero. Anche per questo comando prevista la possibilit di scegliere fra i tredici colori gi elencati per il comando d.erase (in questo caso black il colore di default). Si immetta ad esempio: d.vect roads col=red Le stesse strade vengono tracciate in rosso. Si digiti ora il comando: d.vect streams col=blue Sullo schermo compare l'idrografia dell'area in blu, sovrapposta alle strade precedentemente visualizzate. Il comando d.vect, contrariamente a d.rast, non cancella l'immagine precedente. Per eliminare l'immagine precedente necessario utilizzare d.erase. Anche con questo comando possibile limitare la visualizzazione ad un numero ridotto di categorie. Per visualizzare ad es. solo le categorie 1 e 3 della carta roads, che contiene complessivamente 5 categorie (numerate progressivamente da 1 a 5), si immetta: d.erase d.vect roads cats=1,3 col=brown Per la visualizzazione di punti singoli (definiti sites nel gergo di GRASS) si usa lo stesso comando. Ad es.: d.erase d.vect archsites col=green visualizza i siti archeologici presenti nellarea. Di default il simbolo utilizzato una croce, ma possibile scegliere fra diverse simbologie di diverse dimensioni. Ad es.: d.erase d.vect archsites col=green icon=basic/circle size=10 visualizza i siti archeologici mediante un cerchietto verde dellampiezza di 10 pixel. E possibile visualizzare contemporaneamente una carta raster e pi carte vettoriali sovrapposte. Ad es.(si noti che tutti i comandi sono gi stati utilizzati in precedenza e possono essere facilmente recuperati con il tasto [freccia in alto]): d.erase d.rast elevation.dem d.vect streams col=blue d.vect roads Per un esempio di un uso pi complesso del comando d.vect, si pu utilizzare la carta soils, che contiene i 54 diversi tipi di suolo nellarea Spearfish. Il semplice comando: d.erase d.vect soils visualizza tutti i poligoni, o aree, con diversa tipologia di suolo con allinterno una crocetta che sta ad indicare il centroide dellarea (ubicazione della categoria e degli eventuali attributi) ed una colorazione uniforme grigia. 11

Il comando: d.erase d.vect soils c cats=2,4,7,14-43 col=red display=cat lcolor=blue lsize=6 visualizza solo le aree con categoria 2,4,7 e da 14 a 43, ai cui bordi viene assegnato il colore rosso, con i rispettivi valori di categoria tracciati in colore blu e con dimensioni di 6 pixel. Lopzione c assegna casualmente un diverso colore alle aree con diversa categoria. Contenuto dei Mapset I tematismi fin qui visualizzati sono solo alcuni di quelli disponibili nel Mapset PERMANENT della Location spearfish60. Si pu ottenere un elenco completo, in ordine alfabetico, dei tematismi raster disponibili con: g.list rast Per un elenco dei tematismi vettoriali si usa invece il comando: g.list vect Va considerato che le carte raster e quelle vettoriali sono salvate in directory diverse, per cui possibile assegnare lo stesso nome ad una carta raster e ad una vettoriale. Si noti ad es. come molte carte sono presenti sia in forma vettoriale che in forma raster (ad es. roads, soils e streams). Help e manuale in linea Uno dei problemi nellutilizzo di GRASS, anche da parte di utenti esperti, la conoscenza della sintassi dei comandi, vale a dire dei parametri che devono essere immessi obbligatoriamente e degli eventuali parametri opzionali. A questo proposito, di notevole aiuto lopzione help che permette di visualizzare la sintassi di un comando. Si immetta ad esempio: d.rast help Vengono sinteticamente riportate la descrizione del comando, la sintassi (uso), le opzioni e i parametri relativi al comando d.rast. Maggiori informazioni sui comandi possono essere ottenute facendo ricorso al manuale in linea. Si digiti ad esempio: g.manual d.rast Vengono riprodotte su schermo le pagine del manuale relative al comando d.rast che contengono una dettagliata descrizione del comando, delle opzioni e dei parametri. Per tornare al prompt di GRASS si chiuda la pagina del manuale. Utilizzando lopzione i, con lo stesso comando possibile visualizzare le diverse sezioni del manuale da cui possibile accedere ad un gruppo funzionale di comandi. Si digiti: g.manual -i e successivamente si clicchi la sezione display commands nellelenco che appare. Vengono listati in ordine alfabetico tutti i comandi di visualizzazione (display) disponibili in GRASS con una breve descrizione del comando. Cliccando sul nome del comando viene visualizzata la relativa pagina del manuale in linea. Uscita da GRASS Prima di uscire da GRASS buona norma chiudere il monitor con il comando: d.mon stop=x0 o pi semplicemente cliccando sulla cornice del monitor in alto a destra. Quindi si digiti: 12

exit Comandi utilizzati nellesercizio: - d.barscale [-m] - d.erase [col=] - d.legend [-m] - d.mon [start=,stop=] - d.rast [-o][catlist=] - d.vect [-c][col=,cats=,lcolor=,lsize=,display=,icon=,size=] - exit - g.list [rast,vect] - g.manual [-i] nomecomando - nomecomando help - r.cats - r.describe Esercizio di verifica 1 Entrati in GRASS, si verifichi la presenza nel Mapset PERMANENT della carta raster vegcover (copertura vegetale) e della carta vettoriale t_powerlines (linee elettriche). Si apra un monitor e si visualizzi il tematismo raster delluso del suolo (landuse) contemporaneamente al tematismo raster della copertura vegetale (vegcover), allidrografia vettoriale (streams) in colore blu, alla rete stradale vettoriale (roads) in marrone e alle linee elettriche (t_powerlines) in nero. Alla fine dell'esercizio si chiuda il monitor e si esca da GRASS.

13

Esercizio 2. Apertura di pi monitor e creazione di cornici


Si appreso in precedenza come aprire un monitor mediante il comando d.mon. Con tale comando possibile aprire o selezionare contemporaneamente pi monitor sullo schermo. Ad es., si immetta il comando: d.mon x0 compare una monitor definito, nel bordo superiore, come Monitor:x0. Si immetta quindi: d.mon x1 Sul video compare un secondo monitor con la denominazione Monitor:x1. In GRASS possibile aprire contemporaneamente fino a 7 monitor denominati da x0 a x6. Si immetta ora il comando: d.rast elevation.dem L'immagine compare sul monitor x1. Infatti, l'ultimo monitor aperto il monitor attivo. Per rendere attivo laltro monitor, si immetta il comando d.mon con l'opzione select: d.mon select=x0 e quindi d.rast geology La carta contenente la geologia dell'area viene visualizzata nel monitor x0. E' quindi possibile lavorare contemporaneamente su pi monitor in una stessa sessione di lavoro. Si disattivi ora il monitor x1 mediante lopzione stop: d.mon stop=x1 Sullo schermo rimane solo il monitor x0. In GRASS anche possibile aprire e selezionare delle cornici, vale dire delle finestre pi piccole, all'interno di un monitor, con il comando d.frame. Con l'opzione -c viene creata una cornice. Si immetta ad esempio il comando: d.frame -c Si posizioni quindi il cursore del mouse all'interno dell'immagine in corrispondenza di un vertice della cornice che si vuole creare e si prema il tasto sinistro del mouse. Si posizioni quindi il cursore in corrispondenza del vertice opposto della cornice da creare e si prema il tasto destro del mouse. Nell'immagine compare il contorno della cornice. Si immetta il comando: d.rast elevation.dem Laltimetria viene riprodotta, in scala ridotta, all'interno della cornice. Con la stessa operazione si crei una nuova cornice in un'altra posizione all'interno del monitor: Si immetta ora: d.rast soils Nella nuova cornice appare l'immagine raster relativa ai tipi di suolo presenti nell'area. L'ultima cornice aperta la cornice attiva. Per attivare un'altra cornice fra quelle aperte, si immetta il comando: 14 (o pi semplicemente d.mon sel=x0)

d.frame -s e si posizioni il cursore all'interno della cornice da attivare (in questo caso la prima creata). Si premano quindi in successione il tasto sinistro e il tasto destro del mouse. La cornice individuata ora attiva. Infatti, il comando: d.rast geology fa comparire l'immagine relativa alla geologia all'interno della cornice selezionata. Per eliminare l'immagine dalla cornice: d.erase Per eliminare le cornici, si usa lopzione e : d.frame -e che pulisce completamente il monitor e comporta quindi la scomparsa non solo delle cornici, ma anche dell'immagine presente nel monitor. Si chiuda il monitor x0. Comandi utilizzati nellesercizio: - d.mon [select=] - d.frame [-c,-s,-e] Esercizio di verifica 2 Si aprano 3 monitor e si visualizzi sul primo laltimetria dellarea con sovrapposta lidrografia in blu, nel secondo le categorie da 2 a 5 della carta geologica con sovrapposta la rete stradale in rosso e nellultimo luso del suolo con allinterno, in una cornice pi piccola, laltimetria. Si chiudano quindi i 3 monitor e si esca da GRASS.

15

Esercizio 3. Interrogazione delle carte


GRASS permette di effettuare interrogazioni sia sulle immagini raster che su quelle vettoriali per conoscere sia l'ubicazione (coordinate) dei punti che i valori degli attributi in corrispondenza dei punti stessi. Queste informazioni possono essere ottenute mediante i comandi: d.where (utilizzabile sia con tematismi raster che vettoriali), d.what.rast (specifico per tematismi raster), d.what.vect (specifico per tematismi vettoriali). Ad esempio, aperto un monitor, si visualizzi la carta altimetrica: d.rast elevation.dem e quindi: d.where Compare un men con lindicazione delle funzioni dei tasti del mouse. Si posizioni ora il cursore in un qualunque punto dell'immagine e si prema il tasto sinistro del mouse. Vengono riportate le coordinate (Est e Nord, in metri, nel sistema UTM) del punto selezionato. Si ripeta loperazione in diversi punti dellimmagine. Per uscire dal comando e ritornare al prompt di GRASS, si prema il tasto destro del mouse (con il cursore posizionato allinterno del monitor). Si immetta ora il comando: d.what.rast Compare un men con lindicazione delle funzioni dei tasti del mouse. Si posizioni il cursore in un qualunque punto dell'immagine e si prema il tasto sinistro del mouse. Vengono elencati, oltre alle coordinate del punto, il nome della carta, il nome del Mapset in cui contenuta e il valore della categoria presente nel punto, nel caso specifico la quota in metri. Si ripeta loperazione in diversi punti dellimmagine, verificando che le quote diminuiscono progressivamente procedendo da sud-ovest verso nord-est. Per uscire dal comando si prema il tasto destro del mouse. Il comando d.what.rast, quando eseguito senza parametri, riporta semplicemente il valore relativo all'immagine correntemente visualizzata. Tuttavia possibile interrogare fino a 15 carte contemporaneamente. Il comando visualizza il valore presente nel punto individuato per tutte le carte. Si scriva ad esempio: d.what.rast map=elevation.dem,geology,soils,landuse,owner Premendo il tasto sinistro in un punto dell'immagine, vengono elencati gli attributi relativi ai 5 tematismi raster specificati, presenti in quella particolare posizione (fra parentesi il valore di categoria, seguito da uneventuale descrizione). Per uscire dal comando si prema il tasto destro del mouse. Per linterrogazione delle carte vettoriali si utilizza il comando d.what.vect. Dal momento che una carta vettoriale pu contenere un numero elevato di informazioni immagazzinate nella relativa table del database, loutput pi complesso e viene visualizzato in unapposita finestra. Si immetta ad esempio: d.erase d.vect roads quindi il comando: d.what.vect Si posizioni il cursore in corrispondenza di una strada e si prema il tasto sinistro. Nella finestra che viene aperta sono elencate tutte le caratteristiche delloggetto selezionato dedotte sia dalla geometria che dalla table del database. Per uscire si prema il tasto destro. Anche per le carte vettoriali possibile eseguire uninterrogazione su pi carte, anche se le informazioni riportate sono limitate ad uno specifico tematismo per volta. Si immetta ad es.: d.erase 16

d.vect roads d.vect streams col=blue d.what.vect E si clicchi in corrispondenza di un punto appartenente ad una strada. Vengono elencate le relative informazioni. Si clicchi successivamente su di un punto lungo un corso dacqua. Vengono riportate le in formazioni relative al segmento fluviale individuato. Si esca dal comando con il tasto destro del mouse. Si chiuda il monitor e si esca quindi da GRASS con il comando: exit Comandi utilizzati nellesercizio: - d.where - d.what.rast - d.what.vect Esercizio di verifica 3 Si esegua linterrogazione contemporanea delle carte raster fields e vegcover e, successivamente, delle carte vettoriali archsites (contenente lubicazione dei siti archeologici) e bugsites (contenente i luoghi di individuazione di scarafaggi).

17

Esercizio 4. Copia, ridenominazione, cancellazione, unione e conversione di carte raster e vettoriali


Copia di carte Entrati in GRASS, si apra il monitor x0: d.mon x0 e se ne riducano le dimensioni, trascinando un vertice, a circa 1/4 del video. Si apra il monitor x1: d.mon x1 Se ne riducano le dimensioni a circa 1/4 dello schermo e lo si posizioni di fianco a x0. A questo punto sono disponibili sullo schermo due monitor appaiati. Si visualizzi laltimetria: d.rast elevation.dem L'immagine appare sul monitor attivo (x1). Con il comando g.copy possibile eseguire la copia di una carta. Ad esempio si immetta: g.copy rast=elevation.dem,elevation.copia Viene eseguita una copia di elevation.dem, a cui viene assegnato il nome, che pu essere scelto ovviamente dell'utente, di elevation.copia. Si attivi quindi la finestra x0: d.mon sel=x0 e si visualizzi elevation.copia: d.rast elevation.copia Limmagine che appare risulta ovviamente identica a quella originale, visualizzata su x1. Lo stesso comando pu essere utilizzato per eseguire copie di tematismi vettoriali. Ad esempio si immetta il comando: g.copy vect=streams,streams1 La carta streams viene copiata come streams1. Va considerato che quando si esegue la copia di una carta vettoriale, viene anche copiata la relativa table degli attributi a cui viene assegnato lo stesso nome della carta. Dal momento che il nome di una table non pu contenere il carattere . (il punto), anche il nome assegnato alla carta deve essere privo di tale carattere. Si visualizzino entrambe le immagini sui due monitor, con i seguenti comandi: d.erase d.vect streams col=blue d.mon sel=x1 d.erase d.vect streams1 col=blue Anche in questo caso le due immagini risultano identiche. Le copie create non vengono salvate nel Mapset PERMANENT, che non pu essere modificato dallutente, ma nel Mapset esercizi creato dellutente, come si pu verificare con i comandi g.list rast e g.list vect, gi utilizzati in precedenza. 18

g.list rast g.list vect Ridenominazione di una carta E' anche possibile ridenominare un tematismo esistente, con il comando g.rename. Ad esempio si immetta: g.rename rast=elevation.copia,elevation.25 Ad elevation.copia creato in precedenza viene attribuito il nuovo nome elevation.25. Si visualizzi la carta con: d.rast elevation.25 Si verifichi (con g.list rast) che nel Mapset esercizi il tematismo elevation.copia non esiste pi ed invece presente elevation.25. Lo stesso comando viene utilizzato per cambiare il nome delle carte vettoriali. Ad esempio: g.rename vect=streams1,newstreams E da notare che si possono copiare (e anche ridenominare) contemporaneamente pi carte sia di tipo raster che vettoriale. Ad esempio, con il comando: g.copy vect=roads,strade,streams,fiumi rast=elevation.dem,altimetria si crea contemporaneamente una copia di roads, denominata strade, ed una di streams, denominata fiumi ed una copia della carta raster elevation.dem denominata altimetria. Verificarne la presenza nel Mapset esercizi con g.list rast e g.list vect. Cancellazione di carte Durante una sessione di lavoro vengono spesso create delle carte che non necessitano di essere conservate nel Database per un successivo utilizzo. Poich occupano spazio, risulta opportuno eliminarle. Il comando per la rimozione di carte g.remove. Ad esempio elevation.25, altimetria, newstreams, strade e fiumi create in precedenza possono essere eliminate con il comando: g.remove rast=elevation.25,altimetria vect=newstreams,strade,fiumi Si verifichi con g.list rast e g.list vect che i quattro elaborati non sono pi presenti nel Mapset esercizi (in realt non viene nemmeno visualizzato il Mapset esercizi in quanto non contiene pi alcuna carta). Unione di carte vettoriali e raster E possibile unire pi carte vettoriali distinte a formare ununica carta con il comando v.patch. Ad es. si uniscano le carte vettoriali streams e roads a formare una nuova carta vect1 con: v.patch in=streams,roads out=vect1 La carta risultante contiene sovrapposte lidrografia e la rete stradale, come verificabile con: d.erase d.vect vect1 Lunione fra carte raster pu essere effettuata solo in presenza di aree con valore null che risultano trasparenti permettendo la visualizzazione del tematismo sottostante. Ad es. r.patch in=landuse,fields ou=landfields produce una carta in cui i diversi usi del suolo sono sovrapposti agli appezzamenti di terreno a diversa propriet Si noti che nellinput del comando la carta (o le carte) contenente le aree con valore null deve precedere la carta con aree prive di tali valori. 19

Si visulizzi il risultato con: d.rast landfields Trasformazione di carte da vettoriali a raster e viceversa Il comando v.to.rast permette di costruire una carta raster partendo da una carta vettoriale. Nel Mapset PERMANENT presente una carta vettoriale, denominata fields, che contiene gli appezzamenti di terreno appartenenti a diversi proprietari nellarea Spearfish. Per verificarne la presenza si immetta: g.list vect Si visualizzi la carta con: d.erase d.vect c fields dis=cat Sono presenti 63 appezzamenti con valori di categoria da 1 a 63. Per ottenere da questa carta vettoriale una carta in formato raster con gli appezzamenti distinti in base ai diversi valori di categoria, si immetta: v.to.rast in=fields ou=fields1 col=cat Si visualizzi la carta con il comando: d.rast fields1 e si verifichi la presenza delle categorie da 1 a 63 con: r.describe fields1 E possibile anche ottenere una carta vettoriale da una carta raster esistente, mediante il comando r.to.vect. Per ottenere ad es. una carta vettoriale dalla carta raster geology: r.to.vect v i=geology o=geology1 feature=area lopzione v permette di attribuire alle aree lo stesso valore di categoria presente nella carta raster originale (in assenza di tale opzione a ciascuna area viene attribuito un numero progressivo). E anche necessario specificare il tipo di oggetto da trasformare, nel caso specifico le aree (le opzioni sono: point, line, area). Si visualizzi la carta vettoriale risultante con il comando: d.erase d.vect c geology1 dis=cat

Comandi utilizzati nellesercizio: - g.copy [rast=,vect=] - g.rename [rast=,vect=] - g.remove [rast=,vect=] - r.patch - r.to.vect [-v,feature=] - v.patch - v.to rast [col=] Esercizio di verifica 4 Si crei una copia della carta vettoriale soils attribuendo il nome copiasoils e si esegua una trasformazione in formato raster assegnando lo stesso nome e utilizzando come attributo il valore di categoria. Quindi si esegua una copia delle carte raster copiasoils e landuse e delle carte vettoriali streams e roads attribuendo alle copie rispettivamente i nomi copiasuoli, usosuolo, fiumi e strade. Si verifichi lesistenza delle copie nel Mapset esercizi, quindi si visualizzino tutte e quattro le carte contemporaneamente su di un monitor. Si cambi il nome delle carte aggiungendo alla fine di ogni nome il numero 1. Verificata la presenza nel Mapset esercizi, si visualizzino contemporaneamente su di un altro monitor e infine si cancellino dal Mapset. 20

Esercizio 5. Modifica della regione di lavoro e utilizzo di una maschera


Come si avuto modo di notare negli esercizi precedenti, il ridimensionamento del monitor o la rappresentazione allinterno di cornici di dimensioni pi limitate, non modificano l'estensione dell'area rappresentata, ma ne cambiano semplicemente la scala di rappresentazione. Larea visualizzata costituisce la regione di lavoro, vale a dire unarea rettangolare i cui limiti vengono definiti dallutente al momento della creazione della Location. La regione iniziale, che viene salvata come regione di default, pu essere modificata successivamente. Per modificare le caratteristiche della regione sono disponibili due comandi: g.region e d.zoom. Utilizzo di g.region. Si immetta: g.region -g Vengono visualizzate le coordinate (UTM) che delimitano larea di lavoro a nord (4928010), sud (4913700), ovest (589980) e est (609000), oltre alla risoluzione raster, vale a dire la dimensione delle celle in senso verticale e orizzontale (30 metri). Pertanto la regione di lavoro ha un estensione di 14310 m (4928010 4913700) in senso verticale e di 19020 m (609000 589980) in senso orizzontale. E ovviamente possibile modificare le dimensioni della regione di lavoro e la risoluzione raster. Ad es., una riduzione della regione di 3010 m lungo il bordo nord, di 3020 m lungo il bordo ovest, di 3000 m lungo i bordi sud e est, come rappresentato nello schema sottostante, e una risoluzione di 50 m, possono essere impostate con il comando: g.region n=4925000 s=4916700 e=606000 w=593000 res=50

4928010 (3010)

4925000 589980 (3020) 593000 4916700 (3000) 60600 (3000) 609000

4913700 Ogni volta che si modifica la regione necessario eseguire d.erase che, oltre a pulire il monitor come si gi visto in precedenza, trasmette al monitor le informazioni relative alle nuove dimensioni della regione da rappresentare. Si immetta quindi: d.erase e successivamente: d.rast elevation.dem d.vect streams Nel monitor viene visualizzata solo la porzione delle due carte compresa nei limiti definiti dalla nuova regione. 21

E possibile salvare la regione creata per un eventuale uso successivo, utilizzando lopzione save. Ad es., il seguente comando salva il settaggio corrente della regione in un file denominato regione1: g.region save=regione1 E possibile creare un numero illimitato di regioni, che vanno ovviamente salvate con nomi diversi e che sono richiamabili in ogni momento durante una sessione di lavoro. Per tornare alla regione di default si utilizza lopzione d: g.region -d d.erase Leffettivo ritorno alla regione di default pu essere verificato con: g.region g e visualizzando di nuovo laltimetria e i fiumi: d.rast elevation.dem d.vect streams Lelenco delle regioni disponibili pu essere ottenuto con: g.list region Ovviamente lunica presente nel Mapset esercizi regione1. Per renderla attiva: g.region region=regione1 d.erase Quindi, per una verifica: g.region g d.rast elevation.dem d.vect streams

Utilizzo di d.zoom. Un altro modo per rappresentare porzioni pi limitate delle immagini e definire la regione corrispondente mediante l'utilizzo del comando d.zoom che permette di definire una nuova regione in modo interattivo utilizzando il mouse. Si torni alla regione di default: g.region d d.erase quindi si visualizzi laltimetria con: d.rast elevation.dem Quindi: d.zoom Nella finestra dei comandi appare il menu con le funzioni dei tasti del mouse. Si posizioni il cursore sull'immagine in corrispondenza di un vertice della nuova regione che si intende definire e si prema il tasto sinistro. Quindi si posizioni il cursore sul vertice opposto della nuova regione e si prema il tasto centrale (o contemporaneamente il sinistro e il destro se il tasto centrale non attivato). Viene in tal modo definita una nuova regione e la porzione di immagine corrispondente viene immediatamente ridisegnata. Premendo il tasto destro del mouse si esce dal comando e la nuova 22

regione diventa la regione attiva durante il prosieguo della sessione di lavoro (come si pu facilmente verificare visualizzando una qualsiasi immagine, ad es. immettendo d.rast geology). Con lo stesso comando possibile aumentare le dimensioni della regione in modo progressivo. Si immetta di nuovo il comando: d.zoom Come descritto nel menu che appare, premendo il tasto centrale del mouse si aumentano le dimensioni della regione, come dimostra la riduzione progressiva dell'immagine nel monitor. Raggiunte le dimensioni volute, si prema il tasto destro per accettare la regione e uscire dal comando. E' importante tenere presente che il ridimensionamento della regione di lavoro non solo modifica la visualizzazione delle carte, ma condiziona anche le caratteristiche delle carte di nuova creazione, la cui estensione e risoluzione risultano definite dallestensione e dalla risoluzione della regione corrente. Come esempio si imposti la regione creata in precedenza di dimensioni ridotte, con una risoluzione di 50m e denominata regione1. g.region region=regione1 d.erase e si crei una nuova carta raster da una carta vettoriale con il comando, gi utilizzato in precedenza: v.to.rast i=soils o=soils2 col=cat Si ripristini la regione di default: g.region d d.erase e si visualizzi la carta creata: d.rast soils2 La carta stata creata solo nella porzione della regione di lavoro definita dai parametri di regione1. Per valutare la diversa risoluzione della carta si immetta: r.info soils2 Utilizzo di una maschera Come si visto, la modifica di una regione modifica le dimensioni dellarea rettangolare di lavoro e pu quindi essere utilizzata per limitare la visualizzazione delle carte o le dimensioni delle carte di nuova creazione. E anche possibile limitare lanalisi ad aree definite allinterno della regione mediante ladozione di una maschera. Una maschera semplicemente una carta raster che funziona da filtro per tutte le operazioni di visualizzazione e per molte operazioni di costruzione di nuove carte. Infatti, una volta attivata la maschera, tali operazioni sono limitate alle aree con valore diverso da null. A titolo di esempio, verr utilizzata come maschera la carta raster fields, che come si verificato in precedenza, contiene la suddivisione del territorio in appezzamenti di terreno con diversa propriet. Alcune porzioni del territorio non hanno una propriet definita e contengono il valore null, come visibile mediante: d.rast fields Si supponga di dover costruire un certo numero di elaborati esclusivamente nelle aree per le quali la propriet risulta definita. Per rendere attiva una maschera sufficiente attivare la variabile MASK creando una carta raster con questo nome. Nel caso in esame: g.copy rast=fields,MASK Si visualizzi la carta geologica: 23

d.rast geology Come previsto la carta viene visualizzata solo nelle aree con valore diverso da null in MASK. Si costruisca una nuova carta mediante r.patch, come gi sperimentato nel precedente esercizio 4: r.patch in=landuse,soils ou=landsoils Per rimuovere la maschera sufficiente eliminare la carta denominata MASK: g.remove MASK Per verificare la rimozione: d.rast geology Per verificare che la carta landsoils stata effettivamente costruita tenendo conto della maschera: d.rast landsoils

Comandi utilizzati nellesercizio: - g.list region - g.region [-d,-g,n=,s=,w=,e=,res=,region=,save=] - d.zoom - r.info Esercizio di verifica 5 Si costruisca una carta, denominata landgeo, unendo la carta delluso del suolo (landuse) e la carta geologica (geology), ridotta di 1500m per ogni lato rispetto alla regione di default e con una risoluzione di 10m. e in presenza della maschera fields. Si visualizzi la carta landgeo nella regione di default in assenza della maschera.

24

Esercizio 6. Un esempio pratico di utilizzo.


Questo esercizio propone un esempio di applicazione di un GIS. GRASS verr utilizzato per individuare siti potenzialmente idonei per l'ubicazione di una discarica nell'area Spearfish. Sviluppo dei criteri. La localizzazione di una discarica richiede ovviamente il rispetto di vincoli ambientali ed economici. Nella tabella sottostante vengono elencati i criteri, o vincoli, che si ritiene di dover adottare nellarea di studio. Caratteristica Strade Vincoli Fra 100 e 400 m dalla rete viaria esistente Oltre 500 m Oltre 600 m dalle aree residenziali e dalle infrastrutture Acclivit non superiore a 8 Suoli impermeabili Superficie di almeno 40.000m2 Motivazione Lontano dalle strade ma non troppo per limitare i costi di costruzione di nuove strade di accesso Per evitare lo scolo diretto nei corsi d'acqua Per evitare una collocazione troppo vicina alle zone frequentate Per evitare una eccessiva erosione per ruscellamento Per evitare infiltrazioni superficiali. Per un dimensionamento della discarica atto a soddisfare le necessit del territorio

Corsi d'acqua Uso del suolo Pendenza del terreno Tipo di suolo Estensione

Lindividuazione delle porzioni di territorio che soddisfino contemporaneamente tutte le condizioni prestabilite pu essere effettuata secondo modalit diverse. Il metodo proposto in questo esercizio non il pi veloce ed elegante, ma sicuramente fra i pi semplici. Pu essere riassunto come segue: 1) Individuazione, allinterno di ciascuno dei 5 tematismi, delle aree (insieme di celle) che rispettano il vincolo prestabilito. 2) Attribuzione a tali aree di un valore di categoria specifico ed esclusivo, ad es. 1. 3) Individuazione di quelle aree che sono caratterizzate dallo specifico valore di categoria contemporaneamente in tutti i tematismi e che pertanto soddisfano tutti i vincoli prestabiliti. 4) Selezione delle aree, fra quelle individuate, con superficie superiore a 40.000m2 . Si verifichi innanzitutto, mediante il comando g.list rast, la presenza nel Database (Mapset PERMANENT) delle carte necessarie all'esecuzione dell'esercizio. Pi precisamente: - roads (Strade) - streams (Idrografia) - landuse (Uso del suolo) - slope (Pendenza dei versanti, o Acclivit) - soils (Suoli) Distanza dalle strade Per soddisfare i primi tre criteri necessario calcolare delle distanze e produrre i relativi elaborati. Per quanto riguarda il primo criterio, l'elaborato da utilizzare la carta raster denominata roads. Si immetta pertanto il comando: d.rast roads Si noti come i diversi tipi di strada siano attribuiti a categorie diverse (evidenziate dai diversi colori) e come le aree non occupate da vie di comunicazione appartengano alla categoria null (in colore bianco). Le caratteristiche del file roads possono essere evidenziate mediante il comando r.report: r.report roads Nella tabella che compare vengono elencate le 5 diverse categorie in cui sono suddivise le strade con la relativa descrizione. Per il calcolo delle distanze si utilizza il comando r.buffer. Questo comando crea un elaborato raster che contiene le zone, o fasce (buffers), a determinati intervalli di distanza (scelti dall'utente) dalle celle che contengono valori di 25

categoria diversi da null in un elaborato raster esistente. Va considerato che le aree idonee vanno individuate ad una distanza dalle strade superiore a 100m ed inferiore a 400m. E quindi necessario individuare due fasce nellintorno delle strade: la prima che si estende fino a 100m, la seconda fino a 400m. Si immetta quindi: r.buffer input=roads output=roads.buf dist=100,400 units=meters La carta contenente gli elementi da cui calcolare la distanza roads, mentre la carta risultante contenente le fasce intorno alle strade viene denominata roads.buf. I due limiti di fascia vengono definiti di 100 e 400 metri mediante il parametro dist, e units definisce lunit di misura (che comunque meters di default). Alla fine del processo, per visualizzare la carta risultante, si immetta: d.rast roads.buf Nella carta sono presenti tre categorie distinte da diversi colori. Con il comando: r.report roads.buf possibile verificare come la categoria 1 sia stata assegnata alle strade, che rappresentano le celle da cui le distanze sono state calcolate, la categoria 2 alle zone entro una distanza di 100 m e la categoria 3 alle zone ad una distanza compresa fra 100 e 400m. Alle aree con distanza superiore a 400 m stato assegnato il valore null (no data). La categoria 3 identifica quindi le aree idonee per lubicazione della discarica, almeno per quanto riguarda la distanza dalle strade. Avendo deciso di identificare le aree idonee di ciascun tematismo con il valore di categoria 1, si rende necessaria a questo punto la creazione di nuovo elaborato con la categoria 1 assegnata alle aree caratterizzate dalla categoria 3 nellelaborato roads.buf appena creato. In altri termini si deve procedere ad una operazione di riclassificazione, che in GRASS viene effettuata attraverso uno specifico comando denominato r.reclass. Si immetta: r.reclass input=roads.buf output=roads.ok e si prema [Invio]. Nella finestra comandi compare il segno: > Di fianco al segno si scriva: 3 = 1 [Invio] Al nuovo segno: > si scriva: end e si prema [Invio]. Nella prima riga si assegnato alle vecchia categoria 3 il nuovo valore 1. Nella seconda riga stata terminata l'immissione mediante l'apposito comando end. Alla vecchie categorie 1 (strade) e 2 (entro 100m), a cui non stato assegnato alcun valore, viene assegnato automaticamente il valore null. Si visualizzi la carta creata: d.rast roads.ok 26

Sono evidenziate in colore le aree idonee all'ubicazione della discarica, vale a dire le aree comprese fra 100 e 400m. Con il comando: r.report roads.ok E' possibile verificare la presenza della sola categoria 1. Va considerato che il processo di riclassificazione non crea una nuova carta, ma solo una tabella contenente le nuove categorie da applicare alla carta originale. Pertanto leventuale cancellazione della carta originale rende impossibile la visualizzazione della carta riclassificata (il tentativo di rimozione della carta originale con g.remove comporta comunque lemissione di un avviso sulla presenza di carte riclassificate). Distanza dai corsi dacqua Il secondo criterio, fra quelli elencati in precedenza, prevede di considerare idonee solo le aree ad una distanza maggiore di 500 m dai corsi d'acqua. L'idrografia dell'area contenuta nel file streams, che pu essere visualizzato mediante il comando: d.rast streams Anche l'idrografia suddivisa in diverse categorie (4) che possono essere evidenziate mediante il comando: r.report streams Anche in questo caso il calcolo delle distanze viene effettuato mediante il comando r.buffer. Considerato che le aree utili si trovano ad una distanza dai corsi dacqua superiore a 500m., necessario individuare due fasce nellintorno dei corsi dacqua: la prima che si estende dai corsi dacqua fino a 500m, la seconda che comprenda tutte le aree a distanza superiore. I limiti di fascia da specificare sono quindi due: il primo di 500m, il secondo sufficientemente grande (ad es. 100000m) da comprendere sicuramente tutte le aree a distanza superiore incluse nellarea di studio. Si immetta quindi : r.buffer in=streams ou=streams.buf dist=500,100000 un=meters Si visualizzi l'elaborato risultante mediante il comando: d.rast streams.buf e le categorie mediante r.report streams.buf Ai corsi dacqua stata assegnata la categoria 1, alle aree entro i 500 m la categoria 2 e alle aree a maggior distanza il valore 3. Queste ultime aree rappresentano quelle idonee allubicazione della discarica. Si proceda quindi alla riclassificazione in modo da assegnare alla categoria 3 il nuovo valore 1. Si immetta: r.reclass i=streams.buf o=streams.ok >3=1 > end Nella prima riga si assegnato alle vecchia categoria 3 il nuovo valore 1. Nella seconda riga stata terminata l'immissione mediante l'apposito comando end. Alle vecchie categorie non specificate nel comando, viene assegnato automaticamente il valore null. Si visualizzi il nuovo elaborato mediante il comando: d.rast streams.ok

27

Le aree idonee (categoria 1) sono evidenziate in colore, mentre quelle non idonee sono rappresentate in bianco (null). La distanza delle aree idonee dai corsi d'acqua pu essere valutata visivamente sovrapponendo all'immagine raster il file vettoriale relativo all'idrografia. Allo scopo si usi il comando: d.vect streams col=blue Distanza dai centri abitati e dalle infrastrutture Il successivo criterio presuppone il calcolo delle distanze dai centri abitati e dalle infrastrutture, o comunque da quelle tipologie di uso del territorio per le quali necessario mantenere una distanza di rispetto, stabilita in almeno 600m, dalla discarica. I vari tipi di utilizzo del territorio in esame sono riportati nella carta raster landuse, che viene visualizzata mediante: d.rast landuse Si immetta quindi il comando: r.report landuse Sono presenti 8 diverse categorie di utilizzo, di cui solo 7 sono soggette al criterio di salvaguardia, in quanto per la categoria 6 (roccia affiorante) non si ritiene necessario venga mantenuta una distanza di rispetto. Dal momento che le distanze devono essere calcolate solo per le categorie 1,2,3,4,5 ,7 e 8, necessario costruire un nuovo elaborato privo della categoria 6, riclassificando la carta landuse. Seguendo la procedura gi descritta in precedenza, si immetta: r.reclass i=landuse o=landuse.tmp >1234578=1 > end Alla categoria 6, non specificata nei criteri di riclassificazione, viene quindi assegnato il valore null, mentre tutte le altre tipologie di uso del suolo presentano il valore 1, come verificabile tramite il comando r.report landuse.tmp E' ora possibile procedere al calcolo delle distanze, tenendo presente che anche in questo caso necessario definire due fasce, la prima ad una distanza di 600m, la seconda ad una distanza sufficientemente grande da includere tutte le aree pi distanti (ad es. 100000, come in precedenza). Si immetta quindi: r.buffer i=landuse.tmp o=landuse.buf d=600,100000 Si visualizzi il nuovo elaborato con il comando: d.rast landuse.buf e le categorie presenti con: r.report landuse.buf Le aree idonee sono quelle appartenenti alla categoria 3, in quanto si stabilito che la discarica possa essere ubicata solo a distanze superiori a 600 m dalle aree sensibili. Per assegnare a questa categoria il valore 1, si immetta il comando: r.reclass i=landuse.buf o=landuse.ok e quindi: > 3=1 > end Le caratteristiche del nuovo elaborato possono essere analizzate con i soliti comandi: d.rast landuse.ok 28

e r.report landuse.ok Riclassificazione della carta clivometrica Anche per l'acclivit, o pendenza dei versanti, necessario procedere ad una riclassificazione. Si visualizzi la carta clivometrica: d.rast slope Per visualizzare le categorie possibile utilizzare, anche in questo caso, il comando r.report. Va tuttavia considerato che lacclivit, a differenza dei casi precedenti in cui le categorie erano espresse da numeri interi, espressa mediante numeri con cifre decimali. Il numero di categorie, vale a dire di valori fra loro diversi, risulta pertanto estremamente elevato. Quando applicato a numeri con cifre decimali, r.report suddivide automaticamente lintervallo dei valori presenti in 255 categorie di uguale ampiezza, come verificabile immettendo: r.report slope Probabilmente solo la parte finale del tabulato viene visualizzata sullo schermo, per cui risulta conveniente reindirizzare loutput del comando, mediante unoperazione di piping (che si effettua tramite il simbolo | che un comando Unix) , al comando more (anchesso Unix) che permette di visualizzare un file una pagina per volta. r.report slope | more ( [Invio] per avanzare di una riga, la [barra spaziatrice] per passare alla pagina successiva, q per uscire e tornare al prompt). E tuttavia possibile definire un numero di categorie diverso da 255, mediante lopzione nsteps. Si provi ad esempio: r.report slope nsteps=10 Si noti che vengono riportate 10 classi con intervallo di 5,252016 (52,520164 / 10) e che i valori di acclivit vanno da un minimo di 0 ad un massimo di 52,520164. Come stabilito in precedenza, solo le aree con bassi valori di acclivit, pi precisamente con valori non superiori a 8, sono da ritenersi idonei all'ubicazione della discarica. La carta denominata slope va quindi riclassificata con il seguente comando: r.reclass i=slope o=slope.ok immettendo: > 0 thru 8 = 1 > end Nel comando stata utilizzata lopzione thru che permette di classificare un intervallo di categorie senza specificare tutti i valori inclusi nellintervallo. Si visualizzi l'elaborato risultante mediante: d.rast slope.ok e si verifichi la presenza della sola categoria 1 con: r.report slope.ok

Riclassificazione della carta dei suoli L'ultimo elaborato da riclassificare quello relativo ai suoli. Si visualizzi soils. 29

d.rast soils e le categorie: r.report soils Anche in questo caso le categorie sono piuttosto numerose per cui risulta opportuno utilizzare il comando: r.report soils | more Sono presenti 54 categorie di suoli ciascuna definita da una specifica sigla (sono sigle di un sistema di classificazione locale). I tipi di suolo ritenuti idonei sono quelli indicati dalle categorie: 1, 2, 3, 4, 5, 8, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 31, 32, 33, 34, 35, 39, 40, 41, 42, 43, 44, 45,, 50, 51, 52 e 54. Tutti gli altri sono ritenuti troppo permeabili e quindi non idonei. Il comando per eseguire la riclassificazione pertanto il seguente: r.reclass i=soils o=soils.ok > 1 thru 5 8 18 thru 27 30 thru 35 39 thru 45 50 51 52 54 = 1 > end Si visualizzi l'elaborato risultante: d.rast soils.ok

Individuazione delle aree potenzialmente idonee A questo punto sono disponibili i seguenti 5 elaborati: 1) roads.ok 2) streams.ok 3) landuse.ok 4) slope.ok 5) soils.ok La loro presenza nel Mapset esercizi pu essere verificata mediante il comando: g.list rast In ciascuno dei cinque elaborati presente la sola categoria 1, che identifica le aree ritenute idonee. Per identificare quelle aree che soddisfano contemporaneamente tutti i requisiti, vale a dire che contengono il valore 1 in tutti gli elaborati, sufficiente sommare i cinque elaborati. Il comando r.mapcalc (map calculator) in grado di eseguire operazioni aritmetiche e logiche su pi elaborati contemporaneamente. Si immetta il comando: r.mapcalc siti.ok = roads.ok + streams.ok + landuse.ok + slope.ok + soils.ok Dopo il nome del comando, viene specificato il nome della carta risultante (siti.ok), seguito dal segno = a destra del quale viene specificato il tipo di operazione (nel caso specifico una semplice somma) e la denominazione delle carte coinvolte nelloperazione. Il risultato delloperazione la produzione di un nuovo elaborato in cui ogni cella contiene la somma dei valori presenti nella cella corrispondente dei cinque elaborati indicati. Se la cella in esame presenta il valore null anche in uno solo dei cinque elaborati, il risultato della somma null. Pertanto solo le celle che contengono il valore 1 in tutti gli elaborati hanno il valore 5 nellelaborato risultante e rappresentano le aree idonee allubicazione della discarica. Si verifichi con: r.report n siti.ok la presenza della sola categoria 5 (con lopzione n non viene visualizzata la categoria null). Si visualizzi l'elaborato mediante: d.rast siti.ok 30

che mostra lubicazione dei siti potenzialmente idonei. Calcolo delle aree Lultima condizione per lidoneit delle aree individuate, unestensione minima di 40.000m2. In GRASS esiste un comando per il calcolo dellarea di ciascuna delle categorie presenti in una carta raster. Tuttavia nella carta siti.ok tutte aree idonee sono indistintamente attribuite allunica categoria 5, per cui il calcolo delle aree avrebbe come risultato la superficie complessiva di tutti gli appezzamenti individuati. E pertanto necessario effettuare una distinzione preliminare fra i singoli appezzamenti attribuendo a ciascuno di essi una diversa categoria. Il comando r.clump in grado di effettuare questa distinzione assegnando a ciascun raggruppamento di celle fra loro connesse, uno specifico e quindi distintivo valore di categoria. Si immetta quindi: r.clump input=siti.ok output=siti.clump Al termine delloperazione viene riportato il numero di raggruppamenti di celle (o clumps) individuati, che risultano 65. A ciascuno di essi stato assegnato un diverso valore di categoria (si verifichi con r.report o r.describe). Si visualizzino i raggruppamenti mediante: d.rast siti.clump La diversa colorazione delle aree conferma la presenza di categorie distinte. E ora possibile procedere al calcolo della superficie di ciascuna delle 65 aree mediante il comando: r.stats -a input=siti.clump L'opzione -a comporta il calcolo delle aree in m2. Nella finestra dei comandi viene riportata la superficie di ciascuna delle 65 aree, oltre a quella dell'area esterna (null). Se l'elenco risulta troppo lungo per essere contenuto in una schermata, si usi il comando: r.stats -a input=siti.clump | more Da un'analisi della tabella evidente come solo una parte delle aree abbia una superficie minima di 40.000 m2, pi precisamente quelle contraddistinte dai valori di categoria 1, 2, 4, 6, 7, 23, 27, 29, 34, 49, 53, 54, 59, 60. Per selezionare queste aree, eliminando quelle pi piccole, si pu ricorrere ad unoperazione di riclassificazione, con il comando: r.reclass i=siti.clump o=carta.finale > 1 2 4 6 7 23 27 29 34 49 53 54 59 60 = 1 Aree con superficie => 40.000 mq. > * = 0 > end Si noti come sia possibile, in fase di riclassificazione, attribuire unetichetta, o frase descrittiva, alla nuova categoria, scrivendola immediatamente a destra del valore di categoria (Aree con ....). Si noti inoltre come sia possibile, mediante lutilizzo di * , attribuire un determinato valore, nel caso specifico 0, a tutti i rimanenti valori di categoria presenti nella carta da riclassificare. Si visualizzi il risultato con il comando: d.rast carta.finale Solo le 14 aree con estensione di almeno 40.000m2 sono rappresentate nell'immagine con il valore di categoria 1. Le rimanenti aree con superficie inferiore a 40.000m2 hanno la categoria 0. Per meglio valutare l'ubicazione delle aree pu risultare utile sovrapporre all'immagine raster l'idrografia e le vie di comunicazione, mediante i comandi: d.vect streams col=blue d.vect roads 31

Si noti come le aree idonee siano ubicate in prossimit delle vie di comunicazione e lontane dai corsi d'acqua, in conformit a due dei criteri definiti inizialmente. Procedimento alternativo Lindividuazione delle aree idonee allubicazione della discarica stato raggiunto utilizzando un procedimento concettualmente molto semplice ma piuttosto lungo. Ovviamente, per la risoluzione di questo problema, come del resto per la risoluzione di molti problemi tramite GIS, possono essere adottate diverse procedure. Nel caso in esame, attraverso luso un po pi complesso del comando r.mapcalc, possibile ridurre sostanzialmente il numero di operazioni. Ad esempio, una volta ottenuti, mediante la procedura utilizzata in precedenza, i seguenti elaborati: roads.buf (in cui la categoria 3 definisce le aree idonee allubicazione della discarica) streams.buf (in cui la categoria 3 definisce le aree idonee) landuse.buf (in cui la categoria 3 definisce le aree idonee) slope (con valori di acclivit da 0 a 52.520164) soils.ok (in cui la categoria 1 definisce le aree idonee) lelaborato contenente le aree che soddisfano contemporaneamente i primi 5 criteri (definito siti.ok nellesercizio) pu essere ottenuto con il comando: r.mapcalc siti.ok.1 = if(roads.buf == 3 && streams.buf == 3 && landuse.buf == 3 && slope >=0 && slope <= 8 && soils.ok == 1,1,null()) Tramite il comando, ad ogni cella dellelaborato risultante, denominato siti.ok.1, viene assegnato il valore 1 se si verificano le condizioni definite dallif logico, il valore null se almeno una delle condizioni non risulta soddisfatta. In dettaglio: se (if) roads.buf uguale (==) a 3 e (&&) contemporaneamente streams.buf uguale (==) a 3 e (&&) contemporaneamente landuse.buf uguale (==) a 3 e (&&) contemporaneamente slope ha un valore uguale o maggiore (>=) a 0 e inferiore o uguale (<=) a 8 (valori di acclivit da 0 a 8) e (&&) contemporaneamente soils.ok uguale (==) a 1, allora alla cella della carta risultante (siti.ok.1) viene assegnato il valore 1 che identifica le aree idonee allubicazione della discarica; in caso contrario viene assegnato il valore null. Si noti che il comando racchiuso fra : un accorgimento da adottare quando nel comando compaiono dei caratteri speciali per evitare conflitti di interpretazione da parte del sistema operativo. E evidente che in questo modo la procedura risulta semplificata riducendo il numero di comandi immessi (pi precisamente vengono evitati quattro processi di riclassificazione). Si visualizzi la carta risultante con: d.rast siti.ok.1 Comandi utilizzati nellesercizio: - r.reclass - r.report [-n] [units=,nsteps=] - r.mapcalc - r.clump - r.buffer - r.stats [-a] e i comandi Unix : - | (piping) - more Esercizio di verifica 6 Si debbano individuare, nellarea Spearfish, delle zone da destinarsi ad uso ricreativo. Tali aree devono: 1) Essere ad una distanza dalle strade compresa fra i 100 e i 600 metri. 2) Essere ad una distanza dai corsi dacqua non superiore ai 400 metri ed includere i corsi dacqua. 3) Avere unacclivit non superiore ai 30. 4) Essere ad una distanza di almeno 1000 metri dalle aree residenziali, commerciali, industriali, urbane, dalle cave e miniere, dalle grandi vie di comunicazione, vale a dire dalle categorie 1,2,3,4,7 e 8 del file raster landuse. 5) Essere ubicate ad una quota compresa fra 1300 e 1600 metri. Costruire la carta con queste caratteristiche e visualizzarla insieme allidrografia e alla rete stradale. 32

Suggerimenti: 1) Definire il buffer intorno alle strade (le aree idonee saranno definite dalla categoria 3) 2) Definire i buffer intorno ai corsi dacqua (le aree idonee saranno definite dalle categorie 1 e 2) 3) Riclassificare il file landuse assegnando la categoria 1 alle categorie 1,2,3,4,7,8; quindi definire il buffer (le aree idonee saranno definite dalla categoria 3) 4) Definire le aree idonee mediante il comando r.mapcalc: r.mapcalc ricreat = if(roads.buf1 == 3 && streams.buf1 <= 2 && landuse.buf1 == 3 && elevation.dem >= 1300 && elevation.dem <= 1600 && slope <= 30,1,null())

33

Esercizio 7. Gestione degli attributi delle carte vettoriali


Caratteristiche dei file vettoriali Come si gi descritto nellintroduzione, una carta vettoriale costituita da un insieme di caratteristiche geometriche e di attributi. Gli attributi sono salvati in table allinterno di un database e collegati alle caratteristiche geometriche mediante una DBMI (DataBase Management Interface). Nella trattazione che segue, verranno considerati i comandi pi importanti per la gestione degli attributi di immagini vettoriali limitatamente al formato DBF il cui driver, dbf, sempre presente e rappresenta il driver di default. Dal momento che verranno effettuati cambiamenti nelle table degli attributi, necessario effettuare una copia nel Mapset corrente dei file vettoriali roads e streams del Mapset PERMANENT. Come specificato in precedenza, la copia di una carta vettoriale comporta automaticamente anche la copia della table relativa, a cui viene assegnato lo stesso nome: g.copy vect=roads,roads1,streams,streams1 Elenco dei driver disponibili Come precedentemente menzionato, il collegamento ad un database avviene mediante un driver. Per avere un elenco dei driver disponibili si utilizza il comando: db.drivers p che dovrebbe dare come risultato: dbf pg ogr Il driver dbf sempre disponibile, mentre i driver pg e ogr sono elencati solo se espressamente installati in fase di compilazione. Connessione di una carta ad un database Il driver da utilizzare e la connessione ad uno specifico database devono essere specificati dallutente mediante il comando db.connect. Di default il driver corrente dbf e il database nella directory &GISDBASE/$LOCATION_NAME/$MAPSET/dbf/ , come verificabile mediante: db.connect p che indica: driver:dbf database:&GISDBASE/$LOCATION_NAME/$MAPSET/dbf/ schema:(null) group:(null) Schema e group sono opzioni utilizzabili solo per alcuni database e non sono supportati da dbf, per cui sono definiti come null. Nel caso in cui si ottenga un risultato diverso, si definiscano il driver e il database di default mediante: db.connect p driver=dbf database=&GISDBASE/$LOCATION_NAME/$MAPSET/dbf/ Elenco delle table disponibili in un determinato database Il comando db.tables elenca tutte le table presenti in un database. Se non viene specificato il nome di un database, viene assunto il database corrente. Ad es.: db.tables p elenca le table roads1 e streams1 appena create ed eventualmente quelle relative ai file vettoriali copiati in precedenza. 34

Descrizione delle caratteristiche di una table Il comando db.describe visualizza le caratteristiche del contenuto di una table. Ad es.: db.describe table=roads1 (o pi semplicemente db.describe roads1) produce la descrizione dettagliata delle caratteristiche di ogni singola colonna presente nella table roads1, cio: table:roads1 description: insert:yes delete:yes ncols:2 column:cat description: type:INTEGER len:11 scale:0 precision:10 default:0 nullok:yes select:yes update:yes column:label description: type:CHARACTER len:43 scale:0 precision:0 default: nullok:yes select:yes update:yes Da cui si evince che la table roads1 ha due colonne, la prima delle quali, denominata cat, contiene valori numerici interi della lunghezza di 11 caratteri e la seconda, denominata label, contiene caratteri alfanumerici della lunghezza di 43 caratteri. Con lopzione c si ottiene una descrizione pi sintetica, in quanto vengono visualizzati solo il numero di colonne e i nomi relativi: db.describe c ncols:2 Column 1: cat Column 2: label Risultato analogo pu essere ottenuto con il comando: db.columns roads1 che lista semplicemente lintestazione delle colonne presenti nella table, vale a dire: cat label roads1

Visualizzazione del contenuto di una table Il comando db.select visualizza il contenuto di una table effettuando eventualmente una selezione mediante la funzione SELECT del linguaggio SQL. Ad es.: 35

db.select roads1 visualizza lintero contenuto della table, incluse le intestazioni delle colonne: cat|label 0|no data 1|interstate 2|primary highway, hard surface 3|secondary highway, hard surface 4|light-duty road, improved surface 5|unimproved road Di default il separatore fra i campi | , ma pu essere modificato con lopzione fs, cos come pu essere escluso il nome delle colonne con lopzione c: db.select c fs= table=roads1 da come risultato: 0 1 2 3 4 5 no data interstate primary highway, hard surface secondary highway, hard surface light-duty road, improved surface unimproved road

E possibile applicare un criterio di selezione al comando utilizzando la funzione SELECT di SQL, la cui sintassi la seguente: SELECT columns FROM table [WHERE condition] Se, ad es., si volessero visualizzare solo i nomi (contenuti nella colonna label) delle categorie con valore maggiore di 2 (contenute nella colonna cat): db.select c fs= table=roads1 sql=SELECT label FROM roads1 WHERE cat > 2 (table=roads1 pu anche essere omesso) Il risultato : secondary highway, hard surface light-duty road, improved surface unimproved road Gli operatori utilizzabili con i criteri di selezione specificati nella funzione SELECT sono i seguenti: "=" : uguale "<" : minore "<=" : minore o uguale ">" : maggiore ">=" : maggiore o uguale "<>" : diverso "~" : stringa coincidente Listruzione SQL contenente gli eventuali criteri di selezione pu essere passata al comando anche tramite unoperazione di piping. Ad es. il comando: echo SELECT label FROM roads1 WHERE cat > 2 | db.select c fs= produce lo stesso risultato precedente: secondary highway, hard surface light-duty road, improved surface 36

unimproved road (echo un comando Unix che stampa quanto contenuto fra le virgolette. Nel caso specifico la stampa viene reindirizzata tramite il comando di piping | al comando successivo: quindi quanto riportato fra virgolette diventa linput del comando db.select). Un ultimo esempio, che utilizza loperatore ~: echo SELECT cat,label FROM roads1 WHERE label ~ road| db.select c fs= stampa il numero di categoria e letichetta descrittiva degli oggetti della table che hanno la stringa roads nelletichetta descrittiva, cio: 4 light-duty road, improved surface 5 unimproved road

Copia di una table Il comando db.copy permette di copiare una table da un database allaltro o allinterno dello stesso database. Per eseguire, ad es., una copia della table roads1 si immetta: db.copy from_table=roads1 to_table=roads2 Con db.tables p si pu verificare la presenza della nuova table roads2 (con lo stesso contenuto, ovviamente, di quella originale, come verificabile con db.select roads2). Creazione, modifica e cancellazione di una table Il comando db.execute permette di creare, modificare e cancellare una table mediante un certo numero di funzioni e operatori SQL. GRASS accetta solo un numero limitato di funzioni e operatori SQL, pi precisamente le funzioni: ALTER TABLE table ADD [COLUMN] columndef CREATE TABLE table ( columndefs ) DROP TABLE table SELECT columns FROM table SELECT columns FROM table WHERE condition DELETE FROM table DELETE FROM table WHERE condition INSERT INTO table values INSERT INTO table ( columns ) values UPDATE table SET assignments UPDATE table SET assignments WHERE condition e gli operatori: "=" : uguale "<" : minore "<=" : minore o uguale ">" : maggiore ">=" : maggiore o uguale "<>" : diverso "~" : stringa corrispondente Listruzione SQL pu essere salvata in un file e immessa nel comando tramite il parametro input=nomefile, o pi semplicemente passata al comando tramite unoperazione di piping. Ad es., per inserire nella table roads1 una colonna denominata lunghezza, destinata a contenere dati in doppia precisione, si utilizza: echo ALTER TABLE roads1 ADD COLUMN lunghezza double | db.execute Lavvenuto inserimento della nuova colonna pu essere verificato con: db.describe c roads1 37

oppure, in modo pi completo, con db.describe roads1. Come esempio di modifica del contenuto di una table, si assuma di voler assegnare le strade definite highway (ce ne sono di due tipi assegnati a due categorie diverse) ad una stessa categoria di valore 6. Il comando il seguente: echo UPDATE roads2 SET cat=6 WHERE label ~ highway |db.execute Si verifichi il nuovo contenuto della table con: db.select roads2 Per cancellare una table, ad es. roads2: echo DROP TABLE roads2|db.execute Per una verifica: db.tables p Va considerato che la cancellazione di una carta vettoriale implica automaticamente anche la cancellazione della table corrispondente. Trasferimento di informazioni dalla geometria al database. Con il comando v.to.db possibile inserire nella table associata ad una determinata carta vettoriale delle informazioni ricavate dalla geometria della carta stessa. Ad es. possibile inserire i valori di lunghezza degli elementi lineari (linee o bordi di area), le aree dei poligoni, le coordinate degli elementi puntiformi (punti singoli o centroidi di poligoni). E necessario predefinire una colonna (o due nel caso delle coordinate di punti) in cui inserire le caratteristiche calcolate, con il comando db.execute e la funzione SQL ALTER TABLE gi analizzato in precedenza. A titolo di esempio si voglia inserire nella table roads1 la lunghezza di ciascuno dei 5 tipi di strada presente nella carta vettoriale roads1. La colonna di destinazione, denominata lunghezza, gi stata inserita in precedenza. Si immetta: v.to.db roads1 option=length type=line col=lunghezza units=k Il parametro option definisce la caratteristica da determinare, in questo caso la lunghezza, il parametro type il tipo di elemento da analizzare, in questo caso gli elementi lineari, units lunit di misura da utilizzare, in questo caso chilometri. Per verificare lavvenuto inserimento, si digiti: db.select fs= table=roads1 Il risultato il seguente: cat label lunghezza 0 no data 1 interstate 46.720383 2 primary highway, hard surface 28.460951 3 secondary highway, hard surface 29.073064 4 light-duty road, improved surface 151.115638 5 unimproved road 136.313999 Per un esempio di inserimento di valori di area, si copi la carta vettoriale soils presente nel Mapset PERMANENT: g.copy vect=soils,soils1 e si verifichi la presenza della table soils1: db.tables p Si inserisca quindi una colonna destinata a contenere le aree di ciascuno dei 54 tipi di suolo. echo ALTER TABLE soils1 ADD COLUMN area double | db.execute 38

Si verifichi la presenza della nuova colonna db.select table=soils1 E infine si inseriscano i valori di area, in metri quadrati: v.to.db soils1 option=area col=area units=me Si visualizzi la table con: db.select soils1 |more Creazione di una nuova carta contenente elementi selezionati da una carta esistente. Con il comando v.extract possibile creare una carta contenente un numero limitato di elementi estratti da una carte esistente mediante un determinato criterio. Ad es. per estrarre dalla carta soils1 precedentemente creata tutti i tipi di suolo la cui area complessiva compresa fra i 500000 e 1000000m2, si utilizza il seguente comando: v.extract soils1 out=soilsext where=area >= 500000 and area <=1000000

Viene creato una nuova carta vettoriale, denominata soilsext, con la relativa table. Per visualizzare la carta: d.vect c soilsext dis=cat Per visualizzare il contenuto della table: db.select soilsext Che da come risultato: cat|label|area 2|Ba|585232.361650 3|Bb|665371.736450 4|BcB|918686.468400 20|KaB|755659.960600 34|PcD|594093.946300 38|RaE|941735.410400 45|TaA|584587.477100 53|WaA|754838.265000

Comandi utilizzati nellesercizio: - db.columns - db.connect [-p,driver=,database=] - db.copy [from_table=,to_table=] - db.describe [-c] - db.drivers [-p] - db.execute - db.select [-c,fs=,table=,sql=] - db.tables [-p] - v.to.db [option=,type=,col=,units=] - v.extract [where=] Esercizio di verifica 7 Creare una copia, denominata fieldcopia, della carta fields e visualizzare il contenuto della table relativa. Creare una nuova carta, denominata fieldcopia1, contenente solo gli elementi con categoria da 20 a 30 e visualizzarne la table. Aggiungere larea, in m2, degli appezzamenti selezionati alla table e visualizzarne il contenuto.

39

Esercizio 8. Operazioni con carte vettoriali


Per quanto GRASS sia particolarmente efficiente nellanalisi di carte raster, esistono diverse operazioni particolarmente utili che possono essere eseguite utilizzando carte vettoriali. Il comando d.path ad es., permette di individuare il percorso pi breve fra due punti lungo un reticolo. Per sperimentarne luso si visualizzi la carta dei siti idonei creata in un esercizio precedente: d.rast carta.finale e la carta vettoriale delle rete stradale: d.vect roads Quindi: d.path roads Si posizioni il mouse in prossimit della periferia sud del centro abitato in alto a sinistra e si clicchi il tasto sinistro. Viene visualizzato un quadratino rosso che identifica il punto di partenza. Si sposti quindi il mouse in corrispondenza di uno dei siti idonei nel settore orientale dellarea e si clicchi il tasto centrale. Nel monitor viene visualizzato (in rosso di default) il percorso pi breve lungo la rete stradale, e nella finestra dei comandi la lunghezza di tale percorso (definita Costs on the network). Se i due punti non sono ubicati in corrispondenza della rete, vengono anche riportate le distanze dei punti dalla rete stessa (Distance to the network e distance from the network). Il calcolo delle distanze pu essere ripetuto per altre destinazioni utilizzando il tasto centrale o definendo altri punti di partenza con il tasto sinistro. Per uscire dal comando si prema il tasto destro. Il comando d.path permette di definire il percorso pi breve esclusivamente fra due punti in modo interattivo e il risultato viene visualizzato sul monitor. Per definire il percorso pi breve fra pi punti contemporaneamente e salvare la carta risultante e le distanze calcolate, si pu utilizzare il comando v.net.path, che richiede limmissione del nome della carta in cui verranno salvati i percorsi e delle coordinate dei punti di partenza e di arrivo di ciascun percorso, precedute da un numero identificativo scelto dallutente. Ad es., v.net.path in=roads ou=roads_pt <<end > 1 592634 4925356 596568 4922912 > 2 591738 4923061 593170 4915608 > end calcola i due percorsi che uniscono i punti specificati dalle coppie di coordinate. Per visualizzare la carta contenente i due percorsi, denominata roads_pt: d.erase d.vect roads_pt col=red dis=shape,cat e per visualizzarla sovrapposta alla carta della rete stradale d.erase d.vect roads d.vect roads_pt col=red dis=shape,cat I valori calcolati sono salvati nella table roads_pt, il cui contenuto pu essere visualizzato con: db.select roads_pt cat|id|fcat|tcat|sp|cost|fdist|tdist 1|1|0|0|0|6113.019811|316.282386|181.771516 2|2|0|0|0|11396.937648|305.745004|299.725399 Le lunghezze dei due percorsi sono riportate in corrispondenza della colonna cost, mentre nelle due colonne successive, denominate fdist e tdist sono indicate le distanze dei punti di partenza e di arrivo dalla rete stradale.

40

Un altro comando interessante v.overlay che permette di ricavare una nuova carta mediante la sovrapposizione di due carte vettoriali, con modalit definite dal tipo di operatore selezionato. Gli operatori disponibili sono: and : per unoperazione di intersezione fra le due carte or (default): per unoperazione di unione not : per unoperazione di esclusione xor: per unoperazione di unione con esclusione dellintersezione Per poter sperimentare questo comando, necessario creare alcune carte ricavandole da quelle presenti nel database spearfish. Si considerino le carte vettoriali soils, che contiene i 54 tipi diversi di suolo, e fields, che contiene una suddivisione dellarea in 63 appezzamenti appartenenti a diversi proprietari. Se ne faccia una copia con: g.copy vect=fields,campi,soils,suoli Si visualizzi il contenuto della table campi con il comando: db.select campi | more Nella prima colonna riportato il numero di categoria, nella seconda il nome del proprietario. Si noti che gli 11 appezzamenti numerati da 48 a 58 appartengono a C.Krenshaw. Si crei una nuova carta contenente solo questi 11 appezzamenti mediante il comando (gi analizzato in precedenza): v.extract i=campi o=campiKren list=48-58 Si visualizzi la carta creata con: d.erase d.vect campiKren dis=cat Con procedimento analogo, si crei una nuova carta contenente esclusivamente i suoli con categoria 23, 44 e 51. v.extract i=suoli o=suolisel list=23,44,51 Si visualizzi la carta creata, che contiene 135 aree con i tre tipi di suolo selezionati, mediante: d.erase d.vect suolisel dis=cat Utilizzando le due carte create, si possono sperimentare le funzioni del comando v.overlay. Ad es., si pu produrre una carta contenente esclusivamente le porzioni degli appezzamenti di propriet di C.Krenshow in cui sia presente un suolo di tipo 23, 44 o 51. Questo tipo di operazione, che viene definita intersezione pu essere eseguita con il comando v.overlay utilizzando loperatore and: v.overlay ainput=campiKren binput=suolisel out=campiandsuoli operator=and Vengono individuate 36 aree con queste caratteristiche, visualizzabili con: d.erase d.vect campiandsuoli dis=cat Le colonne della table campiandsuoli, visualizzabile con: db.select campiandsuoli |more contengono, nellordine, il numero progressivo delle 36 aree, il numero di categoria e letichetta descrittiva degli appezzamenti originali, e il numero progressivo e letichetta descrittiva dei tipi di suolo. Per individuare invece quelle porzioni di territorio che appartengono a C.Krenshow unitamente a quelle caratterizzate dai suoli 23,44,51, si utilizza loperatore di unione or: v.overlay ain=campiKren bin=suolisel out=campiorsuoli op=or 41

Si ottengono 184 aree visualizzabili con: d.erase d.vect campiorsuoli dis=cat e le cui caratteristiche si possono analizzare con: db.select campiorsuoli | more Nella table sono elencate le aree che appartengono a C. Krenshaw, le aree che contengono i tre tipi di suolo, e le aree che presentano contemporaneamente le due caratteristiche (ad es. larea 11). Per realizzare una nuova carta che contiene quelle parti di propriet di C.Krenshow non occupate dai suoli 23,44 e 51, si deve effettuare unoperazione di esclusione con loperatore not: v.overaly ai=campiKren bi=suolisel ou=campinotsuoli op=not Infine, per ottenere una carta contenente le aree appartenenti a C.Krenshow e le aree occupate dai suoli 23, 44 e 51, con lesclusione per delle aree comuni, cio delle aree di C.Krenshow occupate dai tre tipi di suolo, si utilizza loperatore xor: v.overlay ai=campiKren bi=suolisel ou=campixorsuoli op=xor Comandi utilizzati nellesercizio: - d.path - v.net.path - v.overlay [operator=] Esercizio di verifica 8 Si calcoli e si visualizzi il percorso pi breve lungo la rete stradale (carta vettoriale roads) fra il punto di coordinate 598178, 4927264 e il centro dellarea appartenente a McCandles (carta vettoriale campi) e interessata dal suolo di categoria 53 (carta vettoriale suoli).

42

Esercizio 9. Operazioni di stampa


Questo esercizio dedicato sostanzialmente alla realizzazione di elaborati idonei ad illustrare i risultati dell'analisi condotta nel precedente esercizio 6. Pi precisamente alla stampa di un tabulato con l'elenco dei siti idonei all'ubicazione della discarica con le relative aree e di un elaborato grafico con evidenziati i siti. 1) Realizzazione del tabulato. I siti risultati idonei sono contenuti nel file raster carta.finale creato in precedenza. In esso i siti sono tutti indistintamente attribuiti alla stessa categoria 1, come visibile tramite il comando: d.rast carta.finale Per poter calcolare l'estensione di ogni singolo sito e necessario attribuire a ciascuno di essi una diversa categoria. Questo si ottiene attraverso il comando r.clump, gi utilizzato in precedenza. Si immetta: r.clump input=carta.finale output=siti.singoli Ad ogni singolo sito con categoria diversa da 0 e da null, viene attribuito uno specifico valore di categoria (da 1 a 14). Immettendo infatti: d.rast siti.singoli possibile osservare come i siti siano distinti da diversi colori. E' ora possibile visualizzare un elenco dei siti con la relativa estensione mediante il comando: r.report -n map=siti.singoli units=me L'opzione -n permette di escludere dall'elenco le aree con categoria null, vale a dire l'area che circonda i siti individuati, mentre con l'opzione me le superfici vengono espresse in m2. Il tabulato compare direttamente sullo schermo nella finestra dei comandi. E' possibile tuttavia specificare un'uscita alternativa mediante l'opzione output=nomefile. Ad esempio con il comando: r.report -n map=siti.singoli units=me output=tabella.siti i risultati non compaiono sullo schermo ma vengono immessi nel file tabella.siti. Con il comando Unix: ls l si possono elencare tutti i file presenti nel direttorio di lavoro corrente e verificare la presenza del file tabella.siti appena creato. Il contenuto del file pu ovviamente essere visualizzato in qualunque momento sullo schermo mediante ad esempio il comando Unix: more tabella.siti (oppure cat tabella.siti)

ed eventualmente modificato mediante un qualsiasi programma di editing. Dal momento che viene richiesto un tabulato su carta, si deve procedere alla stampa mediante il comando Unix: lpr Pnomestampante tabella.siti in cui nomestampante la denominazione della stampante prescelta. 2) Realizzazione della Carta dei siti. Si tratta di realizzare una carta che contenga i siti risultati idonei all'ubicazione della discarica. Per completezza si ritiene opportuno rappresentare anche le caratteristiche altimetriche, la rete idrografica e quella stradale. L'elaborato 43

grafico verr realizzato in formato Postscript e quindi eventualmente riproducibile su carta mediante una stampante o un plotter in grado di interpretare tale formato. L'altimetria e i siti idonei sono presenti in due diverse carte raster denominate rispettivamente elevation.dem e carta.finale. Nel primo l'altimetria suddivisa in un certo numero di classi. Nel secondo i 14 siti idonei sono attribuiti alla categoria 1, i siti non idonei per lestensione limitata alla categoria 0, mentre il resto dell'area ricade nella categoria null (colore bianco). Come si gi sperimentato in un esercizio precedente, in GRASS possibile combinare due o pi carte raster in ununica carta mediante il comando r.patch. Si immetta: r.patch input=carta.finale,elevation.dem output=elev.siti L'elaborato finale riproduce le aree idonee su di uno sfondo che riporta l'altimetria, come visibile mediante il comando: d.rast elev.siti Questo elaborato rappresenta la base, o sfondo, su cui verranno sovrapposte l'idrografia e le strade. Per la costruzione di una carta in formato Postscript, GRASS prevede un apposito comando, ps.map, che prevede la lettura delle istruzioni grafiche contenute in un apposito file salvato nel direttorio corrente. Si tratta pertanto di costruire questo file, che verr denominato siti.testo, mediante un programma di editing. Si scriva il seguente testo (i rientri non sono indispensabili, servono solo ad evidenziare i blocchi di istruzioni): raster elev.siti vlines streams width 1 color blue end vlines roads width 1 color black end text 599000.0 4927400.0 UBICAZIONE DEI SITI IDONEI color black background white border red size 500 ref lower center opaque y end scalebar f where 1.5 5.5 length 4000 height 0.1 segment 4 numbers 2 end scale 1:120000 end Nella prima linea viene definita la carta raster da disegnare. In ps.map non possibile ovviamente riprodurre contemporaneamente pi immagini raster dal momento che l'ultima si sovrapporrebbe a quella precedente cancellandola. E' questo il motivo dell'uso del comando r.patch fatto in precedenza. Nella seconda riga viene definito un elaborato vettoriale, quello contenente l'idrografia, da sovrapporre all'immagine raster. Nella riga successiva viene specificata l'ampiezza (in pixel) delle linee utilizzate per rappresentare i corsi d'acqua e in quella successiva il colore. La serie di istruzioni relative a questa prima carta vettoriale termina con l'istruzione end. Nelle successive quattro righe viene previsto il disegno della carta vettoriale contenente le strade. L'istruzione text viene utilizzata per riprodurre un testo in qualunque posizione del disegno. Vengono definite le coordinate Est e Nord in cui il testo viene posizionato e di seguito il testo stesso. Viene anche definito nella riga successiva il colore del testo (black) e dello sfondo (white), il colore del bordo della cornice che contiene il testo (red), la dimensione dei caratteri (in unit di misura reali, vale a dire quelle sul terreno, e quindi in metri nel caso specifico). L'istruzione ref definisce la posizione del testo con riferimento alla coppia di coordinate specificate in precedenza. Nel caso specifico il testo verr posizionato con la base in corrispondenza della coordinata nord e centrato nel punto definito dalla 44

coordinata est. L'istruzione successiva definisce opaco il rettangolo contenente il testo in modo tale che il disegno non risulti visibile al di sotto. Anche questa serie di istruzioni viene chiusa da end. I comandi successivi comportano il disegno di una scala grafica posizionata ad una distanza di 1.5 pollici dal bordo sinistro della carta e di 5.5 pollici dal bordo superiore. La lunghezza equivale a 4000 metri e laltezza di 0.1 pollici. La scala suddivisa in 4 segmenti e i valori numerici lungo la scala sono scritti ogni 2 segmenti. Il comando successivo definisce la scala del disegno. Infine l'istruzione end chiude l'intera sequenza. Il comando ps.map prevede ovviamente un numero di istruzioni notevolmente pi elevato di quelle utilizzate nel presente esercizio, che permettono la realizzazione di grafici pi complessi e sofisticati. Per una descrizione completa del comando indispensabile fare riferimento al manuale (si provi il comando g.manual ps.map) Una volta completato, si salvi il file nel direttorio corrente con il nome: siti.testo Ora possibile immette il comando ps.map: ps.map input=siti.testo output=siti.map.ps In cui siti.testo rappresenta il file di testo contenente le istruzioni, mentre siti.map.ps rappresenta il nome del file contenente il disegno in formato Postscript. Tale file pu essere visualizzato sul monitor od inviato ad un qualunque strumento grafico, stampante o plotter, dotato di interprete Postscript. Comandi utilizzati nellesercizio: comandi GRASS: - r.patch - ps.map comandi Unix: - cat - lpr -Pnomestampante - ls [-l] Esercizio di verifica 9 Si realizzi un carta in formato Postscript alla scala 1:150000 dal titolo Geologia e siti idonei contenente la geologia (geology) e i siti idonei allubicazione della discarica (carta.finale), con sovrapposti i corsi dacqua in azzurro e le strade in bianco. Suggerimenti Si costruisca un unico elaborato raster (denominato ad esempio geology.siti) sovrapponendo la carta dei siti idonei (carta.finale) alla geologia (geology) mediante il comando r.patch. Si scriva quindi un file di testo (ad es. geo.siti.testo,eventualmente modificando una copia del file siti.testo precedentemente creato) contenente i comandi per la realizzazione della carta e si applichi il comando ps.map per la costruzione della carta finale (denominata ad es. geo.map.ps)

45

Esercizio 10. Creazione di uno script di shell


Normalmente, come del resto si avuta occasione di verificare in alcuni degli esercizi precedenti, lanalisi tramite GIS richiede un cospicuo numero di operazioni e quindi limmissione di un numero elevato di comandi in una successione ben definita. Talvolta anche piccole modifiche nella procedura applicata ad una stessa area, come ad esempio lassunzione di un diverso criterio di riclassificazione, pu richiedere la ripetizione dellintero procedimento. Altre volte la stessa sequenza di comandi pu essere richiesta per lo stesso tipo di analisi condotta su di un area diversa. In tutti questi casi risulta generalmente conveniente creare uno shell script o shell program (script di shell o programma di shell). Si tratta di un file in cui vengono elencati in sequenza tutti i comandi da eseguire. Lanciando tale file, che deve essere definito di tipo eseguibile, i comandi in esso contenuti vengono eseguiti automaticamente senza alcun intervento da parte delloperatore. A titolo di esempio viene qui costruito il programma di shell per lesecuzione del precedente esercizio di verifica 6 in cui ci si proponeva di individuare le aree idonee ad un uso ricreativo. Tali aree devono avere le seguenti caratteristiche: 1) Essere ad una distanza dalle strade compresa fra i 100 e i 600 metri. 2) Essere ad una distanza dai corsi dacqua non superiore ai 400 metri ed includere i corsi dacqua. 3) Avere unacclivit non superiore ai 30. 4) Essere ad una distanza di almeno 1000 metri dalle categorie 1,2,3,4,7 e 8 del file raster landuse. 5) Essere ubicate ad una quota compresa fra 1300 e 1600 metri. Una volta realizzata, la carta deve essere visualizzata sullo schermo insieme allidrografia in blu e alla rete stradale in nero. Il programma di shell il seguente: #!/bin/bash #..................................................................... # Programma di shell per lindividuazione di aree da # destinare ad uso ricreativo #..................................................................... #.....Definisci la fascia intorno alle strade r.buffer input=roads output=rd.buf dist=100,600 #.....Definisci la fascia intorno ai corsi dacqua r.buffer input=streams output=st.buf dist=400 #.....Riclassifica luso del suolo r.reclass input=landuse output=ln.rec << eof 123478=1 eof #.....Definisci la fascia intorno ai tipi di uso del suolo r.buffer input=ln.rec output=ln.buf distance=1000,100000 #.....Individua le aree idonee r.mapcalc ricreat = if(rd.buf == 3 && st.buf <= 2 && ln.buf == 3 && elevation.dem >= 1300 && elevation.dem <= 1600 && slope <= 30,1,null()) #.....Visualizza la carta finale d.rast ricreat d.vect streams col=blue d.vect roads #....Fine del programma La prima riga identifica il file come un programma di shell e definisce il tipo di shell da utilizzare, nel caso specifico la Bash shell. Nel caso si voglia (o si debba) utilizzare unaltra shell (ad es. la shell tcsh) sufficiente sostituire il nome della shell nella riga (ad es. #!/bin/tcsh). Tute le righe che iniziano con il carattere # sono semplicemente dei commenti che vengono ignorati dalla shell. Tutte le altre righe contengono comandi di GRASS gi utilizzati nel corso degli esercizi precedenti. Lunico aspetto che probabilmente richiede qualche spiegazione costituito dalle modalit di riclassificazione. Infatti si visto negli esercizi precedenti che un operazione di riclassificazione di tipo interattivo, in quanto richiede da parte delloperatore limmissione dei criteri di riclassificazione nelle righe immediatamente successive alla linea di comando. Nel programma sopra riportato, per permettere lesecuzione completa dellintera sequenza di comandi senza interventi delloperatore, i criteri di riclassificazione vengono riportati nelle righe immediatamente successive al comando r.reclass. Nel comando stesso viene indicata tale modalit di lettura tramite << eof, per cui il comando interpreta le righe successive come criteri di riclassificazione fino alla riga contenente eof.

46

Si scriva pertanto il file con un qualunque editor di testi (eventualmente omettendo i commenti) e lo si salvi con il nome ricreat.sh (lestensione sh non vincolante, ma pu risultare utile per distinguere con facilit i programmi di shell da tutti gli altri file contenuti nel direttorio di lavoro). Come accennato in precedenza, il file deve essere definito di tipo eseguibile. Si visualizzino i file contenuti nella directory di lavoro mediante il comando: ls -l *.sh In tal modo vengono elencati tutti i file con estensione .sh (ovviamente potrebbe apparire solo il file ricreat.sh se lunico presente). Le prime 10 colonne dovrebbero avere il seguente aspetto: -rw-r--r-Il primo carattere definisce semplicemente il tipo di file, il successivo gruppo di tre caratteri i permessi (o possibili modalit di utilizzo) da parte del proprietario del file (r significa lettura, w scrittura e x esecuzione), la seconda terna di caratteri i permessi per il gruppo di utenti e gli ultimi tre caratteri i permessi per tutti gli utenti. Per rendere il file eseguibile necessario utilizzare il comando Unix chmod. Nel caso specifico si digiti: chmod a+x ricreat.sh In tal modo si definisce il file (ricreat.sh) eseguibile (x) a tutti gli utenti (a), come verificabile immettendo di nuovo il comando: ls -l *.sh I permessi del file dovrebbe risultare i seguenti: -rwxr-xr-x e il file risulta pertanto eseguibile. A questo punto per eseguire il programma sufficiente immettere: ./ricreat.sh Alla fine dellesecuzione, compare sul monitor la carta con lubicazione delle aree idonee, le strade e i fiumi, come richiesto dagli ultimi comandi del programma. Lesempio proposto molto banale e contiene esclusivamente comandi di GRASS, per altro in numero limitato. Va per considerato che in un programma di shell possibile utilizzare contemporaneamente anche comandi di shell e comandi di linguaggi per la gestione di testi (come awk, gawk, perl). Queste possibilit rendono i programmi di shell estremamente flessibili e potenti permettendo lesecuzione automatica di analisi estremamente complesse (esempi possono essere trovati allinterno di GRASS nella directory /usr/local/grass-6.1.cvs/scripts). Comandi utilizzati nellesercizio Comandi Unix: chmod Esercizio di verifica 10 Si costruisca un programma di shell, da denominare ricreat1.sh, per lindividuazione di aree ad uso ricreativo. Tali aree devono: 1) Essere ad una distanza dalle strade compresa fra i 200 e i 700 metri. 2) Essere ad una distanza dai corsi dacqua non superiore ai 400 metri ed includere i corsi dacqua. 3) Avere unacclivit non superiore ai 20. 4) Essere ad una distanza di almeno 1000 metri dalle aree residenziali, commerciali, industriali, urbane, dalle cave e miniere, dalle grandi vie di comunicazione, vale a dire dalle categorie 1,2,3,4,7 e 8 del file raster landuse. 5) Essere ubicate ad una quota compresa fra 1200 e 1700 metri. Il programma deve inoltre prevedere che alla fine dellelaborazione le aree idonee vengano visualizzate sovrapposte allaltimetria dellintera area. 47

Esercizio 11. Modalit alternative di immissione dei comandi: linterfaccia grafica GIS Manager
Negli esercizi precedenti limmissione dei comandi stata effettuata digitando il nome del comando seguito dai parametri e dalle opzioni necessarie. Esistono tuttavia altre due modalit per immettere i comandi. La prima prevede la digitazione del solo comando e la successiva immissione dei parametri e delle opzioni mediante una finestra grafica. La seconda utilizza linterfaccia grafica GIS manager. Utilizzo della finestra grafica di ogni singolo comando Nel caso in cui non sia nota, o non si ricordi, la sintassi di un comando, possibile introdurre le opzioni e i parametri del comando mediante una finestra grafica che viene aperta immettendo semplicemente il nome del comando al prompt di GRASS. Immettendo ad es.: d.rast [invio] compare la seguente finestra:

Cliccando il tasto > al di sotto di Raster map to be displayed vengono elencate le carte raster disponibili in una specifica finestra. Si clicchi su geology e quindi sul tasto [Ok]. Nello spazio sottostante List of categories to be displayed, si scriva 1,3,5-7 e quindi si clicchi il tasto [Run] in basso a sinistra. Il comando viene eseguito e nel monitor vengono visualizzate le categorie 1,3,5,6,7 della carta geologica (che ne contiene complessivamente 9). Per uscire dal comando e chiudere la finestra, si clicchi il tasto [Close] in basso a destra. Il comando equivalente nella modalit Linea di comando : d.rast geology cat=1,3,5-7 che sicuramente di pi rapida immissione, ma richiede la conoscenza della sintassi del comando.

Linterfaccia grafica GIS Manager


In GRASS esiste anche la possibilit di utilizzare uninterfaccia grafica, denominata GIS Manager, attraverso la quale sono accessibili circa 200 dei 400 comandi disponibili in GRASS. Questultima modalit risulta pi amichevole in particolar modo per gli utenti meno esperti, in quanto richiede una conoscenza pi limitata del nome e della sintassi dei comandi. Generalmente il GIS Manager si apre automaticamente allingresso in GRASS, ma possibile attivarlo in qualunque momento immettendo: d.m & 48

Laspetto il seguente:

Caratteristiche di GIS Manager I comandi sono suddivisi in gruppi funzionali la cui denominazione indicata nella prima riga immediatamente al di sotto della cornice. Cliccando uno dei nomi viene aperto un men a tendina che visualizza ulteriori settori funzionali pi specifici, attraverso i quali possibile accedere progressivamente ai singoli comandi. Sinteticamente, il contenuto dei settori funzionali il seguente. File. Contiene i moduli per importare ed esportare i dati, per salvare e stampare immagini e carte. GIS. Permette di copiare, rinominare, cancellare e convertire le carte; gestire la regione e lambiente di lavoro; definire il tipo di proiezione. Display. Contiene i moduli per la visualizzazione delle carte. Raster. Contiene i moduli per la gestione dei dati di tipo raster. Vector. Contiene i moduli per la gestione dei dati di tipo vettoriale. Image. Contiene i moduli per la gestione dei dati di tipo image (foto aree, da satellite) Grid3D. Permette la gestione delle carte tridimensionali (dati raster 3D). Databases. Permette laccesso e la gestione dei database. Help. Permette laccesso al manuale in linea, alla pagina del manuale relativa al modulo d.m, oltre a fornire informazioni su GRASS e sul sistema in uso. Nella riga sottostante sono riportati dei tasti con icone che permettono una rapida ed intuitiva visualizzazione, interrogazione e gestione dei dati.

La funzione di ciascuno dei 19 tasti la seguente: 1) Display selected layers (current region). Visualizza nel monitor attivo tutte gli oggetti selezionati nella sottostante finestra adottando la regione e la risoluzione correnti. 2) Display selected layers (default region). Visualizza tutte gli oggetti selezionati nella sottostante finestra adottando la regione e la risoluzione di default. 3) Display from saved region settings. Visualizza tutte gli oggetti selezionati nella sottostante finestra adottando una regione ed una risoluzione precedentemente definite e salvate. 4) Erase to white. Pulisce il monitor cancellando le immagini visualizzate. 5) Zoom. Per ingrandire limmagine. 6) Return to previous zoom. Ritorna alle dimensioni precedenti. 49

7) Pan and recenter. Sposta limmagine ricentrandola nel punto indicato. 8) Query map (select map first). Interroga la carta. 9) Add group. Aggiunge un gruppo nella finestra sottostante che contiene un progetto, vale dire un insieme di carte o di comandi da visualizzare e/o eseguire in una determinata sequenza. 10) Add raster. Aggiunge una carta raster nella finestra sottostante contenente il progetto. 11) Add vector. Aggiunge una carta vettoriale nella finestra sottostante. 12) Add paint labels (from directory paint/labels). Aggiunge le etichette relative ad una carta vettoriale, contenute in un apposito file, nella finestra sottostante. 13) Create new command. Permette la creazione di un comando da inserire nella finestra sottostante. 14) Digitize map (select or create new map first). Permette laccesso a v.digit, il modulo di GRASS per la digitalizzazione. 15) Cut selection. Elimina lelemento selezionato nella finestra sottostante. 16) Create new workspace file (erase current workspace settings first). Permette di creare un file contenente un nuovo progetto . 17) Open existing workspace file. Permette di aprire un file di progetto precedentemente salvato. 18) Save workspace file. Permette di salvare un file di progetto. 19) Print map. Permette di stampare una carta nei formati Postscript, PDF o PNG. Esempi di utilizzo Per sperimentare un semplice utilizzo del GIS Manager si possono visualizzare alcune carte raster e vettoriali, eseguendo ad es. le stesse operazioni che nella modalit linea di comando richiederebbero limmissione dei seguenti comandi: d.mon x0 d.rast elevation.dem catlist=1100-1600,1700-1800 d.rast o landuse d.vect streams col=blue d.vect roads cats=1,4 col=brown Innanzitutto si apra un monitor, cliccando sul gruppo funzionale Display nella prima riga, quindi, nel menu che appare, su Start displays e infine su x0. Viene aperto il monitor x0. Quindi si clicchi di nuovo Display e nel menu che appare si clicchi su Display raster maps. Nel nuovo menu si clicchi su Display raster map. Compare la seguente finestra.

Al di sotto della riga Raster map to be displayed possibile immettere il nome della carta da visualizzare, elevation.dem, oppure, in alternativa, si pu cliccare il tasto [>] posto sulla sinistra. In questo caso viene visualizzato lelenco delle carte raster presenti nei diversi Mapset accessibili allutente.

50

Si clicchi su elevation.dem per selezionarla e quindi sul tasto [Ok] . La seconda finestra scompare e nella prima viene visualizzato il nome della carta selezionata con il relativo Mapset di appartenenza. elevation.dem@PERMANENT Poich si deciso di visualizzare solo alcuni intervalli di quota, pi precisamente da 1100 a 1600 e da 1700 a 1800, nello spazio al di sotto della riga List of categories to be displayed (INT maps) si inserisca: 1100-1600,1700-1800 Si prema infine il tasto [Run]. Limmagine viene visualizzata nel monitor x0 e il comando eseguito viene riprodotto nellapposito spazio nella porzione inferiore della finestra (destinato anche a contenere la descrizione di eventuali errori). La stessa finestra pu essere utilizzata per visualizzare la seconda carta, landuse. Allo scopo si scriva il nome della carta, landuse, nellapposita casella al di sotto di Raster map to be displayed dopo aver cancellato il nome della carta precedente, o pi semplicemente si effettui la scelta mediante il tasto [>] (in questo caso la nuova denominazione sostituisce automaticamente quella precedente). Si cancelli quindi la selezione degli intervalli altimetrici nella riga List of categories to be displayed (INT maps). Dal momento che la carta landuse deve essere sovrapposta alla carta precedente (opzione o), si scorra la barra verticale sulla destra della finestra fino a visualizzare la casella Overlay (non-null values only) e la si attivi cliccando al suo interno (la casella attivata assume il colore rosso). Si prema infine [Run]. La carta landuse viene visualizzata in sovrapposizione ad elevation.dem. Si chiuda la finestra cliccando sul tasto [Close] in basso a destra o sulla crocetta in alto a destra. Per visualizzare le carte vettoriali, si prema di nuovo Display nel GIS Manager e Display vector maps nel menu che appare. Compare la seguente finestra.

51

Come si gi detto in precedenza, il comando di visualizzazione di carte vettoriali ha un numero estremamente elevato di parametri e di opzioni, come facilmente verificabile scorrendo la barra verticale sulla destra della finestra. Luso proposto nel presente esempio tuttavia molto semplice in quanto viene richiesta la visualizzazione dei corsi dacqua in colore blu e successivamente delle strade di categoria 1 e 4 in colore marrone. Per la visualizzazione dei corsi dacqua, si immetta il nome della carta streams direttamente al di sotto di Name of input vector o selezionandola dallelenco mediante la pressione del tasto [>], in modo identico a quanto fatto in precedenza per le carte raster. Per definire il colore, si scorra la barra fino a visualizzare lo spazio denominato Line color e si sostituisca black (default) con: blue Si prema infine [Run]. Lidrografia viene riprodotta al di sopra delle carte raster gi visualizzate. Per la visualizzazione delle strade di categoria 1 e 4, si selezioni, utilizzando la stessa finestra, la carta roads, si introduca il colore brown al di sotto di Line color e si scriva, al di sotto della riga denominata Category values: 1,4 Premendo [Run] si ottiene la visualizzazione delle strade selezionate. Si chiuda la finestra. Lesecuzione tramite GIS Manager, comporta una diversa sintassi, e quindi una diversa modalit duso di alcuni comandi, rispetto alla modalit a linea di comando. E il caso ad es. di r.mapcalc. Si voglia ad es. costruire una carta che mostri i suoli nelle sole aree con quota compresa fra 1000 e 1500 m e dove la geologia presenta le categorie 2,4,6,7,8 e 9. Nella modalit linea di comando si dovrebbe immettere: r.mapcalc soilsel=if(elevation.dem >=1000 && elevation.dem <= 1500 && (geology == 2 || geology == 4 || geology >= 6), soils,null()) Per ottenere lo stesso risultato con GIS Manager, si clicchi su Raster e quindi su Map calculator. Si apre la seguente finestra.

52

Negli appositi spazi al di sotto delle lettere da A a F (si utilizzi la barra a scorrimento per renderle tutte visibili) vanno introdotti i nomi delle carte da utilizzare, scrivendole direttamente o selezionandole dallelenco attivato tramite il tasto [ >]. Si immetta pertanto elevation.dem in A, geology in B e soils in C. Con la barra a scorrimento si renda visibile la riga Formula e si introduca nello spazio sottostante: if(A>=1000&&A<=1500&&(B==2||B==4||B>=6),C,null()) Nella riga sottostante, denominata Resulting output map, si scriva il nome della carta risultante: soilsel e infine si clicchi il tasto [Run]. Si visualizzi la carta risultante seguendo il procedimento gi descritto, vale a dire: Display Display raster maps Display raster map [>] soilsel [Ok] [Run] Costruzione di un progetto. Lavorando con GRASS capita frequentemente di dover visualizzare le stesse carte, od eseguire gli stessi comandi, pi volte in una determinata sequenza. In tal caso pu risultare conveniente costruire un cosiddetto progetto, che consiste nel salvare in un file, che pu essere richiamato successivamente, la sequenza di carte da visualizzare e/o dei comandi da eseguire. I singoli elementi del progetto possono essere suddivisi in gruppi e possono essere attivati e disattivati quando necessario. Supponendo ad esempio di dover visualizzare la carta altimetrica con sovrapposto luso del suolo, con una scala e la legenda, sovrapponendo eventualmente anche lidrografia,in blue, e la rete stradale, in nero, risulta conveniente creare un progetto costituito da 2 gruppi di carte, il primo contenente le due carte raster con la scala e la legenda della seconda carta, e il secondo le due carte vettoriali. Per la costruzione del progetto: 1) Si clicchi innanzitutto il tasto Create new workspace file (il tasto 16 della seconda riga). Nella finestra sottostante compare licona di una cartella denominata UNTITLED. 2) Si clicchi sul nome per attivarla (lo sfondo del nome diventa grigio). 3) Si clicchi quindi il tasto Add group (tasto 9 della seconda riga); viene inserita licona di una cartella al di sotto di quella precedente con la denominazione group1. 4) Si clicchi sul nome per attivarla (lo sfondo diventa grigio). 53

5) Si clicchi Add raster (tasto 10 della seconda riga). Viene inserita licona che rappresenta simbolicamente una carta raster denominata raster 1. Cliccando sul nome, lo sfondo diventa grigio e si apre una finestra per limmissione del nome della carta raster e per la scelta delle opzioni. Si scriva nella prima riga: elevation.dem. 6) Si clicchi di nuovo Add raster. Viene inserita una seconda icona denominata raster 2. Si clicchi sul nome e si immetta landuse nellapposito spazio della finestra che si apre. Poich questa carta deve essere sovrapposta a quella precedente, si attivi lopzione overlay cliccando lapposita casella. 7) Per il disegno della scala e della legenda, si clicchi il tasto Create new command (il tredicesimo della seconda riga). Viene inserita unicona denominata cmd 1. Si clicchi sullicona e nella finestra che appare si introducano i due comandi relativi, separati da una barra verticale: d.barscale at=0,90 | d.legend map=landuse at=10,45,1,10 col=blue A questo punto stato creato il primo gruppo per la visualizzazione delle due carte raster con la legenda di landuse e la scala grafica. 8) Si clicchi UNTITLED. 9) Si clicchi Add group (tasto 9). 10) Si clicchi sul nome group 2. 11) Si clicchi Add vector (undicesimo tasto della seconda riga). Viene aggiunta licona che rappresenta una carta vettoriale denominata vector 1. 12) Si clicchi sul nome e si inserisca nella finestra che appare il nome: streams Quindi si clicchi nella sottostante casella Line color e dalla tavolozza che compare si scelga il colore blu. 13) Si clicchi di nuovo Add vector e con le stesse modalit si inserisca il nome della carta vettoriale roads. 14) Si clicchi il tasto Display selected layers (primo tasto della seconda riga) e le carte previste dal progetto vengono visualizzate. Per visualizzare solo un gruppo si disattivi con un clic la casella immediatamente alla sinistra del nome del gruppo. Ad es., disattivando group 1, vengono visualizzate solo le carte raster incluse in group 2. In modo analogo possono essere disattivati i singoli oggetti allinterno del gruppo. Il progetto pu essere salvato cliccando il tasto Save workspace file (il penultimo della seconda riga), inserendo nellapposito spazio della finestra che appare il nome prescelto per il file, ad es. progetto1, e infine cliccando sul tasto [Salva]. Per cancellare dal progetto un gruppo, una carta o un comando, lo si evidenzia con il mouse e si preme il tasto Delete layer (tasto 15 della seconda riga). Per richiamare un progetto precedentemente salvato, si clicchi il tasto Open existing workspace file (tasto 17) e si immetta il nome nellapposito spazio della finestra che viene aperta. Va per notato che se esiste un progetto gi visualizzato, il progetto richiamato viene aggiunto in coda. Per cancellare il progetto visualizzato necessario la seguente sequenza: File (primo gruppo funzionale) Workspace Close Il progetto viene cancellato. Tale procedura pu anche essere utilizzata per caricare un progetto precedentemente salvato, in alternativa allutilizzo del tasto Open existing workspace file descritta in precedenza. Comandi utilizzati nellesercizio d.m & Esercizio di verifica 11 Utilizzando linterfaccia GIS Manager si visualizzino i fiumi in blu e una carta contenente le aree con le seguenti caratteristiche: 1) Siano ad una distanza dalle strade compresa fra i 100 e i 400 metri. 2) Abbiano unacclivit compresa fra 10 e 20. 3) Siano ad una quota inferiore a 1400 metri.

54

Soluzione degli esercizi di verifica


Soluzione esercizio di verifica 1 g.list rast g.list vect d.mon x0 d.rast vegcover d.rast o landuse d.vect streams col=blue d.vect roads col=brown d.vect t_powerlines d.mon stop=x0 exit Soluzione esercizio di verifica 2 d.mon x0 d.mon x1 d.mon x2 d.mon sel=x0 d.rast elevation.dem d.vect streams col=blue d.mon sel=x1 d.rast geology cat=2-5 d.vect roads col=red d.mon sel=x2 d.rast landuse d.frame c d.rast elevation.dem d.mon stop=x0 d.mon stop=x1 d.mon stop=x2 exit Soluzione esercizio di verifica 3 d.rast fields d.what.rast map=fields,vegcover d.erase d.vect archsites d.vect bugsites col=red d.what.vect Soluzione esercizio di verifica 4 g.copy vect=soils,copiasoils v.to.rast i=copiasoils o=copiasoils col=cat g.copy rast=copiasoils,copiasuoli,landuse,usosuolo vect=streams,fiumi,roads,strade g.list rast g.list vect d.rast copiasuoli d.rast -o usosuolo d.vect fiumi d.vect strade g.rename rast=copiasuoli,copiasuoli1,usosuolo,usouolo1 vect=fiumi,fiumi1,strade,strade1 g.list rast g.list vect d.mon start=x1 d.rast copiasuoli1 d.rast -o usosuolo1 d.vect fiumi1 d.vect strade1 g.remove rast=copiasuoli1,usouolo1 vect=fiumi1,strade1 Soluzione esercizio di verifica 5 g.region n=4926510 s=4915200 e=607500 w=591480 res=10 55

d.erase g.copy rast=fields,MASK r.patch in=landuse,geology ou=landgeo g.region d d.erase g.remove MASK d.rast landgeo

Soluzione esercizio di verifica 6 r.buffer input=roads output=roads.buf1 distance=100,600 r.buffer in=streams out=streams.buf1 dis=400 r.reclass in=landuse out=landuse.tmp1 > 1 2 3 4 7 8 = 1 > end r.buffer in=landuse.tmp1 out=landuse.buf1 dis=1000,100000 r.mapcalc ricreat = if(roads.buf1 == 3 && streams.buf1 <= 2 && landuse.buf1 == 3 && elevation.dem >= 1300 && elevation.dem <= 1600 && slope <=30,1,null()) d.rast ricreat d.vect streams d.vect roads

Soluzione esercizio di verifica 7 g.copy vect=fields,fieldcopia db.select fieldcopia v.extract in=fieldcopia out=fieldcopia1 where=cat >= 20 and cat <=30 db.select fieldcopia1 echo ALTER TABLE fieldcopia1 ADD COLUMN superficie double | db.execute v.to.db fieldcopia1 option=area col=superficie units=me db.select fieldcopia1

Soluzione esercizio di verifica 8 db.select campi | more v.extract i=campi o=campiMc list=19-23,44-45 v.extract i=suoli o=suoli53 list=53 v.overlay ai=campiMc bi=suoli53 ou=camsol op=and d.erase d.vect camsol d.where (601010, 4922912) v.net.path in=roads ou=roadsMc53 <<end > 1 598178 4927264 601010 4922912 > end d.vect roads d.vect roadsMc53 col=red db.select roadsMc53

Soluzione esercizio di verifica 9 r.patch input=carta.finale,geology output=geology.siti Contenuto del file geo.siti.testo (da creare con un editor, eventualmente modificando una copia del file siti.testo precedentemente creato): raster geology.siti vlines streams width 1 color aqua end vlines roads width 1 color white end text 599000.0 4927400.0 GEOLOGIA E SITI IDONEI 56

color black background white border red size 500 ref lower center opaque y end scale 1:150000 end ps.map input=geo.siti.testo output=geo.map.ps

Soluzione esercizio di verifica 10 Programma di shell ricreat1.sh: #!/bin/bash #..................................................................... # Programma di shell per lindividuazione di aree da # destinare ad uso ricreativo #..................................................................... #.....Definisci la fascia intorno alle strade r.buffer input=roads output=rd1.buf distance=200,700 #.....Definisci la fascia intorno ai corsi dacqua r.buffer input=streams output=st1.buf distance=400 #.....Riclassifica luso del suolo r.reclass input=landuse output=ln1.rec<< EOF 123478=1 EOF #.....Definisci la fascia intorno ai tipi di uso del suolo r.buffer input=ln1.rec output=ln1.buf distance=1000,100000 #.....Individua le aree idonee r.mapcalc ricreat1 = if(rd1.buf == 3 && st1.buf <= 2 && ln1.buf == 3 && elevation.dem >= 1200 && elevation.dem <= 1700 && slope <=20,1,null()) #....Visualizza laltimetria d.rast elevation.dem #.....Sovrapponi le aree idone d.rast o ricreat1 #....Fine del programma chmod a+x ricreat1.sh ./ricreat1.sh

Soluzione esercizio di verifica 11 1) Definizione del buffer intorno alle strade Raster Create raster buffer > roads roads.bf 100,400 [Run] [Close] 2) Individuazione delle aree idonee Raster Map calculator A: > roads.bf B: > slope C: > elevation.dem 57

Formula: if(A == 3 && B >=10 && B <= 20 && C < 1400,1,null()) Resulting output map: > areeok [Run] [Close] 3) Visualizzazione carta raster Display Display raster maps Display raster map Raster map to be displayed > areeok [Run] [Close] 4) Visualizzazione carta vettoriale Display Display vector maps Name of input vector > streams Line color blue [Run] [Close]

58

Elenco dei comandi usati negli esercizi


Comandi GRASS: - db.columns - db.connect [-p,driver=,database=] - db.copy [from_table=,to_table=] - db.describe [-c] - db.drivers [-p] - db.execute - db.select [-c,fs=,table=,sql=] - db.tables [-p] - d.barscale [-m] - d.erase [col=] - d.frame [-c,-s,-e] - d.legend [-m] - d.m & - d.mon [start=,select=,stop=] - d.path - d.rast [-o][catlist=] - d.vect [-c][col=,cats=,lcolor=,lsize=,display=,icon=,size=] - d.where - d.what.rast - d.what.vect - d.zoom - exit - g.copy [rast=,vect=] - g.list [rast,vect,region] - g.manual [-i] nomecomando - g.region [-d,-g,n=,s=,w=,e=,res=,region=,save=] - g.rename [rast=,vect=] - g.remove [rast=,vect=] - nomecomando help - ps.map - r.buffer - r.cats - r.clump - r.describe - r.info - r.mapcalc - r.patch - r.reclass - r.report [-n] [units=,nsteps=] - r.stats [-a] - r.to.vect [-v,feature=] - v.extract [where=] - v.net.path - v.overlay [operator=] - v.patch - v.to.db [option=,type=,col=,units=] - v.to.rast [col=]

Comandi Unix : - | (piping) - chmod - cat - lpr -Pnomestampante - ls [-l] - more

59

Appendice A. Installazione della Location spearfish60


La Location contiene le carte raster, vettoriali e dei punti da utilizzare nella sperimentazione delle varie funzioni di GRASS6.0. Per salvare i dati consigliabile creare unapposita directory, denominata ad es. /home/nomeutente/ GRASS60data/spearfish. Per linstallazione si pu procedere con due modalit diverse ma equivalenti. a) Modalit grafica Si crei, utilizzando lapposita funzione della finestra grafica, la directory /home/nomeutente/ GRASS60data/spearfish. Ci si colleghi a: http://grass.itc.it/download/data6.php Nella colonna denominata Data set della tabella che compare, si clicchi su SPEARFISH 6.0 data set Si specifichi la directory creata in precedenza in cui salvare il file denominato spearfish_grass60data.tar.gz. Ci si posizioni nella directory /home/nomeutente/GRASS60data/spearfish mediante le funzioni della finestra grafica.

Per scompattare il file si faccia doppio clic sullicona del file. b) Modalit a linea di comando Si crei la directory con il comando: mkdir /home/nomeutente/GRASS60data/spearfish Ci si posizioni della directory con: cd /home/nomeutente/GRASS60data/spearfish e al prompt si digiti: wget http://grass.itc.it/sampledata/spearfish_grass60data.tar.gz quindi: tar xvzf spearfish_grass60data.tar.gz il file viene scompattato. 60

Per utilizzare i dati necessario, entrati in GRASS, definire spearfish la Location e /usr/nomeutente/GRASS60/spearfish il Database. Oltre al Mapset PERMANENT, la location contiene anche il Mapset user1.

FINE

61