Sei sulla pagina 1di 158

Università degli Studi di Parma Gruppo Utenti Italiani di GRASS

Dipartimento di Scienze della Terra

A. Clerici

GRASS6.2
Manuale pratico introduttivo

Aprile 2007
Sommario

Premessa………………….……………………...………………………….…………… p. 4
Introduzione………………….………………………………………………….……... p. 4
Caratteristiche generali di un GIS ……………………………………………….…… p. 4
Caratteristiche specifiche di GRASS ………….……………………………….………... p. 6
Avvio di GRASS ……………………………………………………………………. p. 9
Il Map Display …………………………………….…………………………………. p. 13
I tasti funzionali ……………………………………………………………………… p. 16
Il GIS Manager ………………………………………………………………………… p. 23
I tasti funzionali ……………………………………………………………………... p. 23
Esercizio di verifica 1 ……………………………………………………………………... p. 26
I menu funzionali ……………………………………………………………………... p. 35
Il menu File ……………….……………………………………………………….…... p. 35
Visualizzazione del contenuto dei Mapset …………………………………………… p. 35
Copia di carte e file …………………………………………………………………. p. 36
Ridenominazione di carte e file ………………………………………………….…. p. 37
Cancellazione di carte e file …………………………………………………… …… p. 37
Costruzione di una carta raster da una vettoriale e viceversa ……………………....... p. 38
Importazione di altri formati …………………………………………………………. p. 38
Esercizio di verifica 2 ………………………………………………………………… p. 40
Costruzione di una carta in formato postscript ……….…………………………...… p. 40
Esercizio di verifica 3 ………………………………………………………………… p. 42
Il menu Config ………………………………………………………………...……… p. 43
Gestione della regione di lavoro ………………………………………….………… p. 43
Gestione dell’ambiente di lavoro …………………………………………….…… p. 47
Il menu Raster ……………………………………………………………………… p. 49
Informazioni di base sul contenuto di una carta …………………………………… p. 49
Lista delle categorie e delle etichette …………………………………………………. p. 50
Calcolo delle statistiche elementari …………………………………………………… p. 51
Analisi statistica univariata ……..…………………………………………………… p. 55
Modifica dei valori di categoria e delle etichette …………………………………… p. 56
Unione di carte …………………………………………………………………...… p. 58
Utilizzo di una maschera …………………………………………………………… p. 59
Esercizio di verifica 4 ………………………………………………………………… p. 60
Costruzione di una carta tramite operazioni aritmetiche e logiche su altre carte …… p. 60
Creazione di fasce nell’intorno di celle con valore diverso da null …………….……. p. 62
Assegnazione di categorie diverse a gruppi distinti di celle ………………………… p. 64
Esercizio riassuntivo relativo alle carte raster……………………………………….… p. 64
Esercizio di verifica 5 ………………………………………………………………… p. 78
Il menu Databases ………………………………………………………………….… p. 79
Elenco dei driver disponibili ………………………………………………………… p. 79
Connessione ad un database ……………….………………………………………… p. 79
Elenco delle table presenti in un database ……………….….…………………....…… p. 80
Descrizione delle caratteristiche di una table ………………………………………… p. 80
Visualizzazione del contenuto di una table …………………………………………… p. 81

2
Copia di una table …………………………………………………………….…… p. 85
Creazione, cancellazione e modifica di una table ……………………………….……. p. 86
Il menu Vector ……………………………………………………………………… p. 90
Rapporti e statistiche del contenuto di una carta …………………………………… p. 90
Connessione ad una table …………………………………………………………… p. 91
Trasferimento di informazioni dalla geometria al database ………………………… p. 93
Creazione di una nuova carta contenente elementi selezionati da una carta esistente .
p . 96
Esercizio di verifica 6 …………………………………….………………………….… p. 98
Creazione di una fascia nell’intorno di oggetti ……………………………………… p. 98
Sovrapposizione condizionata di due carte ……………………………….……….… p. 99
Riclassificazione di una carta .………………………………………………………… p.108
Unione di più carte ……………………………………………………………….… p.110
Esercizio riassuntivo relativo alle carte vettoriali…………...…………………………… p.110
Il menu Imagery …………………………………………………………………...… p.121
Il menu Grid3D ………………………………………………………………………… p.122
Rapporti e statistiche del contenuto di una carta 3D ……………………………...… p.124
Tracciamento di sezioni attraverso una carta 3D …………………………………… p.125
Costruzione di una carta 3D da punti vettoriali tridimensionali ……………………… p.126
Costruzione di una carta 3D tramite operazioni aritmetiche e logiche su altre carte 3D p.128
Il menu Help …………………….……………………………………………………… p.130
Altre modalità di immissione dei comandi ……………………………………… p.131
Immissione dei comandi dalla finestra dell'Output ………………………….… p.131
Immissione dei comandi dal prompt di GRASS ……………………………...…… p.131
Esercizio riassuntivo relativo all'immissione dei comandi dal prompt di GRASS ……… p.134
Creazione di uno script di shell ……………………………………………...…… p.138
Esercizio di verifica 7 …………….………………………….……………………. p.139
Elenco dei comandi utilizzati ……………………………….……............………. p.140
Soluzione degli esercizi di verifica …………………………….…………….……. p.141
Soluzione esercizio di verifica 1 …………….……………………………………… p.141
Soluzione esercizio di verifica 2 …………….…………………………………….… p.143
Soluzione esercizio di verifica 3 ………………………………………………….… p.147
Soluzione esercizio di verifica 4 …………………………………………………… p.148
Soluzione esercizio di verifica 5 …………….…………………………………….… p.151
Soluzione esercizio di verifica 6 …………….…………………………………….… p.154
Soluzione esercizio di verifica 7 …………….…………………………………….… p.158

3
Premessa
Il manualetto è destinato a chi si appresta ad utilizzare GRASS per la prima volta, ed illustra le operazioni d'uso più
frequente.
E’ strutturato in modo che gli esercizi possano essere eseguiti senza l’assistenza di un tutore, anche se ovviamente la
presenza di una persona esperta può risultare utile in alcune circostanze. Il ricorso al manuale in linea può comunque
chiarire la maggior parte dei dubbi e aiutare a risolvere molti problemi, oltre a permettere l’approfondimento di ogni
singolo comando.
Si suppone che gli esercizi vengano eseguiti utilizzando la versione 6.2 di GRASS; in particolare la versione utilizzata
nella stesura del presente manuale è la 6.2.2 cvs del 07.04.2007.
Negli esercizi vengono utilizzate le carte raster e vettoriali contenuti nel DATABASE (LOCATION) spearfish60,
disponibile presso uno dei siti (o dei mirrors) di GRASS.
Lungo il manuale vengono proposti degli esercizi riassuntivi e degli esercizi di verifica delle conoscenze acquisite, la
cui soluzione è riportata in un’apposita sezione alla fine del manuale.
La segnalazione di errori, imprecisioni ed omissioni è ovviamente gradita.

Introduzione

Caratteristiche generali di un GIS


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 è connesso ad un altro, se è 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.
Nella rappresentazione raster invece, 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).

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

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

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, l’altimetria, ecc. (fig.3). E’ tuttavia
possibile l’inserimento di diversi tematismi in una stessa carta suddividendoli in layer distinti.

5
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 un’applicazione 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.
I dati vettoriali sono particolarmente adatti all’analisi degli elementi lineari, come ad esempio all’analisi dei reticoli.
come quello stradale o idrografico.

Caratteristiche specifiche 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 l’ambiente Unix.

La rappresentazione dei dati


In GRASS ad ogni oggetto di una carta raster, o meglio alle celle che compongono l’oggetto, viene attribuito un solo
valore di categoria ed eventualmente un’etichetta descrittiva. La non assegnazione di una categoria comporta
l’assegnazione automatica di un valore particolare definito null.
In GRASS un’immagine vettoriale è costituita da un insieme di caratteristiche geometriche e di attributi.
La geometria di un oggetto, riproducibile mediante le forme geometriche elementari punto, linea e poligono, è
riconducibile ad una delle cinque tipologie seguenti:
Point (punto): per rappresentare gli elementi puntiformi (punti quotati, pozzi, ecc.). Ogni punto è rappresentato
da una coppia di coordinate.
Line (linea): per rappresentare elementi lineari (strade, fiumi, linee elettriche, ecc.). Ogni linea è costituita da
una spezzata. I due punti alle estremità sono definiti nodi, mentre i punti intermedi sono definiti vertici. Ogni
linea viene memorizzata mediante una sequenza di coppie di coordinate in corrispondenza dei nodi e dei vertici
della spezzata.
Boundary (bordo). Per rappresentare, anche parzialmente, i bordi di aree chiuse (laghi, piante di edifici,
appezzamenti di terreno, ecc.). E’ una spezzata memorizzata mediante una sequenza di coppie di coordinate in
corrispondenza dei nodi e dei vertici.
6
Centroid (centroide). E’ un elemento puntiforme all’interno di un’area chiusa in corrispondenza del quale
vengono inseriti gli attributi dell’area. Ogni centroide è rappresentato da una coppia di coordinate.
Area (area). E’ l’insieme di un bordo di area (boundary) completo, vale a dire chiuso, e del relativo centroide
(centroid).

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, GIS ManagerL, 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.
Nel file della geometria ogni oggetto è caratterizzato da un numero di categoria, che può essere comune a più oggetti.
Tutti gli attributi delle immagini vettoriali sono salvati in table all’interno 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.
Una table è costituita da un insieme di colonne, ciascuna delle quali rappresenta un attributo, e da tante righe quanti
sono gli oggetti presenti nella carta (o i gruppi di oggetti che nel file della geometria hanno lo stesso valore di
categoria).
La connessione fra ciascun oggetto vettoriale (punto,linea,poligono) nel file della geometria ed i suoi attributi nella
table è effettuato tramite il numero di categoria.

geometria table
Cat coordinate Cat attributo1 attributo2 ….….
1 x,y,x,y,………. 1 33 nomeA
4 x,y,x,y,………. 2 215 nomeB
4 x,y,x,y,………. 3 28 nomeC
2 x,y,x,y,………. 4 12 nomeD
1 x,y,x,y,………. 5 33 nomeE
5 x,y,x,y,……….
3 x,y,x,y,……….

In molte circostanze, quando si crea una carta vettoriale viene automaticamente creata la table degli attribuiti a cui
viene assegnato lo stesso nome della carta. Dal momento che il linguaggio di interrogazione delle table, SQL, non
consente l’utilizzo del punto all’interno del nome di una table, anche il nome della carta vettoriale è soggetto alla stessa
restrizione.
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à.

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. Ciascuna LOCATION è a sua volta suddivisa in sottodirettori definiti MAPSETS:

DATABASE (/home/grass.data)
|
-----------------------------------------------------------------------------------------
| |
LOCATION1 LOCATION2
| |
----------------------------------------------------- -----------------------------------------------
| | | | | | |
PERMANENT MAPSET1 MAPSET2 …. PERMANENT MAPSET1 ............

7
Ogni volta che viene creata dall’utente 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 dall’utente/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 l’accesso a diversi utenti, a ciascuno dei quali può essere destinato uno specifico
MAPSET.

La regione di lavoro
La regione di lavoro (definita region in GRASS) è l’area geografica di forma rettangolare, definita dalle coordinate dei
bordi del rettangolo, all’interno della quale hanno effetto le operazioni eseguite da GRASS. Una regione deve essere
definita in concomitanza con la creazione di una Location e viene assunta come regione di default. Tale regione non
può essere modificata ed è sempre disponibile. E’ tuttavia possibile definire altre regioni durante una sessione di
GRASS, che possono essere salvate e richiamate in qualunque momento.

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 Funzione Esempio


d. Visualizzazione d.rast Visualizza una carta raster
db. Gestione del database db.tables Lista tutte le table di un database
g. Operazioni di tipo generale g.list Lista le carte disponibili
i. Elaborazione di immagini i.rectify Rettifica le immagini
ps. Creazione di carte in formato Postscript ps.map Crea una carta in formato Postscript
r. Elaborazione di carte raster r.reclass Modifica le categorie di una carta raster
r3. Elaborazione dati raster 3D (voxel) r3.info Riporta le informazioni relative ad una
carta raster 3D
v. Elaborazione di carte vettoriali 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) e NVIZ (per le rappresentazioni tridimensionali).

Modalità di immissione dei comandi


In GRASS esistono diverse modalità di immissione dei comandi, riconducibili sostanzialmente alle due seguenti:
1) Mediante i tasti e i menù funzionali dell’interfaccia grafica GIS manager.
2) In modalità Linea di Comando, vale a dire scrivendo il nome del comando seguito dai parametri e dalle opzioni
previsti dal comando stesso

Nel presente manuale vengono utilizzati prevalentemente i tasti e i menù funzionali dell’interfaccia grafica GIS
Manager, che risultano sicuramente di più facile utilizzo per gli utenti cui il manuale è destinato. Tuttavia un proficuo
utilizzo di GRASS richiede anche la conoscenza dell’immissione in modalità Linea di Comando, soprattutto
considerando che non tutti i comandi sono accessibili mediante i tasti e i menù funzionali dell’interfaccia grafica. Verrà
quindi analizzata anche questa modalità, nelle sue numerose varianti, sia durante l’uso dell’interfaccia grafica che in un
apposito capitolo alla fine del manuale.

8
Avvio di GRASS
GRASS viene attivato da un terminale digitando il nome assegnato al programma in fase di installazione, ad es.:

e premendo ovviamente [Invio].

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

Nella casella GIS Data Directory: è riportata la directory in cui sono contenuti i dati e nella casella denominata
Project Location l’elenco delle Location disponibili. Si verifichi che la GIS Data Directory indicata corrisponda alla
directory di salvataggio dei dati e che la Location evidenziata sia spearfish60. Oltre al Mapset PERMANENT, che
come si è già precisato viene creato automaticamente quando si crea una Location, è presente anche il mapset user1,
che potrebbe essere utilizzato come Mapset per l’esecuzione degli esercizi. Tuttavia si procederà all’inserimento di un
apposito Mapset, per sperimentare la procedura, per altro molto banale, di creazione di un nuovo Mapset. Allo scopo si
inserisca il nome del Mapset da creare, denominato esercizi, nell’apposita casella vuota sopra il tasto Create new
mapset in selected location. Si prema quindi il tasto Create new mapset

9
Il Mapset creato, esercizi, compare nell’elenco dei Mapsets disponibili.
Si clicchi sul nome per selezionarlo. Si prema quindi il tasto Enter GRASS, in basso a sinistra.

Nello schermo vengono visualizzate tre finestre:


1) Il GIS Manager
2) Un Map Display
3) L’Output

Il GIS manager

Rappresenta la finestra principale per la gestione delle operazioni in GRASS.


Nell’intestazione sono riportati la versione di GRASS utilizzata, la Location e il Mapset correnti.
La prima riga riporta la denominazione di otto menù a discesa, attraverso i quali è possibile accedere ai comandi di
GRASS suddivisi in gruppi funzionali. Si provi ad esempio a cliccare su Raster per visualizzarne il contenuto.
Vengono elencate le funzioni relative all’analisi e alla gestione di carte tipo raster
I tasti riportati nelle due righe sottostanti permettono l’esecuzione diretta di uno o più comandi. Posizionando il cursore
in corrispondenza di un tasto viene visualizzata un sintetica descrizione della sua funzione.
L’area sottostante e suddivisa in due parti, che appaiono inizialmente vuote. In quella superiore vengono elencati i nomi
delle carte, delle immagini o dei comandi caricati per la visualizzazione. Nella parte inferiore viene visualizzato il
pannello con le opzioni relative al comando selezionato.
Le dimensioni della finestra possono ovviamente essere modificate trascinando i bordi o i vertici. E’ anche possibile
modificare la suddivisione della finestra trascinando verso l’alto o verso il basso il quadretto posto alla sinistra della
linea intermedia orizzontale.

10
Il Map Display

E’ la finestra in cui vengono visualizzate le immagini. I tasti nella parte alta della finestra permettono di effettuare
operazioni relative alle modalità e alle caratteristiche di visualizzazione. Anche in questo caso il posizionamento del
cursore in corrispondenza di un tasto permette di visualizzare una sintetica descrizione del tipo di operazione assegnata
al tasto stesso. Nella riga in basso, sono riportati a sinistra il numero di righe, di colonne e la risoluzione (dimensione
delle celle raster) della regione di lavoro, a destra le coordinate del punto in cui è posizionato il cursore.

L’Output

La finestra, inizialmente vuota, è suddivisa in due parti. In quella superiore vengono visualizzati i comandi immessi e
l’eventuale output previsto dagli stessi comandi. Il tasto Clear pulisce la finestra, mentre Save permette di salvare in un
file quanto visualizzato nella finestra. La parte inferiore è utilizzabile per immettere comandi di GRASS in modalità
Linea di Comando, oppure comandi di shell. Il tasto Run esegue il comando immesso, Run (Background) esegue il
comando nella modalità backgound, Run UI apre il pannello (User Interface) per l’immissione dei parametri e delle
opzioni relative al comando immesso, mentre Run in Xterm apre un terminale X per l’immissione dei parametri e delle
opzioni.

Per uscire dal GIS Manager (ma non da GRASS) si clicchi su File (all’inizio della riga dei menù nel GIS Manager) e
su exit nel menù che viene aperto

11
Vengono eliminate le tre finestre e il controllo passa al prompt di GRASS nel terminale a caratteri.

Per riaprire il GIS Manager si immetta al prompt di GRASS il comando:

> gis.m &

Vengono riaperte le tre finestre.

Per uscire da GRASS, si chiuda il GIS Manager e al prompt di GRASS si digiti exit.

Si rientri in GRASS.

12
Il Map Display
Il mezzo più frequentemente utilizzato per la visualizzazione di una carta vettoriale o raster, di un’immagine o di un
grafico, è la finestra grafica o Map Display.
Un Map Display, e più precisamente il Map Display 1, viene aperto automaticamente all’avvio di GRASS, come si è
già avuto modo di constatare. Il Map Display può essere ovviamente spostato, trascinando con il mouse il bordo
superiore della cornice, oppure ridimensionato, mediante il trascinamento di un bordo o di un vertice.

Per poter analizzare e sperimentare le diverse funzioni disponibili nel Map Display è necessario visualizzare qualche
carta.
Per visualizzare una carta raster, si clicchi innazitutto sul tasto nel GIS Manager (secondo tasto della prima riga).
Nell’area sottostante viene riprodotta la stessa icona con la denominazione raster 1 sulla destra. Si clicchi sulla scritta
raster 1. Nella parte inferiore della finestra viene aperto il pannello con l’intestazione Display raster maps, per la
definizione dei parametri e delle opzioni previste dal comando. Si allunghi la finestra verso il basso per visualizzare
l’intero pannello

Nel pannello si clicchi sull’icona alla destra di Base map:. Viene aperta una finestra con l’elenco dei Mapset
disponibili

Si apra la cartella (Mapset) PERMANENT (cliccando sulla crocetta a sinistra). Vengono elencate tutte le carte raster
presenti nel Mapset.

13
Si clicchi su elevation.dem e successivamente sul tasto Ok in basso. Nella finestra del GIS Manager viene inserito il
nome della carta selezionata in sostituzione di raster 1.
Si clicchi quindi il tasto nel Map Display 1 (il primo tasto). La carta elevation.dem viene visualizzata nella finestra

La carta elevation.dem è una carta altimetrica (o DEM, da Digital Elevation Model). I diversi colori con cui
l’immagine è visualizzata corrispondono ai diversi valori altimetrici (in metri s.l.m.) presenti nelle celle che
compongono l’immagine.

Si noti che nella finestra di Output vengono riprodotti i comandi eseguiti da GRASS a seguito della pressione del tasto
. Più precisamente:
d.frame……… (rimuove le eventuali cornici presenti e pulisce la finestra)
d.rast ………(visualizza la carta raster)
g.pnmcomp …… (genera un’immagine di tipo PPM).

14
Si inserisca ora una seconda carta raster, più precisamente la carta denominata geology (che contiene la geologia
dell’area), presente nel Mapset PERMANENT, seguendo la procedura precedente. Vale a dire:
1) Tasto del GIS Manager
2) Clic su raster 2 nella finestra del GIS Manager
3) Clic su alla destra di Base map: nel pannello sottostante
4) Apertura del Mapset PERMANENT
5) Clic su geology e sul tasto Ok
La nuova carta viene inserita nella finestra del GIS Manager al di sopra di quella precedente. Premendo il tasto nel
Map Display vengono visualizzate entrambe le carte, nell’ordine inverso, vale a dire dal basso verso l’alto, in cui sono
elencate nel GIS Manager. L’ultima carta visualizzata, geology, si sovrappone, nascondendola, a quella altimetrica,
elevation.dem.
Si noti che l’ultima carta immessa, geology, è la carta attualmente selezionata, come evidenziato dallo sfondo giallo nel
GIS Manager, e il pannello aperto nella porzione inferiore della finestra si riferisce a questa carta. Per selezionare
un’altra carta ed aprirne il pannello relativo, è sufficiente cliccare sul suo nome nel GIS Manager. Si provi, ad es., a
cliccare su elevation.dem.

Ogni nuova carta immessa viene inserita nella sequenza delle carte presenti nel GIS Manager al di sopra della carta
attualmente selezionata. Per inserire una carta in una specifica posizione nella sequenza, è quindi sufficiente selezionare
la carta al di sopra della quale deve essere effettuato l’inserimento. Con elevation.dem selezionata, si inserisca la carta
soils (che contiene i suoli dell’area) seguendo la procedura già descritta (e che ormai si dà per acquisita). La nuova
carta viene inserita al di sopra di elevation.dem.

E’ possibile modificare la posizione di una carta nella sequenza del GIS Manager, e quindi l’ordine di visualizzazione
delle carte presenti, trascinadone il nome con il tasto sinistro del mouse. Si trascini ad es. geology al di sotto di
elevation.dem. La visualizzazione nel Map Display rende ora visibile solo soils che si sovrappone alle altre due. Si
riporti geology al di sopra di soils trascinandone il nome verso l’alto.

Una carta può essere disattivata premendo il tasto rosso, che diventa bianco, alla sinistra del nome della carta nel GIS
Manager. Si disattivino, ad es., geology e soils e si effettui la visualizzazione. Nel Map Display viene riprodotta solo
elevation.dem.
Si riattivino le due carte, sempre premendo lo stesso tasto (che ritorna rosso).

E’ ovviamente possibile eliminare una carta dal GIS Manager, evidenziandone il nome e utilizzando il tasto di
cancellazione (il sesto della seconda fila). Per eliminare ad es. geology, si clicchi sul nome della carta e quindi sul
tasto di cancellazione. Nello stesso modo si elimini anche soils. Nella finestra del GIS Manager rimane la sola carta
elevation.dem.
Per inserire una carta vettoriale nel GIS Manager e quindi visualizzarla nel Map Display, si utilizza il tasto
(l’ottavo della prima riga). Il procedimento è analogo a quello utilizzato per l’immissione di una carta raster. Si
selezioni innanzitutto elevation.dem in modo che il vettoriale venga inserito al di sopra di questa carta. Al clic sul tasto
viene inserito nella finestra del GIS Manager un rettangolo grigio con la scritta vector 1. Si clicchi sul nome vector
1 per aprire il pannello di gestione delle carte vettoriali

15
Nel pannello si clicchi sull’icona alla destra di Vector map: e si selezioni dal Mapset PERMANENT la carta
vettoriale roads che contiene le strade presenti nell’area. Si visualizzi la carta nel Map Display. Appare elevation.dem
con sovrapposta la rete stradale. Si noti che nella finestra Output viene riportato il comando per la visualizzazione di
una carta vettoriale, vale a dire d.vect.
Seguendo la stessa procedura si immetta la carta vettoriale streams, che contiene i corsi d’acqua, e si visualizzi di
nuovo. Viene rappresentata l’altimetria con sovrapposte le strade e l’idrografia. Quindi è possibile rappresentare più
carte vettoriali contemporaneamente e in sovrapposizione ad una carta raster. Si faccia attenzione che nel GIS Manager
le tre carte siano poste nell’ordine corretto, vale a dire, procedendo dall’alto, streams, roads e elevation.dem. Se
elevation.dem occupasse il primo posto nella lista, nella visualizzazione si sovrapporrebbe ai due vettoriali
nascondendoli. Se necessario si stabilisca l’ordine corretto trascinando le carte.
Si elimini la carta vettoriale roads dal GIS Manager (seleziondola e cliccando ).
E’ ora possibile analizzare e sperimentare le funzioni disponibili nel Map Display.

I tasti funzionali
Il primo tasto , già utilizzato più volte per visualizzare le carte elencate nel GIS Manager, ha più in generale la
funzione di eseguire i comandi elencati nel GIS Manager, che possono essere diversi da un semplice comando di
visualizzazione. L’esecuzione dei comandi viene effettuata utilizzando le caratteristiche di risoluzione ed estensione
della regione corrente. Si clicchi sul tasto per visualizzare le due carte caricate, elevation.dem e streams.
Il secondo tasto esegue i comandi elencati nel GIS Manager, ma tenendo conto delle modifiche eventualmente
apportate alle caratteristiche della regione. Per verificarne gli effetti è quindi necessario modificare la regione corrente,
come verrà sperimentato più avanti.
Il terzo tasto apre il modulo NVIZ per la rappresentazione tridimensionale di immagini. E’ un modulo complesso
per il quale è stato realizzato un apposito manuale e quindi non viene trattato in questa sede. Si clicchi comunque il
tasto per vederne gli effetti. Compare la finestra del modulo NVIZ con la rappresentazione tridimensionale delle due
carte presenti nel GIS Manager. Per uscire da NVIZ si prema il tasto File, in alto a sinistra e Quit nel menù a discesa
che compare (o più semplicemente cliccando sulla crocetta in alto a destra del pannello).
Il quarto tasto cancella le immagini presenti nel Map Display. Si prema il tasto per verificarne gli effetti e si
visualizzino di nuovo elevation.dem e streams con il primo tasto.
Il quinto tasto reimposta il cursore di default (freccia). Viene utilizzato per uscire da altre funzioni del Map Display,
come si vedrà fra poco.

16
Il sesto tasto permette di effettuare ingradimenti delle immagini visualizzate. Esistono due modalità di utilizzo. La
prima permette di ingrandire una porzione dell’immagine definita da un rettangolo tracciato con il tasto sinistro del
mouse all’interno della finestra. Per sperimentare questa modalità, si clicchi il tasto, si posizioni il cursore (che assume
la forma di una crocetta) in punto in alto a sinistra dell’immagine. Tenendo premuto il tasto sinistro del mouse si
trascini il rettangolo che appare verso il vertice in basso a destra dell’immagine. Rilasciando il tasto del mouse, la
porzione dell’immagine contenuta nel rettangolo viene ingrandita in modo da occupare tutta la finestra. Si noti che il
numero di righe e di colonne indicato nela porzione inferiore sinistra del Map Display vengono ridotti di conseguenza,
mentre la risoluzion (30x30) non viene modificata. Ripetendo l’operazione si possono ottenere ulteriori ingrandimenti
dell’immagine.
La seconda modalità consiste nel posizionare il cursore all’interno dell’immagine e nel cliccare il tasto sinistro del
mouse. Ad ogni pressione del tasto del mouse l’immagine viene ingrandita del 30% e centrata in corrispondenza della
posizione del cursore. Per sperimentare questa seconda modalità, si posizioni il cursore in un punto qualsiasi
dell’immagine (meglio se non al centro) e si prema una volta il tasto sinistro del mouse. L’immagine viene ingrandita
del 30% e spostata in modo tale che il suo centro corrisponda alla precedente posizione del cursore. Si prema di nuovo
il tasto sinistro del mouse per verificare l’ulteriore ingrandimento. Per uscire dalla funzione si clicchi il tasto . Il
cursore riassume la forma di una freccia.
Il tasto successivo consente di effettuare riduzioni delle immagini visualizzate. Le modalità operative sono
analoghe a quelle del tasto precedente. Per effettuare una riduzione è possibile definire un’area rettangolare entro la
quale ridurre l’immagine attualmente visualizzata. Allo scopo, premuto il tasto, si posizioni il cursore all’interno
dell’immagine e, tenendo premuto il tasto sinistro del mouse, si definisca il rettangolo. Rilasciando il tasto del mouse
l’immagine precedentemente rappresentata viene ridotta all’interno del rettangolo, permettendo in tal modo la
visualizzazione di una porzione più ampia dell’immagine originale. La porzione di immagine contenuta nel rettangolo
viene visualizzata al centro della nuova immagine. La seconda modalità permette una riduzione progressiva del 30%
posizionando il cursore in punto dell’immagine e premendo il tasto sinistro del mouse. Si sperimenti anche questa
modalità e si noti che il punto definito dal cursore definisce il centro della nuova immagine. Per uscire dalla funzione si
clicchi . Se a seguito della riduzione l’immagine risulta troppo piccola, la si ingrandisca con la funzione precedente.
Il tasto successivo permette lo spostamento dell’immagine all’interno del Map Display. Si clicchi il tasto (il cursore
assume la forma di una mano) e si trascini, tenendo premuto il tasto sinistro del mouse, l’immagine nella posizione
desiderata. Al rilascio del tasto del mouse, l’immagine viene ridisegnata nella nuova posizione. Per uscire dalla
funzione si clicchi .
Il tasto permette il ridimensionamento o il riposizionamento dell’immagine alla situazione precedente all’ultima
operazione di ingrandimento, riduzione o spostamento. Si clicchi il tasto una volta. Dal momento che l’ultima
operazione effettuata dovrebbe essere stata uno spostamento dell’immagine, questa viene ridisegnata nella posizione
precedente. Continuando a cliccare il tasto si dovrebbe risalire anche alle precedenti operazioni di riduzione e
ingrandimento.
Il decimo tasto offre diverse opzioni che permettono di modificare l’area di visualizzazione ed impostare, ed
eventualmente salvare, una nuova regione di lavoro. Poiché molte delle analisi e delle elaborazioni effettuate con
GRASS, come ad es. la costruzione di una nuova carta, vengono effettuate utilizzando l’estensione e la risoluzione
della regione corrente, l’argomento riveste un particolare interesse e merita di essere analizzato in dettaglio. Per
sperimentare le opzioni si modifichi la visualizzazione dell’immagine in modo che sia diversa da quella iniziale (ad es.
ingrandendone una porzione con ). Premendo il tasto vengono elencate le diverse opzioni.

Si clicchi quindi Zoom to default region (quinta opzione del menu). L’area di visualizzazione viene fatta coincidere
con la regione di default, vale dire la regione geografica di forma rettangolare i cui limiti sono stati definiti al momento
della creazione della Location Spearfish.
L’opzione Zoom to selected map permette di dimensionare l’immagine in modo da contenere completamente una carta
selezionata nel GIS Manager. Mentre la carta raster elevation.dem ha un’estensione che coincide con la regione di
default, la carta vettoriale streams è leggermente più estesa e non viene quindi visualizzata completamente nella
regione di default. Si clicchi su streams nel GIS Manager per selezionare la carta. Si clicchi quindi il tasto e

17
l’opzione Zoom to selected map. L’area di visualizzazione viene ampliata in modo da contenere completamente anche
streams.
Si ritorni alla regione di default con l’opzione Zoom to default region.
Le due opzioni sperimentate modificano le dimensioni dell’area di visualizzazione delle immagini, ma non la regione
corrente. Per modificare la regione corrente si utilizza l’opzione Set current region (WIND file) to match display. Si
provi ad es. a ridurre le dimensioni dell’area visualizzata ingrandendone una porzione. Si clicchi quindi l’opzione Set
current region (WIND file) to match display. La regione corrente viene impostata con le dimensioni e la risoluzione
visualizzate nel Map Display, e rimane attiva fino ad una successiva modifica. Per verificarlo, si clicchi l’opzione
Zoom to default region. Le immagini vengono visualizzate con l’estensione della regione di default, ma la regione
corrente non viene modificata. Infatti cliccando sull’opzione Zoom to current region (set with g.region) si ottiene
una visualizzazione più ridotta, coincidente con la regione corrente precedentemente impostata e salvata.
Per reimpostare come regione corrente la regione di default si clicchi Zoom to default region e quindi Set current
region (WIND file) to match display. La regione di default viene salvata come regione corrente.
Nell’esempio precedente, la regione modificata è stata persa nel momento in cui è stata sostituita da quella di default.
E’ tuttavia possibile salvare in un file le caratteristiche di una regione, in modo da poterla riutilizzare successivamente.
Per sperimentare questa possibilità si ingrandisca una porzione dell’immagine e quindi si clicchi l’opzione Save
display geometry to named region. Nella finestra che viene aperta si inserisca il nome della regione da salvare, ad es.
regione1 e si clicchi il tasto Save sottostante

La regione viene salvata con il nome regione1 in una apposita directory.


Per sperimentare l’utilizzo della regione salvata, si reimposti la regione di default (con le funzioni del menu Zoom to
default region e Set current region (WIND file) to match display, quindi si clicchi su Zoom to saved region. Nella
finestra che viene aperta è presente il file regione1 all’interno del Mapset esercizi.

Si clicchi su regione1 e quindi sul tasto Ok.


Viene impostata la nuova regione, che diventa la regione corrente, e le immagini visualizzate di conseguenza.
Si reimposti la regione di default come regione corrente, mediante la consueta sequenza Zoom to default region e Set
current region (WIND file) to match display.
Si clicchi per uscire dal comando.
L’undicesimo tasto consente un’interrogazione interattiva di carte raster o vettoriali. Se sono presenti più carte
l’interrogazione viene effettuata soltanto su quella selezionata nel GIS Manager. Il tasto esegue il comando r.what se la
carta selezionata è raster, v.what se vettoriale. Si clicchi pertanto su elevation.dem nel GIS Manager. Quindi sul tasto
di interrogazione . Si posizioni il cursore in un punto della carta e si prema il tasto sinistro del mouse. Nella finestra
dell’Output vengono riportate le coordinate chilometriche UTM (Est e Nord nell’ordine) del punto e il valore di
categoria presente nella cella, che in questo caso è il valore altimetrico. Ad esempio

18
Se è presente un’etichetta descrittiva (label), questa viene riportata alla destra del valore di categoria. Si inserisca ad es.
la carta geology nel GIS Manager, si selezioni la stessa carta (se non già selezionata), si visualizzi nel Map Display, si
prema il tasto di interrogazione e si individui un punto nella carta. Nell’Output, oltre alle coordinate del punto e al
valore di categoria viene riportata anche l’etichetta descrittiva (litologia)

Per sperimentare l’interrogazione di una carta vettoriale, si carichi (al di sopra di tutte le carte raster) la carta roads che,
a differenza di streams, ha una table degli attributi e risulta più idonea a sperimentare l’interrogazione. La si selezioni
nel GIS Manager e la si visualizzi nel Map Display. Quindi si effettui l’interrogazione posizionando il cursore in
corrispondenza di un segmento stradale. Nell’Output vengono listate le informazioni relative al segmento individuato.
Ad es.

Con il tasto si possono effettuare misure lineari sulle immagini utilizzando il mouse. Si clicchi il tasto e si posizioni
il cursore, che assume la forma di una matita, in un punto qualsiasi dell’immagine. Tenendo premuto il tasto sinistro del
mouse si sposti il cursore in un altro punto. Si rilasci il tasto del mouse. Nell’Output viene riportata la lunghezza del
segmento tracciato e la lunghezza cumulata (che inizialmente hanno lo stesso valore). Partendo dall’estremità della
freccia tracciata, si tenga premuto il tasto e si sposti il cursore in un altro punto. Al rilascio del tasto del mouse viene
riportata la lunghezza del nuovo segmento e la lunghezza cumulata dei due segmenti. Per effettuare la misura di un
altro tracciato, si clicchi per uscire dal comando, e si ripeta la procedura.
Il tasto successivo viene utilizzato per il tracciamento di un profilo attraverso una carta raster. Per sperimentare la
funzione, nel GIS Manager si disattivi geology (cliccando sul quadretto rosso), si selezioni elevation.dem e si

19
visualizzi nel Map Display. All’attivazione del tasto compare la seguente finestra, denominata ‘Profile Window’, che
possiede cinque tasti

Di norma, il tracciamento del profilo viene effettuato sulla carta selezionata nel GIS Manager. Il primo tasto consente
però di selezionare una carta diversa su cui effettuare l’operazione. Il secondo tasto permette di definire la traccia del
profilo sul Map Display. Il terzo tasto effettua il tracciamento del profilo nella finestra. Il quarto cancella sia la traccia
che il profilo, mentre il quinto ed ultimo tasto permette di salvare il profilo nel formato EPS (Encapsulated Post Script).
Poiché si intende tracciare il profilo sulla carta attualmente selezionata e visualizzata, elevation.dem, si clicchi sul
secondo tasto nella finestra ‘Profile Window’. Il cursore assume la forma di una matita. Si posizioni il cursore in
prossimità del vertice inferiore sinistro della carta (è la zona con i valori di quota più elevati). Tenendo premuto il tasto
sinistro del mouse si trascini il cursore fino al vertice destro superiore della carta (dove si trovano le quote più basse).
Si rilasci il tasto del mouse. Nella finestra Output viene riportata la lunghezza del segmento tracciato. Si clicchi il terzo
tasto per il tracciamento del profilo che dovrebbe avere un aspetto simile al seguente

Si cancellino quindi la traccia e il profilo con il quarto tasto e si ripeta il procedimento. E’ possibile definire come
traccia del profilo una spezzata composta da più segmenti; nel profilo i cambi di direzione vengono evidenziati da linee
verticali che separano i diversi segmenti. Si provi anche a salvare il profilo visualizzato cliccando sull’ultimo tasto del
‘Profile Window’. Nella finestra che viene aperta si scelga la directory in cui salvare il file, si immetta il nome da
assegnare al file (l’estensione .eps viene assegnata automaticamente) e si prema il tasto Salva. Il file viene salvato e il
profilo può essere successivamente stampato e/o visualizzato.
Si chiuda la ‘Profile Window’ e si clicchi per uscire dal comando
Il tasto successivo esporta l’immagine visualizzata in un file grafico. Alla pressione del tasto vengono visualizzati i
formati disponibili. Cliccando sul formato scelto viene aperta una finestra per l’immissione del nome del file
(l’attribuzione dell’estensione è automatica).
Il terz’ultimo tasto permette di inviare l’immagine visualizzata nel Map Display alla stampante o di salvarla nei
formati PDF o EPS. Alla pressione del tasto compare una finestra per la scelta delle opzioni.
Il penultimo tasto permette di selezionare una modalità di visulizzazione delle immagini conforme alla geometria
della regione ed è la modalità di default, mentre l’ultimo tasto seleziona invece una modalità di visualizzazione che
comporta il riempimento dell’intero spazio disponibile nel Map Display.
Per comprendere il funzionamento dei due tasti, ci si assicuri che la regione di visualizzazione sia quella di default
(tasto e ‘Zoom to deafult region’). Con il tasto si effettui lo zoom di una striscia rettangolare simile a quella
visualizzata nella seguente figura

20
La porzione di immagine selezionata ha un rapporto altezza/larghezza diverso dal quello del Map Display e viene
visualizzata adattando la dimensione massima, vale a dire la larghezza, alla larghezza del Map Display. In tal modo
circa metà della finestra non viene utilizzata, come evidenziato nella figura seguente.

Si prema l’ultimo tasto . L’immagine viene visualizzata utilizzando tutto lo spazio disponibile nel Map Display. Più
precisamente l’immagine precedente viene centrata e vengono visualizzate le porzioni superiore e inferiore dell’area
che in precedenza non erano visibili. La larghezza dell’area visualizzata non viene modificata. In definitiva l’utilità di
questa funzione consiste nello sfruttamento di tutto lo spazio utile alla visualizzazione.

21
Si ritorni alla modalità di default cliccando il tasto .

A questo punto sono state analizzate tutte le funzioni disponibili nel Map Display.
Si chiuda il GIS Manager e si esca da GRASS.

22
Il GIS Manager
In questo paragrafo vengono analizzate, e sperimentate quando i dati presenti nella Location Spearfish lo permettono, le
diverse funzioni dei tasti presenti nel GIS Manager.
Si entri pertanto in GRASS e si carichi la carta raster elevation.dem, secondo le modalità descritte nel paragrafo
precedente.

I tasti funzionali

Utilizzo di più Map Display


Come è ormai noto, all’ingresso in GRASS viene automaticamente attivato il GIS Manager e viene aperto un Map
Display, denominato Map Display1.
E’ però possibile aprire e utilizzare contemporaneamente un numero illimitato di Map Display cliccando sull’apposito
tasto del GIS Manager (primo tasto della prima riga).
Si sperimenti la funzione cliccando il tasto una volta. Viene aperto un nuovo Map Display denominato Map Display 2.
Si noti che la finestra del GIS Manager appare vuota. Infatti ad ogni Map Display viene associato uno specifico
settaggio del GIS Manager.
Si carichi la carta raster geology e la carta vettoriale roads nel GIS Manager. Queste due carte rappresentano una
sequenza di carte assegnata al Map Display 2 come verificabile premendo il tasto di visualizzazione del Map Display2.
Per passare da un Map Display all’altro è sufficiente cliccare sul suo bordo superiore, che da grigio diventa blu. Quindi
il Map Display attivo è facilmente distinguibile dagli altri Map Display aperti. Si passi al Map Display 1 cliccando sul
suo bordo superiore e i noti che nel GIS Manager viene elencata la carta elevation.dem associata a questo Map
Display.
Si chiuda il Map Display 2 cliccando sulla crocetta in alto a destra.

Opzioni di visualizzazione delle carte raster


La visualizzazione di una carta raster è già stata effettuata più volte, ma in modo molto semplice. In realtà sono
disponibili diverse opzioni selezionabili mediante il pannello aperto nella parte inferiore del GIS Manager.

Selezione di specifiche categorie


E’ possibile effettuare la visualizzazione di specifiche categorie, o di specifici intervalli di categoria, della carta
selezionata. Se non già selezionata, si selezioni la carta elevation.dem (che contiene valori di quota da un minimo di
1066 metri ad un massimo di 1840 m.) e si estenda la finestra del GIS Manager verso il basso trascinando il bordo
inferiore, in modo da visualizzare completamente il pannello delle opzioni. Per visualizzare solo le aree con valori
altimetrici compresi fra 1100 e 1200 metri e fra 1500 e 1700 si immettano nell’apposita casella i due intervalli di quota
separati da una virgola.

Si visualizzi quindi l’immagine per verificare che nel Map Display vengono effettivamente rappresentate solo le aree
selezionate.
Si ritorni alla rappresentazione di tutte le categorie cancellando i valori precedentemente inseriti nella casella e si
visualizzi di nuovo.

Overlay dei valori null


Si è già sperimentato che una carta raster ricopre, nascondendole, le altre carte precedentemente visualizzate. Se però
una carta presenta delle aree con valori null, vale a dire celle a cui non è stato assegnato alcun valore di categoria,
queste risultano trasparenti permettendo la visione di una carta sottostante. Si inserisca ad es. la carta landuse (presente
in PERMANENT) al di sopra di elevation.dem. Si disattivi elevation.dem (cliccando il quadretto rosso) e si visualizzi
nel Map Display. Appare la sola carta landuse che contiene una suddivisione del territorio in aree a diversa
destinazione d’uso. Gran parte dell’area contiene il valore null che appare in bianco.
Si attivi ora elevation.dem e si visualizzi di nuovo. La carta landuse viene sovrapposta all’altimetria che tuttavia risulta
visibile in corrispondenza delle aree con valore null.
Questa trasparenza delle aree con valore null è resa possibile dall’opzione overlay maps from other layers
(transparent null value cells) presente nel pannello delle opzioni, che è attiva di default. Si clicchi sul relativo
quadretto per disattivarla e si visualizzi nel Map Display. La carta altimetrica non risulta più visibile in corrispondenza
delle aree bianche.
Si riattivi l’opzione overlay maps …. , si disattivi landuse (cliccando sul quadretto rosso). e si visualizzi nel Map
Display.

23
Trasparenza
Indipendentemente dalla presenza di aree con valore null, è possibile conferire una certa trasparenza ad una carta raster
in modo da rendere visibile quella sottostante.
Si carichi fields (che contiene appezzamenti di terreno appartenenti a diversi proprietari) e la si trascini al di sotto di
elevation.dem nel GIS Manager. Si disattivi elevation.dem e si visualizzi. Nel Map Display appare ovviamente la
sola carta fields. Si attivi e si selezioni elevation.dem. Nel pannello delle opzioni si attribuisca alla carta, trascinando
verso destra l’apposito cursore, un valore di trasparenza di 0.5.

La visualizzazione nel Map Display mostra in primo piano elevation.dem, in parziale trasparenza, e al di sotto fields.
Si riprovi con un diverso valore di trasparenza, ad es, 80, per valutare la differenza.
Si riporti il livello di trasparenza di elevation.dem ad 1.

Inserimento di una legenda


Per inserire una legenda relativa ad una carta raster si utilizza il tasto (il settimo della prima fila).
Per sperimentare l’inserimento della legenda relativa a landuse, si attivi la carta e si disattivino fields ed elevation.dem
nel GIS Manager. Si selezioni landuse, e si clicchi il tasto . Nella finestra del GIS Manager viene inserita l’icona e
la scritta legend 1. Si clicchi sul nome legend 1 per aprire il pannello delle opzioni.

Si clicchi sull’icona alla destra di Raster map: e si scelga landuse dal Mapset PERMANENT.
Quindi si visualizzino le immagini nel Map Display. La legenda, che appare sovrapposta alla carta, riporta otto caselle
relative alle otto categorie presenti nella carta landuse con le rispettive denominazioni. Si noti che nell’Output viene
visualizzato il comando d.legend, che effettua appunto l’inserimento della legenda.
E’ possibile modificare le caratteristiche della legenda utilizzando le opzioni del pannello. Si provi ad es. a ridurne le
dimensioni utilizzando la casella alla destra di set legend corners (bottom, top, left, right). I valori specificati nella
casella definiscono la posizione dei lati del rettangolo che deve contenere la legenda, riferita al vertice inferiore sinistro
ed espressa come percentuale dell’area della finestra. I valori di default presenti nella casella definiscono la posizione
del lato inferiore al 5% dell’altezza della finestra, il lato superiore al 95%, il lato sinistro al 5% della larghezza e quello
destro al 10%. Per ridurne le dimensioni si inseriscano ad esempio i seguenti valori 1,30,1,10 e si visualizzi di nuovo la
legenda, che risulta ridotta e più vicina al vertice inferiore sinistro della finestra.

Inserimento di una scala grafica


Per inserire una scala grafica si prema il tasto (il primo della seconda riga) e si visualizzi l’immagine. La scala
grafica viene riprodotta con le caratteristiche di default in prossimità del vertice superiore sinistro della finestra. Il
comando eseguito è d.barscale come riportato nell’Output. Per modificare le caratteristiche della scala grafica, si
possono anche in questo caso utilizzare le opzioni del pannello che viene aperto cliccando su scale 1. Per modificarne
ad es. la posizione si inseriscano nella casella enter x,y for scale lower left corner i valori 60,95. La scala viene

24
posizionata in modo tale che il vertice inferiore sinistro si trovi al 60% dal bordo sinistro dell’area e al 95% dal bordo
superiore.
Si cancellino ora dal GIS Manager la carta landuse, la sua legenda e la scala (selezionandole e cliccando ).
Se non già disattivate, si disattivino la carte rimanenti.

Opzioni di visualizzazione delle carte vettoriali


Il pannello di gestione delle carte vettoriali contiene molte opzioni diversamente utilizzabili in funzione della tipologia
degli oggetti presenti nella carta (punti, linee, aree). Si carichi e si visualizzi la carta vettoriale roads (viene eseguito il
comando d.vect) che contiene esclusivamente elementi lineari.
Come per le carte raster, anche per le vettoriali è possibile limitare la visualizzazione agli elementi appartenenti a
specifiche categorie. Nella casella alla destra di query cat values (se necessario si allunghi il pannello verso il basso) si
scriva 1,4 ( la carta contiene 5 diverse categorie di strade, numerate da 1 a 5).

Inoltre si attivi il tasto alla sinistra di categories nella sezione del pannello denominata Display:

Nella visualizzazione sono rappresentate solo le strade appartenenti alle categorie selezionate e in corrispondenza di
ogni segmento lineare che costituisce una strada è riportato il valore di categoria.
Si cancelli la selezione dei valori 1,4 dalla relativa casella e si disattivi la visualizzazione delle categorie.
Per sperimentare la scelta del colore e dello spessore con cui vengono tracciate le linee, in corrispondenza della riga
Draw lines: si clicchi sulla casella nera alla destra di color e nella tavolozza che appare si clicchi sul colore rosso.
Quindi nella casella più a destra si porti il valore di width a 2 (il valore si può scrivere direttamente o selezionare con le
frecce sulla destra). Si visualizzi di nuovo la carta che ora presenta le strade in rosso con uno spessore di 2 pixels.
Si disattivi roads.
Per sperimentare la scelta di un numero maggiore di opzioni, si carichi e si visualizzi la carta vettoriale soils che
contiene i 54 tipi diversi di suolo (secondo una classificazione pedologica locale) presenti nell’area e contiene pertanto
dei poligoni con i relativi centroidi. I diversi appezzamenti risultano delimitati da bordi di colore nero, sono
indistintamente colorati in grigio e la posizione dei centroidi all’interno di ciascun appezzamento è definito da un
piccolo cerchio. Il valore di categoria di ogni appezzamento non viene visualizzato. Si modifichi la rappresentazione in
modo tale da visualizzare i valori di categoria in blu, i centroidi mediante delle crocette con una dimensione di 3 pixel, i
bordi degli appezzamenti di colore rosso e l’interno con una colorazione diversa (e casuale) a seconda del valore di
categoria.
Nel pannello delle opzioni:
a) Si attivi il tasto alla sinistra di categories per attivare la visualizzazione dei valori di categoria.
b) Alla destra di Point symbols: si clicchi il tasto icon. Nella finestra che viene aperta si apra la cartella basic, si
clicchi sull’ultimo simbolo dell’elenco (x) e si clicchi il sottostante tasto Ok. Si inserisca alla destra di size il valore 3.
In tal modo i centroidi verranno rappresentati da crocette con la dimensione di 3 pixel.
c) Alla destra di Draw lines: si clicchi sulla casella color e si selezioni il colore rosso. I bordi degli appezzamenti
verrano tracciati in rosso.
d) Alla destra di Fill areas: si attivi la casella random colors in modo che le aree dei diversi appezzamenti, anziché in
grigio, vengano rappresentati con una colorazione diversa (e casuale) a seconda del valore di categoria.
e) Alla destra di Label vectors: si clicchi su text color e si scelga il colore blu, in modo che i valori di categoria
vengano visualizzati con questo colore.
Il pannello dovrebbe avere questo aspetto

25
Si visualizzi l’immagine e si verifichi il risultato.
Si esca dal GIS Manager e si rientri con gis.m &.

Esercizio di verifica 1
Nel Map Display 1 si visualizzi l’uso del suolo (raster landuse) contemporaneamente alle aree con quote comprese fra
1400 e 1600 metri (raster elevation.dem) e ai corsi d’acqua di categoria 1 e 2 (vettoriale streams) in colore blu.
In un secondo Map Display, si visualizzi la geologia (raster geology) con una trasperenza uguale a 0,4 e al di sotto l'uso
del suolo (raster landuse), con sovrapposte la rete stradale (vettoriale roads) in rosso, con una larghezza delle linee di 2
pixel e le linee elettriche (vettoriale t_powerlines) in nero con una larghezza delle linee di 3 pixel, e una scala grafica.
Alla fine dell'esercizio si chiuda il Map Display 2, si esca e si rientri nel GIS Manager.

Visualizzazione di carte RGB e HIS


Il terzo tasto , che esegue i comandi d.rgb o d.his, combina e visualizza tre carte raster contenenti rispettivamente i
canali, o componenti, R (red), G (green) e B (blue), oppure i canali H (hue), I (intensity) e S (saturation) di una stessa
immagine.

Creazione di un istogramma o di un diagramma a torta


Il quarto tasto , connesso al comando d.histogram, permette la costruzione di un istogramma o di un diagramma a
torta per illustrare la distribuzione di frequenza dei valori contenuti in una carta raster. Premendo il tasto nel GIS
Manager appare l’icona con la denominazione histogram 1. Cliccando sul nome viene aperto il pannello delle opzioni.
Si clicchi sull’icona alla destra di Raster to histogram: e dal Mapset PERMANENT si scelga geology.
Cliccando il primo tasto del Map Display viene visualizzato l’istogramma con le nove categorie presenti nella carta
sull’asse delle x e sull’asse verticale il numero di celle (in migliaia, come specificato nella didascalia).
Nel pannello delle opzioni, nella casella a destra di Graph style, si clicchi la freccia e si selezioni pie. Si prema il tasto
di visualizzazione nel Map Display. La distribuzione di frequenza dei valori di geology viene rappresentata mediante
un diagramma circolare, o diagramma a torta, con l’ampiezza dei settori proporzionale alla percentuale di frequenza
delle nove classi.
La carta geology contiene nove categorie rappresentate da numeri interi da 1 a 9. Se una carta ha valori costituiti da
numeri decimali, e quindi su scala continua, questi vengono di default suddivisi in 255 classi nell’istogramma. Il
numero di classi può tuttavia essere modificato dall’utente. Per sperimentare questa possibilità, nel pannello delle
opzioni si clicchi sull’icona alla destra di Raster to histogram: e dal Mapset PERMANENT si scelga slope che viene
automaticamente sostitutito a geology. La carta slope contiene l’acclività (o pendenza) dei versanti, con valori su scala
continua da un minimo di 0° ad un massimo di 52,520164°. Nel pannello in corrispondenza di Graph style si scelga
bar come tipo di rappresentazione. Si visualizzi quindi nel Map Display. I valori di acclività vengono suddivisi in 255

26
classi, rappresentate sull’asse orizontale. Si modifichi il numero di classi scrivendo ad es. 20 nell’apposita casella alla
destra di Steps/bins for values (fp maps only) nel GIS Manager e si visualizzi di nuovo.
Si elimini l’istogramma dall’elenco del GIS Manager.

Inserimento dei valori delle celle nella carta visualizzata


Il quinto tasto consente di visualizzare il valore numerico contenuto all’interno di ciascuna cella di una carta raster,
mediante l’esecuzione del comando d.rast.num. Il numero massimo di valori rappresentabili è limitato a 10.000 e
quindi tale opzione può essere utilizzata solo con carte a bassa risoluzione (celle molto grandi) o su porzioni limitate di
carte ad alta risoluzione (celle molto piccole). Questa condizione in realtà non costituisce un limite pratico, in quanto in
una visualizzazione di un numero elevato di celle molto piccole i valori risultano comunque illeggibili.
Per sperimentare questo comando si carichi e si visualizzi geology. Si prema quindi il tasto . Viene inserita l’icona
del comando con la scritta cell values 1. Si clicchi sulla scritta e si selezioni la carta geology dal Mapset
PERMANENT. Al momento della visualizzazione sul Map Display, viene emesso il seguente messaggio

che segnala il numero eccessivo di valori da visualizzare (l’area visualizzata contiene infatti più di 10000 celle). Si
clicchi il tasto Ok. Utilizzando il tasto del Map Display si selezioni quindi una porzione molto piccola dell’area. Se
l’area selezionata è sufficientemente piccola, risultano visibili i valori di categoria presenti nelle celle come
nell’immagine seguente. In caso contrario si riduca ulteriormente l’area.

Si cancelli dal GIS Manager la rappresentazione dei valori numerici e la carta geology.

Inserimento di frecce direzionali nelle celle


Il tasto , che esegue il comando d.rast.arrow, permette l’inserimento all’interno delle celle di frecce la cui
direzione è definita dal valore contenuto nella cella. Per quanto questa funzione possa essere utilizzata per una qualsiasi
carta raster, assume un significato solo quando la carta contiene effettivamente dati direzionali, come nel caso di una
carta dell’orientazione dei versanti. In questo tipo di carta, almeno così come viene calcolata in GRASS partendo da un
DEM, i valori presenti nelle celle indicano l’orientazione del versante con valori da 0 a 360° procedendo da Est in
senso antiorario.
Per sperimentare la funzione, si ridimensioni la visualizzazione alla regione di default (tasto e ‘Zoom to default
region’) e si carichi la carta aspect dal Mapset PERMANENT. La carta viene rappresentata con diverse tonalità di
grigio a seconda dell’orientazione delle celle. Per inserire le frecce, si clicchi sul tasto e quindi sul nome arrows 1.
Dal pannello delle opzioni si carichi aspect e si visualizzi. Apparentemente nell’immagine non vengono visualizzate le
frecce. In realtà le frecce, di colore verde di default, vengono tracciate, ma la risoluzione è troppo elevata per renderle
distintamente visibili. Per visualizzarle si effettui un ingrandimento di una piccola porzione dell’area con il tasto .
Per verificare il rapporto che intercorre fra la direzione delle frecce e i valori presenti nelle celle, si inseriscano anche
questi valori, cliccando l’apposito tasto e selezionando di nuovo aspect. Nel pannello delle opzioni si sostituisca il
27
colore black con yellow nella casella a destra di Color for cell values: e si visualizzi il tutto nel Map Display, che
dovrebbe assumere un aspetto simile al seguente

Se i numeri non risultano leggibili si ingrandisca una porzione più piccola.

Si cancellino dal GIS Manager la carta aspect e i comandi di visualizzazione dei numeri e delle frecce.
Si ridimensioni la visualizzazione alla regione di default.

Tracciamento di un reticolato
Il tasto consente, mediante il comando d.grid, l’inserimento di un reticolato nel Map Display. Nel caso in cui il
sistema di coordinate adottato per la Location sia un sistema chilometrico (UTM o Gauss-Boaga) viene inserito un
reticolato chilometrico costituito dai cosiddetti paralleli e meridiani rete, mentre se il sistema di coordinate è quello
geografico (latitudine e longitudine) si può sovrapporre un reticolato geografico (meridiani e paralleli geografici) ed
opzionalmente determinare la distanza di una linea lossodromica (a direzione costante) o di una linea geodesica (sulla
superficie sferica) fra due punti presenti sulla carta. Dal momento che nella Location Spearfish il sistema adottato è
l’UTM, si può solo sperimentare il tracciamento di un reticolato chilometrico.
Si attivi, selezioni e visualizzi elevation.dem. Si clicchi quindi il tasto . Nel GIS Manager viene inserito gridline 1.
Si clicchi su gridline 1 e nel pannello delle opzioni si scelga il colore blu in corrispondenza della casella grid & text
color e si inserisca il valore 5000 nella casella grid size (map units)

Visualizzando nel Map Display viene disegnata l’altimetria con sovrapposti i paralleli e meridiani rete (in blu)
distanziati di 5000 m come risulta dai valori riportato ai bordi della carta.
Si cancelli dal GIS Manager il comando di tracciamento del reticolato.

Inserimento di un comando in modalità Linea di Comando

28
Quando si inserisce un’icona nella lista del GIS Manager, in realtà si inseriscono uno o più comandi che vengono
eseguiti al momento della visualizzazione nel Map Display, come visualizzato nella parte superiore della finestra
Output. I parametri e le opzioni associati ai comandi sono scelti dall’utente mediante il pannello delle opzioni.
E’ tuttavia possibile immettere direttamente un comando nella sequenza del GIS Manager, utilizzando la sintassi della
modalità Linea di Comando che consiste nello scrivere il nome del comando seguito dalla definizione dai parametri e
delle opzioni. Questa opzione permette quindi di utilizzare tramite il GIS Manager tutti i comandi disponibili in
GRASS e quindi anche quelli non accessibili direttamente tramite i tasti o i menù funzionali presenti nel GIS Manager.
Per sperimentare la funzione e verificare la corrispondenza fra l’immissione tramite i tasti funzionali e la modalità a
Linea di Comando, si può utilizzare un comando molto semplice come quello per il tracciamento di un reticolato
chilometrico appena sperimentato.
Con elevation.dem selezionato nel GIS Manager, si clicchi il tasto e nel pannello delle opzioni si scelga il colore
blu in corrispondenza della casella grid & text color e si inserisca il valore 5000 nella casella grid size (map units).
Si modifichino anche i valori dell’origine delle coordinate scrivendo nell’apposita casella grid origin (east, north) i
valori 2000 e 4000 in modo che i meridiani vengano tracciati ogni 5000m partendo dal valore 2000 e i paralleli ogni
5000m partendo da 4000. Si visualizzi nel Map Display e si osservi nella finestra Output la sintassi del comando che
viene eseguito:
d.grid size=5000 origin=2000,4000 color=0:0:255 bordercolor=0:0:0.

Lo stesso risultato può essere ottenuto inserendo direttamente il comando nella sequenza del GIS Manager. Allo scopo
si clicchi su . Si clicchi su cmd 1 e nel pannello che viene aperto si inserisca il comando nell’apposito spazio

Si noti che il comando è stato immesso in modo semplificato con s per size, c per color e o per origin. Inoltre il colore
è stato definito con il suo nome, blue, anzichè le componenti RGB. Infine il colore del bordo non è stato definito in
quanto nero di default.
Si disattivi gridline e si visualizzi. L’immagine che si ottiene è identica a quella precedente.

Inserimento di gruppi di comandi


Si è già sperimentato più volte l’inserimento di comandi nel GIS Manager. E’ possibile inserire gruppi di comandi
mediante il tasto . Per sperimentare l’opzione si cancellino le carte e i comandi presenti nel GIS Manager e si
inseriscano nell’ordine la carta raster geology e la carta vettoriale streams.
Si selezioni geology@PERMANENT nella lista e si clicchi . Al di sopra di geology@PERMANENT viene
inserito group 1.
Si selezioni group 1 e si clicchi per l’inserimento di una legenda.
Si clicchi su legend 1 per aprire il pannello delle opzioni. Si selezioni geology come Raster map e si inseriscano i
valori 5,50,5,10 come dimensioni della legenda nella casella set legend corners (bottom, top, left, right).
Si selezioni di nuovo group 1 e si clicchi per l’inserimento di una scala grafica.
Si noti che i due ultimi comandi vengono inseriti in connessione a group 1 come dalla seguente figura

29
Si visualizzi nel Map Display. Vengono disegnati la carta geologica con la relativa legenda e scala, e la rete idrografica.
Si disattivi group 1 e si visualizzi di nuovo. Tutti i comandi inseriti nel gruppo non vengono eseguiti.
Un comando può essere spostato da un gruppo verso l’esterno e viceversa mediante trascinamento con il mouse. Si
provi ad es. ad inserire streams all’interno del gruppo trascinandolo verso il basso.
Si possono ovviamente inserire più gruppi e i comandi possono essere spostati da un gruppo all’altro, sempre mediante
trascinamento. Cancellando un gruppo si cancellano tutti i comandi del gruppo. Si provi ad es. a cancellare group 1.

Duplicazione di un comando
Un comando presente nella lista può essere duplicato mediante il tasto .
Si cancellino tutti comandi dal GIS Manager e si inserisca streams. Si clicchi il tasto . Il comando viene duplicato
nella lista. Ovviamente il nuovo comando presenta lo stesso settaggio del comando originale e la visualizzazione
comporta il disegno della stessa immagine due volte, rendendo praticamente inutile la duplicazione.
Se però un’immagine è il risultato di un settaggio complesso che ha richiesto la modifica di molti parametri e si vuole
avere una visualizzazioone alternativa solo leggermente diversa, risulta conveniente duplicare il comando e modificarne
il settaggio. A titolo di esempio si cancellino i due comandi relativi a streams e si carichi il comando di visualizzazione
di geology e di una legenda. Nel pannello delle opzioni della legenda si definisca geology come Raster map. In
corrispondenza di set legend corners (bottom, top, left, right) si immetta 5,40,5,10. In Legend appearance: text
color si scelga red. Si attivi la sottostante casella do not display values. La visualizzazione comporta quindi il disegno
della legenda di geology con una specifica dimensione, in una posizione definita, con le etichette descrittive in colore
rosso. Per definire una legenda con le stesse caratterisitiche ma con i numeri di categoria anziché le etichette, si duplichi
il comando con . Si selezioni il comando duplicato e nel pannello delle opzioni si attivi do not display labels e si
disattivi do not display values.
Si disattivi la legenda originale nel GIS Manager e si visualizzi nel Map Display. La legenda ha le stesse caratteristiche
di quella precedente con l’unica differenza che vengono visualizzati i numeri di categoria anziché le etichette
descrittive.
Si hanno quindi a disposizione due comandi che possono essere attivati in alternativa a seconda del tipo di legenda che
si vuole visualizzare.

Salvataggio del settaggio del GIS Manager


Il settaggio corrente del GIS Manager può essere salvato in un file mediante il tasto e richiamato in qualunque
momento. Per salvare il settaggio corrente (se non è presente alcun comando nel GIS Manager, se ne inserisca
qualcuno) si prema il tasto e nella finestra che compare si inserisca il nome che si vuole assegnare al file, ad es.
settaggio1. Cliccando il tasto Salva il file viene salvato, con l’estensione .grc assegnata automaticamente, nella
directory di lavoro riportata nella parte alta della finestra (o a scelta in qualunque altra directory).

Inserimento di un settaggio precedentemente salvato


Mediante il tasto si può caricare un settaggio del GIS Manager precedentemente salvato in un file. Per sperimentare
il comando si esca dal GIS Manager e si rientri. Si prema quindi il tasto . Nella finestra che compare si clicchi sul
nome del file contenente il settaggio precedentemente salvato, ad es. settaggio1.grc (si scorra la barra orizzontale della
finestra per individuare il file). Infine il tasto Apri. Nella finestra del GIS Manager vengono inseriti i comandi
precedentemente salvati.
Queste funzioni di salvataggio e di richiamo di un settaggio risultano ovviamente utili per riutilizzare lo stesso ambiente
di lavoro in successive sessioni di GRASS.

Accesso a NVIZ
Il tasto consente di entrare nel modulo di visualizzazione e animazione tridimensionale denominato NVIZ per il
quale è stato realizzato un apposito manuale d’uso. Premendo il tasto viene visualizzato il pannello principale del
modulo. Per uscire da NVIZ si prema il tasto File, in alto a sinistra e Quit nel menù a discesa che compare. A
differenza del tasto analogo presente nel Map Display, in questo caso non vengono caricate in NVIZ le carte
eventualmente presenti nel GIS Manager.

Creazione di uno script contenente un percorso di visualizzazione da utilizzare in NVIZ


L’utilizzo di questo tasto presuppone la conoscenza delle modalità d’uso di NVIZ e quindi si rimanda al relativo
manuale.

Animazione di una sequenza di carte raster

30
Questo tasto attiva xganim, uno strumento per la visualizzazione animata di una serie di carte raster mediante
un’apposia interfaccia interattiva. E’ necessario siano caricate le librerie Motif o LessTif.

Visualizzazione di tematismi estratti da una carta vettoriale


Il tasto consente la visualizzazione di uno o più tematismi, o caratteristiche, selezionati da una carta vettoriale
secondo determinati criteri. Il comando presenta un numero elevato di opzioni che lo rendono efficiente e flessibile, ma
anche piuttosto complesso. Per sperimentarne un uso abbastanza semplice, si cancellino i comandi presenti nel GIS
Manager, si prema il tasto , e si carichi il vettoriale soils. Nel pannello si clicchi sull’icona alla destra di show data.
Nella finestra Output viene listato il contenuto della table degli attributi della carta vettoriale. Sono presenti due sole
colonne: la prima, denominata cat, contiene la categoria dei 54 tipi di suolo presenti nell’area, la seconda, denominata
label, contiene la sigla convenzionale che distingue ciascun tipo di suolo. Si vogliano visualizzare solo i suoli con
categoria da 10 a 40 raggruppati in due classi, con intervalli rispettivamente 10-20 e 20-40 e distinte da una diversa
colorazione, rispettivamente in giallo e in rosso. Allo scopo, nella casella denominata NUMERIC attribute column to
use for thematic map si scriva cat (è l’unica colonna con attributi numerici presente nella table ed è quindi l’unica che
possa essere utilizzata per effettuare una selezione). Nella casella map by si scelga, nel menu a discesa, l’opzione
custom_breaks in modo che l’utente possa definire gli intervalli in cui vengono distinte le categorie di suolo. Nella
sottostante casella custom breakpoints (val val …) si inseriscano i valori 10 20 40 (separati da uno spazio) che
rappresentano i limiti dei due intervalli di classe da selezionare 10-20 e 20-40. Nella casella Graduated colors:
present color schemes si scelga l’opzione custom_gradient nel menu a discesa. Nella riga sottostante si scelga per
start color il colore giallo e per end color il rosso. A questo punto il pannello dovrebbe avere il seguente aspetto

L’esecuzione del comando visualizza la carta risultante nel Map Display

31
e la relativa legenda in un’apposita finestra

Dei 54 suoli presenti vengono quindi visualizzati solo quelli con categoria (cat) fra 10 e 40. In giallo i suoli con
categoria fra 10 e 20 e in rosso quelli con categoria fra 20 e 40.
Si chiuda la finestra delle legenda e si cancelli il comando dal GIS Manager.

Visualizzazione di istogrammi o di diagrammi a torta in una carta vettoriale


Il tasto permette di visualizzare istogrammi o diagrammi a torta relativi a diversi valori numerici assegnati ad una
determinata tipologia di oggetti (punti, linee, aree) in una carta vettoriale. Pertanto la funzione risulta utile quando una
carta vettoriale ha più attributi numerici assegnati a ciascun oggetto nella table relativa. Nella Location Spearfish sono
disponibili solo carte vettoriali con il solo valore di categoria assegnato a ciascun oggetto, per cui è possibile una
dimostrazione non ottimale del comando, ma comunque sufficiente per capirne il funzionamento e le modalità di
utilizzo. Si visualizzi dapprima la carta vettoriale archsites, che contiene l’ubicazione dei siti archeologici dell’area,
attivando l’opzione categories nel pannello delle opzioni; ogni sito è individuato da un pallino grigio con accanto il
numero di categoria.
Si clicchi il tasto , quindi chart 1 nel GIS Manager e si inserisca il vettoriale archsites. Nel pannello delle opzioni
si clicchi l’icona alla destra di show attribute data e si verifichi nella finestra Output che la table contiene
semplicemente il numero di categoria (da 1 a 25) nella colonna cat e un’etichetta descrittiva nella colonna str1. E’
quindi possibile visualizzare solo il valore numerico cat mediante degli istogrammi costituiti da un’unica colonna la cui
altezza è proporzionale al valore stesso, collocati in corrispondenza di ciascun sito. Allo scopo si digiti cat nella casella
columns to chart (col1,col2,…). Nella colonna sottostante colors for columns (clr1,clr2,…) si digiti red, per un
riempimento in rosso della colonna dell’istogramma. Nella casella Chart type: si scelga bar per una rappresentazione
mediante un istogramma. Nella casella fixed chart size (if size column not used) si digiti 10 per definire la larghezza,
in pixel, dell’istogramma. Si visualizzi nel Map Display. E’ immediato verificare che l’altezza di ciascun istogramma è
proporzionale al valore di categoria.
Si cancellino i due comandi presenti nel GIS Manager.

Visualizzazione di etichette descrittive di oggetti contenuti in una carta vettoriale


Il tasto effettua la visualizzazione delle etichette descrittive degli oggetti presenti in una carta vettoriale. Le etichette
devono essere contenute in un file precedentemente creato mediante il comando v.label. Se quest’ultimo file non esiste,

32
può essere creato mediante un’opzione presente nel pannello. Si vogliano ad es. visualizzare le etichette dei siti
archeologici della carta vettoriale arcsites con i nomi contenuti nella colonna str1. Non esiste un file che contiene tali
etichette e va pertanto creato. Si prema il tasto . Nel pannello delle opzioni si clicchi sul tasto v.label per la
creazione del file. Viene aperto il pannello delle opzioni del comando v.label. Si clicchi su e si scelga archsites
dal Mapset PERMANENT. Nella casella Name of attribute column to be used for labels si inserisca str1 e nella
sottostante casella Name for new paint-label file il nome del file da creare, ad es. archlabels. Nella casella Offset
label in y-direction si inserisca 10, per collocare l’etichetta leggermente (10 pixel) al di sopra del simbolo del sito.
Nella casella Label size (in map-units): si sostituisca 100 con 250, per aumentare la dimensione dei caratteri. Si prema
infine il tasto Run in fondo al pannello, per salvare il file (nel Mapset esercizi), e quindi il tasto Close.
Si ritorni al pannello precedente, si clicchi sull’icona alla destra di Labels file: e si carichi il file archlabels appena
creato dal Mapset esercizi. Si visualizzi nel Map Display. Per rappresentare anche i siti si visualizzi la carta vettoriale
archsites.
Si cancellino i due comandi presenti nel GIS Manager.
Va ricordato che i valori di categoria e le etichette di una carta vettoriale si possono visualizzare anche tramite
un’opzione del comando d.vect, come già sperimentato in precedenza. Il comando v.label tuttavia presenta una serie di
opzioni che permettono una maggiore personalizzazione delle scritte.

Creazione in formato postscript di etichette descrittive di oggetti di una carta vettoriale


Il comando permette di creare e visualizzare etichette in formato postscript da utilizzare per la stampa o per il
salvataggio nei formati PDF o EPS, come specificato nella precedente descrizione del tasto del Map Display. Le
etichette devono essere contenute in un file ottenuto con v.label (vedi descrizione del tasto precedente). Il pannello del
comando permette di modificare alcuni settaggi definiti nel file caricato. Per sperimentare il comando, si clicchi sul
tasto e quindi sulla scritta PS labels 1. Si noti che nel pannello delle opzioni il tasto alla destra di Override offset,
alignment, and color settings in v.labels file: è disattivato. Il che significa che verrà assunto il settaggio del file
caricato e pertanto il settaggio riportato nelle caselle sottostanti verrà modificato di conseguenza. Nel pannello si
selezioni come Labels file: quello precedentemente creato, vale a dire archlabels. Si visualizzi nel Map Display.
Vengono riprodotte le etichette descrittive contenute nel file archlabels. Si noti che il settaggio delle varie opzioni nel
pannello delle opzioni è stato modificato e corrisponde a quello salvato al momento della creazione di archlabels
(anche se le dimensioni dei caratteri e l’offset vengono interpretati diversamente in fase di visualizzazione). Per
effettuare modifiche nel settaggio, si attivi il tasto alla destra di Override offset, alignment, and color settings in
v.labels file: e si modifichi il colore di color in rosso. Si visualizzi di nuovo per verificare i cambiamenti.
Si cancelli il comando dal GIS Manager.

Creazione di un testo in formato postscript


Il tasto permette di crare un testo per la stampa o per il salvataggio nei formati PDF o EPS. Si clicchi il tasto e nel
pannello si scriva, ad es., Carta dei Siti Archeologici alla destra di Text to display. Nelle caselle alla destra di text
placement: x & y coordinates (from upper left) si immettano rispettivamente i valori 50 e 5; nella casella sottostante
coordinate type for text placement si scelga percent e per align text with coordinate point si scelga center. In tal
modo il testo verrà scritto posizionandone il centro a metà della carta e ad una distanza dal bordo superiore pari al 5%
dell’altezza. Si porti a 1000 il valore di ligne width. Si clicchi sull’icona alla destra di Font e dal pannello che viene
aperto si scelga il carattere helvetica con una dimensione di 15. Si visualizzi nel Map Display.
Si cancelli il comando dal GIS Manager.

Accesso a v.digit o r.digit


Il tasto permette l’accesso ai due comandi di digitalizzazione disponibili in GRASS, v.digit e r.digit. Se nel GIS
Manager è selezionata una carta vettoriale, viene aperto v.digit, il modulo per la digitalizzazione di carte vettoriali, per
il quale è stato realizzato un apposito manuale d’uso. Se invece è selezionata una carta raster viene aperto il comando
r.digit per la costruzione di una nuova carta raster mediante digitalizzazione tramite mouse. Per sperimentare
quest’ultimo comando si supponga di voler creare una carta raster contenente semplicemente un quadrilatero all’interno
dell’area Spearfish. Si carichi e si selezioni una carta raster qualsiasi nel GIS Manager (è indispensabile che una carta
raster sia selezionata) e si clicchi . Vengono aperti un monitor (finestra grafica) e la finestra del comando r.digit. In
quest’ultima si immetta il nome della carta raster da creare, ad es. prova.rdigit e si prema [Invio]. Alla successiva
richiesta di immissione di un comando di visualizzazione di un elaborato da utilizzare come sfondo si immetta d.rast
geology, che comporta la visualizzazione della carta contenente la geologia. Si tenga presente che l’immissione di uno
sfondo è opzionale e la carta visualizzata viene semplicemente utilizzata come riferimento. Premendo [Invio] viene
chiesta conferma del comando immesso e la finestra ha il seguente aspetto

33
Premendo [Invio] per conferma appare il menu per la scelta dell’elemento da digitalizzare: area, cerchio, linea.
Si digiti A (e [Invio]) per digitalizzare un’area. Viene visualizzato un menu con la funzione dei tasti del mouse. Si
posizioni il cursore all’interno del monitor e si digitalizzi un quadrilatero di forma qualsiasi definendone i vertici
mediante un clic del tasto centrale del mouse. Si prema il tasto destro per chiudere il quadrilatero. Alla richiesta del
valore di categoria si immetta un numero a piacere, ad es. 33 e alla successiva richiesta di un’etichetta descrittiva si
scriva area33. Si confermi l’immissione premendo [Invio]. Per uscire dal comando salvando la carta creata si inserisca
x e si prema infine [Invio]. La nuova carta raster prova.rdigit contenente un quadrilatero con categoria 33 ed etichetta
area33 è stata creata. Si chiuda il monitor e si visualizzi prova.rdigit.
Si cancellino le carte presenti nel GIS Manager.

L’help in linea
Si sarà notato che nel pannello delle opzioni che viene aperto nella parte inferiore del GIS Manger, è sempre presente,
alla destra della casella in cui è riportato il nome della carta selezionata, l’icona . Cliccando l’icona si accede alle
pagine del manuale in linea che descrive il comando selezionato. Si carichi ad es. la carta elevation.dem e nel pannello
delle opzioni si clicchi l’icona . Viene aperta la pagina del manuale relativa al comando d.rast, che è appunto il
comando per la visualizzazione di carte raster, di cui vengono descritti la sintassi, i parametri e le opzioni. Si chiuda la
finestra del manuale e si cancelli elevation.dem.

34
I menu funzionali
Come si è visto e sperimentato, i tasti del Map Display e del GIS Manager permettono l’accesso immediato ad un certo
numero di comandi di GRASS. La maggior parte dei comandi è però accessibile mediante gli otto menù a discesa
presenti nella prima riga del GIS Manager.

E’ ovviamente impossibile, in un manuale introduttivo, considerare tutti i comandi disponibili. Pertanto, nelle pagine
seguenti, verranno analizzati e sperimentati, per ciascun menu, i comandi di uso più frequente, la cui conoscenza
rappresenta una base necessaria e sufficiente per operare con GRASS.

Il menu File

In questo menu sono compresi alcuni comandi a carattere generale, come ad es. i comandi per salvare un workspace (o
progetto di lavoro), per importare ed esportare carte raster e vettoriali, per visualizzare il contenuto dei Mapset, per
convertire i diversi formati di carte, per georettificare una carta o creare carte in formato postscript, oltre al già
sperimentato comando Exit per l’uscita dal GIS Manager.

Visualizzazione del contenuto dei Mapset


La visualizzazione del contenuto dei Mapset rappresenta una delle operazioni più frequenti. Il comando relativo è g.list,
cui si accede cliccando File, quindi Menage maps and volume nel menù che viene aperto, e infine List maps, secondo
la sequenza che può essere sinteticamente riassunta come segue:

File > Menage maps and volume > List maps

Viene aperto il pannello del comando g.list che permette l’introduzione dei parametri e delle opzioni previsti dal
comando

Cliccando nella freccia alla destra della casella data type: vengono elencate le diverse tipologie di carte, o più in
generale di file, di cui è possibile ottenere la lista. Si scelga, cliccandoci sopra, rast.
Si clicchi quindi il tasto Run. Nella finestra di Output vengono elencati i nomi di tutte le carte raster accessibili
all’utente sia nel Mapset PERMANENT che nel Mapset esercizi; in quest’ultimo dovrebbe apparire la sola carta
prova.rdigit (se si è eseguito l’esercizio precedente in cui la carta è stata creata). Nel caso in cui un Mapset non
contenga carte, non viene visualizzato.
Si noti che nella parte superiore dell’Output viene riportato, in modalità Linea di Comando, il comando eseguito, vale a
dire g.list type=rast.
Tale comando è anche riprodotto nella parte inferiore del pannello delle opzioni, alla destra del tasto .

35
Premendo questo tasto, il comando, con le eventuali opzioni, viene memorizzato temporaneamente per essere
riutilizzato in un terminale a caratteri (o inserito in uno script di shell), mediante un’operazione del tipo copia-incolla.
Nello stesso pannello è anche inserito il tasto Help per accedere al manuale in linea relativo al comando selezionato.

Attivando la casella alla sinistra di verbose listing (also list map titles) nel pannello, viene visualizzata, oltre al nome,
anche l’eventuale intestazione, o titolo, di ogni carta.

Si selezioni vect come data type per ottenere una lista delle carte vettoriali.
Si provi anche a selezionare labels. Se si sono sperimentati i comandi delle sezioni precedenti, nella lista viene anche
visualizzato il file archlabels, creato e salvato automaticamente nel Mapset esercizi.
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. A questo proposito si noti che molte carte sono presenti sia in forma
vettoriale che in forma raster con lo stesso nome (ad es. roads, soils e streams).
Si clicchi sul tasto Close del pannello per uscire dalla funzione.

E’ possibile listare il contenuto di un Mapset utilizzando dei criteri selettivi specificati mediante wildcards o mediante
un’espressione.
Per accedere al pannello del comando:

File > Menage maps and volume > List maps using expressions and “wildcards”

Per elencare ad es. tutte le carte vettoriali che iniziano con la lettera s, nel pannello delle opzioni si disattivi il tasto alla
sinistra di rast, si attivi quello alla sinistra di vect e si scriva s* nella casella map name search pattern. Cliccando
Run nell’Output vengono elencate le tre carte con queste caratteristiche (sections, soils, streams).
Per listare tutte le carte il cui nome contiene una specifica stringa, da es. oad, si attivi il tasto use regular expression
instead of wildcard e si inserisca nella casella map name search pattern la stringa oad (non quotata). Premendo Run
si ottiene la lista delle sette carte vettoriali nel cui nome è inserita la stringa specificata.

Copia di carte e file


Con la sequenza:

File > Menage maps and volume > Copy maps

si accede al pannello del comando g.copy che permette di eseguire copie di carte raster, vettoriali e di altri tipi di file.
Nella casella relativa alla tipologia da copiare (rast, rast3d, vect, ecc.) vanno inseriti nell’ordine il nome dell’originale
seguito dal nome da assegnare alla copia, separati da una virgola, evitando spazi bianchi. Il nome dell’originale può
essere selezionato da un Mapset cliccando sul simbolo della tipologia, o scritto direttamente nella casella.
Per effettuare ad es. una copia della carta raster elevation.dem, denominata elevation.copia, si scriva nella casella alla

destra dell’icona :

elevation.dem,elevation.copia

36
e si clicchi sul tasto Run.

Si verifichi, tramite il comando precedentemente illustrato, l’esistenza della nuova carta all’interno del Mapset esercizi.

E’possibile eseguire più copie di file diversi contemporaneamente, immettendo nella casella il nome del primo originale
seguito dal nome della copia, quindi il nome del secondo originale seguito dal nome della copia, e così via, separando
ogni coppia di nomi con una virgola. Per eseguire ad es. la copia del vettoriale streams, denominata streams1, e del
vettoriale roads, denominato roads1, si scriva, nella casella alla destra dell’icona :

streams,streams1,roads,roads1

e si clicchi Run.
Le due carte vengono copiate e le copie inserite nel Mapset esercizi.

Si ricordi 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 della table non può contenere il carattere “.” (il
punto), anche il nome assegnato alla carta deve essere privo di tale carattere.

Se una carta con il nome corrispondente a quello assegnato alla copia esiste già nel Mapset corrente (nel caso specifico
il Mapset esercizi), la carta esistente viene sovrascritta. Non è possibile (e non avrebbe senso) assegnare alla copia lo
stesso nome dell’originale, se entrambi si trovano nello stesso Mapset. E’ tuttavia possibile, anche se sconsigliato,
assegnare alla copia lo stesso nome dell’originale quando questo è presente in un Mapset diverso da quello corrente (ad
es. nel Mapset PERMANENT). Infatti la nuova carta (o file) viene inserita nel Mapset corrente, e in GRASS è
ammessa la coesistenza di file con lo stesso nome inseriti in Mapset diversi. Ad es. è possibile eseguire una copia di
elevation.dem (presente in PERMANENT) chiamandola elevation.dem (che viene inserita in esercizi).

Ridenominazione di carte e file


Per cambiare il nome di una carta, o di un file, si utilizza la sequenza:

File > Menage maps and volume > Rename maps

che apre il pannello del comando g.rename.Le modalità operative sono le stesse del comando precedente. Nel pannello
vanno inseriti, in corrispondenza della tipologia dell’elemento da ridenominare, il nome originale e quello modificato,
separati da una virgola (e senza spazi).
Per modificare ad es. il nome della carta raster elevation.copia precedentemente creata, in elev.copia, si inserisca, nella
casella alla destra dell’icona :

elevation.copia,elev.copia

Si verifichi che nel Mapset esercizi la carta elevation.copia è stata sostituita da elev.copia.
E’ possibile ridenominare contemporaneamente più carte dello stesso tipo o di tipo diverso.
Va ricordato che l’utente ha accesso al Mapset PERMANENT in sola lettura, per cui le carte presenti in
PERMANENT possono essere copiate, ma non ridenominate.

Cancellazione di carte e file


Durante una sessione di lavoro si creano spesso delle carte, o dei file, che non necessitano di essere conservati nel
Database per un successivo utilizzo. Poiché occupano spazio, risulta opportuno eliminarle.
Per rimuovere una carta si utilizza il comando g.remove:

File > Menage maps and volume > Remove maps

Questo pannello è simile a quelli precedenti e di ancor più semplice utilizzo. E’ infatti sufficiente specificare nelle
apposite caselle i nomi delle carte da eliminare. Ad es., per cancellare contemporaneamente la carta raster elev.copia e
le carte vettoriali streams1 e roads1 precedentemente create, si devono effettuare le seguenti operazioni.
Si clicchi su nel pannello. Nella finestra che viene aperta si selezioni elev.copia e si clicchi Ok.
Si clicchi su , si selezioni streams1 e si clicchi Ok. Si clicchi di nuovo e si selezioni roads1. Al clic di Ok,
nella casella viene inserita una virgola e il nome della carta.
Cliccando Run le tre carte vengono eliminate definitivamente, come verificabile visualizzando il contenuto del Mapset.
Come già precisato, le carte del Mapset PERMANENT non possono essere cancellate.
37
Analogamente a quanto si è visto per il comando di visualizzazione del contenuto di un Mapset, è possibile definire una
serie di carte da rimuovere selezionandole mediante wildcards o una espressione. E’ ovviamente un comando che va
utilizzato con cautela. Per sperimentare il comando si creino innazitutto delle copie di carte mediante il procedimento
già utilizzato in precedenza. Più precisamente si crei una copia delle carte raster slope, assegnando il nome slope.copia,
e landuse con il nome land.copia.
Quindi:

File > Menage maps and volume > Remove maps using expressions and “wildcards”

Nel pannello si attivi il tasto alla sinistra di force removal (required for actual deletion of files) per forzare la
rimozione delle carte (rappresenta una richiesta di conferma, considerata la delicatezza dell’operazione) e nella casella
alla destra dell’icona si inserisca *copia. Vengono cancellate le due carte precedentemente create.

Costruzione di una carta raster da una vettoriale e viceversa


La costruzione di una carta raster viene spesso effettuata partendo da una carta vettoriale ottenuta mediante
digitalizzazione. Per sperimentare l’operazione si supponga di dover trasformare la carta vettoriale fields del Mapset
PERMANENT, che contiene gli appezzamenti di terreno nell’area Spearfish distinti per proprietario, nell’equivalente
raster. Si visualizzi la carta nel Map Display attivando le opzioni categories e random colors. Vengono rappresentati i
diversi appezzamenti il cui valore di categoria varia da 1a 63.
Per effettuare la trasformazione si apra il pannello del comando v.to.rast con la sequenza:

File > Map type conversions > Vector to raster

Nel pannello si inserisca fields come Name of input vector map: e di nuovo fields come Name for output raster
map: (come si è già avuto modo di dire è possibile assegnare lo stesso nome a una carta raster e ad una vettoriale).
Nella casella Source of raster values si inserisca cat al posto di attr. In tal modo ad ogni area della carta raster verrà
assegnato il valore di categoria (1-63) presente nell’area corrispondente della carta vettoriale (d’altra parte la table del
vettoriale fields non contiene attributi numerici e quindi non sarebbe possibile una diversa assegnazione). Si clicchi
infine Run.
Si disattivi il vettoriale fields nella finestra del GIS Manager e si visualizzi la carta raster fields.
La costruzione di una carta raster da una vettoriale non comporta alcuna modifica del vettoriale originale.
Si cancellino le due carte dal GIS Manager.

Per trasformare una carta da raster a vettoriale si utilizza il comando r.to.vect:

File > Map type conversions > Raster to vector map

Si sperimenti la trasformazione della carta raster geology, che contiene aree con nove diverse litologie, nel
corrispondente vettoriale denominato anch’esso geology. Si selezioni quindi geology come raster input file: e di
nuovo geology come Name for output vector map:. Per ottenere un risultato esteticamente più soddisfacente, si attivi
l’opzione Smooth Corners per smussare gli angoli delle aree poligonali. Di default viene assegnato a ciascuna area del
vettoriale risultante un numero progressivo. Si attivi Use raster values as categories instead of unique sequence
(CELL only) per assegnare invece a ciascuna area il valore di categoria presente nel raster originale. Infine nella
casella Feature type: si selezioni area come tipologia degli oggetti da estrarre e trasformare. Si clicchi Run. Viene
creato il vettoriale e la relativa table degli attributi.
Si visualizzi la carta vettoriale risultante con le categorie. Si noti che i bordi delle aree, nonostante lo smussamento,
riproducono la forma delle celle, rivelando la derivazione da una carta raster. I valori di categoria, da 1 a 9,
corrispondono a quelli della carta raster originale.
Si cancelli la carta dal GIS Manager.

Importazione di altri formati


Come si è già detto in precedenza, in GRASS è possibile importare e trasformare file in molti altri formati (ArcInfo-
Coverages, CSV, DGN, SHAPE files, GIS ManagerL, MapInfo, MySQL, ODBC, OGDI, PostgreSQL/PostGIS, S57,
SDTS, TIGER, UK .NTF,VRT).
Fra i tanti esempi possibili di importazione, si può facilmente sperimentare l'importazione di file in formato ASCII, che
rappresenta la modalità di importazione di dati disponibili in forma tabulare e risulta quindi utile in numerose occasioni.
Con un editor (ad es. nedit o kedit) si scriva un file, da denominare punti_ascii, che si suppone contenga dei valori di
temperatura rilevati in cinque stazioni di misura nell'area Spearfish. Nella prima colonna è riportato il numero
progressivo (categoria), in quelle successive le coordinate est e nord di ciascuna stazione, un'etichetta descrittiva e
infine la temperatura. Come separatore si uitilizzi la barra verticale (è possibile comunque utilizzare altri separatori). Si

38
eviti di inserire linee vuote dopo l’ultimo dato (vengono interpretate come linee mancanti di dati e viene emesso un
avviso di errore).

Per importare e trasformare il contenuto del file in una carta vettoriale in formato GRASS si utilizza il comando
v.in.ascii accessibile tramite:

File > Import > Vector map > ASCII points file or GRASS ASCII vector file

Nel pannello si inserisca, alla destra dell’icona , il nome del file ASCII, punti_ascii, e nella casella sottostante il
nome della carta risultante, punti_temp. Nello spazio definito Number of column used as x coordinates….. si
immetta 2 al posto di 1 (le coordinate x sono infatti inserite nella seconda colonna), nello spazio sottostante Number
of column used as y coordinates….. si immetta 3 e infine nello spazio Number of column used as category…..., si
immetta 1

Si clicchi Run per l'importazione e trasformazione dei dati. Oltre alla geometria viene anche costruita la table degli
attributi punti_temp.
Si visualizzi la carta creata attivando l’opzione per la visualizzazione delle categorie. Il risultato è il seguente

39
Per visualizzare i valori di temperatura, anziché i valori di categoria, si clicchi sull’icona alla destra di show attribute
data e nel GIS Manager si verifichi che i valori di temperatura sono inseriti nella colonna denominata int_4. Nel
pannello si disattivi categories, nella riga Label vectors: si attivi il tasto label e nella casella attribute col for labels si
inserisca int_4. Si visualizzi nel Map Display.

Si cancelli punti_temp dal GIS Manager.

Esercizio di verifica 2
Si crei una copia della carta vettoriale soils attribuendo il nome copiasoils e si esegua una trasformazione in formato
raster della copia 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 l’esistenza delle copie nel Mapset
esercizi, quindi si visualizzino tutte e quattro le carte contemporaneamente nel Map Display.
Si cambi il nome delle quattro carte aggiungendo alla fine di ogni nome il numero 1. Si visualizzino
contemporaneamente su di un altro Map Display.
Si cancellino dal Mapset le cinque carte create (copiasoils, copiasuoli1, usosuolo1, fiumi1 e strade1).

Costruzione di una carta in formato postscript


Per la costruzione di una carta in formato Postscript, eventualmente riproducibile su carta mediante una stampante o un
plotter in grado di interpretare tale formato, GRASS prevede un apposito comando, ps.map, che prevede la lettura delle
istruzioni grafiche contenute in un apposito file salvato nel direttorio corrente.
Si supponga di dover creare una carta con l’intestazione AREA SPEARFISH contenente l’altimetria, così come
rappresentata nella carta raster elevation.dem, i corsi d’acqua della carta vettoriale streams, la rete stradale definita nel
vettoriale roads ed una scala grafica.
Per la costruzione del testo contenente le istruzioni grafiche secondo la sintassi del comando, che può essere ad es.
denominato spear.testo, si entri in un editor (ad es. nedit o kedit) e si scriva (i rientri non sono indispensabili, servono
solo ad evidenziare i blocchi di istruzioni):

raster elevation.dem
vlines streams
width 1
color blue
end
vlines roads
width 1
color black
end
text 599000.0 4927400.0 AREA SPEARFISH

40
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

La prima linea contiene l’istruzione raster, per il disegno di una carta raster, seguito dal nome della carta. In ps.map
non è possibile riprodurre contemporaneamente più immagini raster dal momento che l'ultima si sovrapporrebbe a
quella precedente nascondendola.
Nella seconda riga è riportata l’istruzione vlines, per il disegno di una carta vettoriale contenente l'idrografia.
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 sono riportate le istruzioni per il disegno della carta vettoriale contenente le strade.
L'istruzione text viene utilizzata per disegnare l’intestazione della carta. I due valori numerici rappresentano le
coordinate Est e Nord del punto di inserimento del testo nella carta, secondo le modalità specificate nella successiva
istruzione ref. Nella riga successiva viene definito 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 (lower) in
corrispondenza della coordinata nord e centrato (center) nel punto definito dalla 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 è chiusa da end.
Le istruzioni successive 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 l’altezza è di 0.1 pollici.
La scala è suddivisa in 4 segmenti e i valori numerici lungo la scala sono riportati 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 esempio, che permettono la realizzazione di grafici più complessi e sofisticati. Per una descrizione completa
del comando è indispensabile fare riferimento al manuale (con il comando g.manual ps.map)

Una volta completato, si salvi il file nel direttorio corrente con il nome spear.testo (è ovviamente possibile attribuire un
qualunque altro nome)

Ora è possibile immettere il comando ps.map a cui si accede mediante:

File > Create ps.map file for postscript printing

Nel pannello si inserisca il nome del file contenente le istruzioni e il nome della carta risultante, definita spear.ps
(anche in questo caso si può attribuire un nome qualunque, ma l’estensione .ps rende facilmente identificabili i file in
formato Postscript)

41
Si clicchi Run.
Il file creato, come si è già detto, può essere stampato mediante una stampante o un plotter in grado di interpretareil
formato postscript, ma può anche essere semplicemente visualizzato attraverso un programma in grado di interpretare
tale formato, come ad es. GhostView o Gimp. Con GostView il risultato è il seguente

Esercizio di verifica 3
Si realizzi un carta in formato Postscript alla scala 1:150000 dal titolo ‘Geologia dell’area Spearfish’. Il titolo va scritto
in caratteri rossi con una dimensione di 400m, in una cornice rossa su sfondo giallo e ubicato nel punto di coordinate
599100.0 4927300.0. La carta deve contenere la geologia (raster geology), con sovrapposti i corsi d’acqua (vettoriale
streams) in azzurro, le strade (vettoriale roads) in rosso con una larghezza di 2 pixel.
Si stampi o si visualizzi sullo schermo la carta risultante (denominata geo.map.ps).

Suggerimenti
Il file di testo (ad es. geo.testo) contenente le istruzioni per la realizzazione della carta finale può essere scritto più
rapidamente modificando una copia del file spear.testo precedentemente creato.

42
Il menu Config

Questo menu contiene sostanzialmente i comandi per la gestione della regione e dell’ambiente di lavoro.

Gestione della regione di lavoro


Come già descritto in precedenza, la regione di lavoro, o più semplicemente la regione (region nel gergo di GRASS), è
un’area rettangolare definita dalle coordinate dei lati del rettangolo. Tale regione non solo delimita l’area di
visualizzazione nel Map Display, ma condiziona il risultato di molte delle operazioni che si effettuano in GRASS, come
ad es. la costruzione di una nuova carta. Una regione di lavoro viene definita dall’utente al momento della creazione
della Location ed è assunta come regione di default. Altre regioni possono essere definite e salvate successivamente.
Per la gestione della regione è disponibile il comando g.region.

Visualizzazione delle caratteristiche della regione corrente


Per visualizzare le caratteristiche della regione corrente:

Config > Region > Display region setting

Nella finestra Output vengono riportate le caratteristiche della regione corrente (che dovrebbe essere quella di default)

Vengono listati la proiezione adottata (UTM o Universale Trasversa di Mercatore).


Il numero del fuso (definito zone). L’area Spearfish è nel fuso 13.
Il datum, vale a dire quell’insieme di parametri che definiscono le dimensioni e la forma della Terra e l’origine e
l’orientazione del sistema di coordinate. Nel caso specifico il datum adottato è il North American Datum del 1927
(nad27) e l’ellissoide di riferimento, è quello Clark del 1966 (clark66).
Di seguito sono riportate le coordinate dei bordi della regione espressi in metri. Avendo adottato il sistema UTM, le
coordinate nord e sud indicano la distanza dall’equatore, le coordinate est e ovest la distanza dal meridiano centrale del
fuso (a cui, nel sistema UTM, viene attribuito il valore convenzionale di 500.000m).
nsres e ewres indicano le dimensioni dei lati delle celle in direzione nord-sud e est-ovest rispettivamente. Le celle
hanno quindi una forma quadrato con 30 metri di lato.
Infine vengono riportati il numero di righe e di colonne inclusi nella regione con il numero complessivo di celle.

Creazione di una regione


Si è già visto in precedenza, in occasione dell’analisi delle funzioni del Map Display, la possibilità di modificare la
regione di lavoro mediante il tasto . E’ però possibile un'impostazione più completa e precisa di una regione
mediante:

Config > Region > Change region setting

Nella parte superiore del pannello sono indicati i nomi di sei diversi menu.

43
Quello iniziale, definito Existing ed aperto di default, presenta diversi opzioni che permettono di definire come nuova
regione quella di default, attivando l’apposito tasto alla sinistra di Set from default region, oppure di definire la
regione prelevandone le caratteristiche da un apposito file salvato in precedenza, oppure in base alle caratteristiche di
una carta esistente (raster, 3d raster, vettoriale, 3dview).
Il secondo menu, Print, contiene diverse opzioni per la visualizzazione delle caratteristiche della regione.
Il terzo, Bounds, permette di definire direttamente i limiti della regione immettendo le relative coordinate.
Il quarto, Effects, consente di salvare il settaggio corrente in un file.
Il quinto, Resolution, consente di immettere la risoluzione, vale a dire le dimensioni delle celle.
Il sesto, Options, contiene un’unica opzione per permettere la sovrascrittura di un file esistente contenente la
definizione di una regione.

Per sperimentare alcune delle opzioni, si provi a definire una regione ridotta rispetto a quella di default e con una
diversa risoluzione. Più precisamente, facendo riferimento alla figura sottostante, in cui il rettangolo più esterno
rappresenta la regione di default con le rispettive coordinate, si definisca una regione con le dimensioni del rettangolo
più interno, di cui sono riportate le coordinate (fra parentesi è indicata l’entità della riduzione).

4928010

(3010)

4925000

589980 (3020) 593000 606000 (3000) 609000

4916700

(3000)

4913700

Nel pannello si apra il menu Bounds e si introducano le nuove coordinate come nella seguente figura

44
Si imposti quindi una risoluzione di 50 m (quella di default è 30m), cliccando sul menu Resolution e inserendo il
valore 50 nella prima casella denominata Grid resolution 2D.
Si prema Run per eseguire il comando. Da questo momento la regione così definita diventa la regione corrente.

Per verificare gli effetti della nuova regione, si visualizzi nel Map Display elevation.dem, che verrà visualizzata
secondo la regione di default, e successivamente si clicchi il tasto tasto e Zoom to current region (set with
g.region). La carta viene visualizzata nelle dimensioni più ridotte definite dalla nuova regione e con la risoluzione
prescelta. Fino a successiva modifica, la nuova regione rappresenta la regione corrente e viene mantenuta anche
uscendo e rientrando in GRASS.

Salvataggio di una regione


Per salvare la regione creata in un apposito file, si clicchi sul menu Effects, e nell’apposita casella si inserisca il nome
da assegnare al file, ad es. regione1. Cliccando Run il file viene salvato. Questo file può essere richiamato in
qualunque momento.

Impostazione della regione di default


Per reimpostare la regione di default mediante il pannello del comando g.region (in alternativa si possono anche
utilizzare le opzioni del tasto del Map Display) si chiuda il pannello cliccando Close e quindi lo si riapra con la
solita sequenza Config > Region > Change region setting (con la chiusura e la riapertura si ottiene un rapido reset
delle opzioni). Nel pannello si attivi il tasto Set from default region e quindi si clicchi Run. La regione corrente
diventa quella di default (si può verificare con il tasto e Zoom to current region (set with g.region) ).

Utilizzo di una regione salvata


Per sperimentare l’utilizzo di una regione precedentemente salvata, si chiuda e si riapra il pannello di g.region (per un
rapido reset delle opzioni).Nel pannello si clicchi sull’icona al di sotto di Set current region from named region. Nel
pannello che viene aperto è riportato il file regione1all’interno del Mapset esercizi. Si selezioni il file e quindi si clicchi
Ok. Viene impostata la nuova regione (si verifichi con il tasto e Zoom to current region (set with g.region).
Si cancelli elevation.dem dal GIS Manager.

Effetti della regione corrente sulla costruzione di una carta


Si è già accennato, all’inizio del paragrafo, al fatto che la regione corrente condiziona il risultato di molte delle
operazioni che si effettuano in GRASS. Infatti il ridimensionamento della regione non solo modifica la visualizzazione
delle carte, ma condiziona anche le caratteristiche delle carte di nuova creazione, la cui estensione e risoluzione
risultano definite dall’estensione e dalla risoluzione della regione corrente. Per una verifica si costruisca, mantenendo la
corrente regione ridotta (o ricaricando se necessario regione1), una carta raster dei suoli, da denominarsi soils2,
partendo dalla carta vettoriale soils, secondo la procedura già sperimentata in precedenza (File > Map type conversion
> Vector to raster). Nel pannello del comando v.to.rast si inserisca soils come Name of input vector map: e soils2

45
come Name for output raster map:. Nella casella Source of raster values si inserisca cat al posto di attr. Si clicchi
infine Run.
Si visualizzi la nuova carta soils2, che ovviamente occupa tutto il Map Display avendo le dimensioni della regione
corrente. Si reimposti la regione di default e si visualizzi di nuovo. Come si può constatare la carta è stata creata solo
all’interno della regione ridotta (ed ha una risoluzione di 50 metri, anche se non valutabile).
Si cancelli soils2 dal GIS Manager.

Definizione di una regione tridimensionale


In GRASS si possono gestire ed elaborare anche informazioni tridimensionali, vale a dire dati definiti dalle coordinate
x,y e z. In tal caso è necessario costruire una regione tridimensionale definita, oltre che dai limiti planimetrici, anche da
un quota minima ed una massima. In altre parole, mentre le carte bidimensionali (2D) sono delimitate da una regione
rettangolare e sono costituite da un insieme di piccole celle, generalmente quadrate, le carte tridimensionali (3D) sono
delimitate da un parallelepipedo e sono costituite da un insieme di piccoli parallelepipedi, generalmente cubici.
Per sperimentare la definizione di una regione 3D si apra il pannello del comando g.region. Si clicchi su Bounds nella
riga dei menu per accedere al pannello per l’inserimento dei limiti della regione. Si inseriscano i valori 4928000 (nord), 4913700
(sud), 609000 (est), 589900 (ovest) per quanto riguarda i limiti planimetrici, il valore 2000 per il limite superiore della regione e
1000 per il valore inferiore, come segue

Si clicchi quindi sul menu Resolution e nel pannello che viene aperto si inserisca il valore 100 nello spazio 3D grid
resolution in modo da definire una risoluzione di 100 metri per le celle tridimensionali, che sono quindi rappresentate
da cubi di 100m di lato

46
Si clicchi quindi sul menu Effects e si salvi in un file, ad es. regione_3d, la regione definita

Si clicchi infine il tasto Run. La nuova regione tridimensionale viene impostata come regione corrente e salvata con il
nome assegnato. L’utilizzo della regione tridimensionale salvata verrà sperimentato più avanti.

Si ritorni alla regione di default (bidimensionale).

Gestione dell’ambiente di lavoro


Accesso ai Mapset
Il Mapset corrente è il Mapset esercizi, che, come si ricorderà, è stato creato utilizzando la finestra iniziale di GRASS.
L’utente può salvare, modificare o cancellare elaborati solo all’interno di questo mapset. E’ comunque possibile creare
altri mapset. Si esca da GRASS, si rientri e si crei il nuovo mapset nuoviesercizi. Lo si evidenzi e si entri in GRASS.
nuoviesercizi viene assunto come Mapset corrente, come visualizzato nel bordo superiore del GIS Manager. Si esegua
una copia di elevation.dem denominandola copia.dem. Si listino quindi le carte raster. Come previsto, la carta creata è
stata inserita nel Mapset nuoviesercizi.
Si noti che non viene visualizzato il contenuto di esercizi, che pur contiene carte raster realizzate in precedenza. Il
Mapset esercizi non è infatti accessibile all’utente. Per rendere visibile il contenuto degli altri mapset e poterne
eventualmente utilizzare il contenuto (senza tuttavia modificarlo) si utilizza il comando g.mapsets:

Config > GRASS working environment > Access other mapsets in current location

Viene aperta la relativa finestra

47
In grigio, e in prima posizione, il Mapset corrente, in rosso il Mapset PERMANENT che è sempre accessibile di default
(ma che può eventualmente essere disattivato), mentre gli altri due Mapset sono disattivati. Si attivino entrambi
cliccando nell’apposita casella, quindi OK.
Richiedendo di nuovo la lista delle carte raster, viene visualizzato il contenuto di tutti i mapset presenti.
Il settaggio dei mapset viene mantenuto anche nelle successive sessioni di lavoro fino a quando non viene
esplicitamente modificato.

Modifica dell’ambiente di lavoro


E’ anche possibile, durante una sessione di lavoro, cambiare il Mapset, la Location e il database correnti, con la
sequenza:

Config > GRASS working environment > Change current working session to new mapset, location, or
GISDBASE

Per sperimentare la modifica del Mapset corrente, si inserisca esercizi nella prima casella del pannello denominata New
MAPSET name, quindi si clicchi Run.
Il settaggio dei Mapset risulta ora il seguente

Il Mapset corrente è ora esercizi. Si noti che la scelta del nuovo Mapset ha disattivato l’accesso agli altri due.

48
Il menu Raster

Contiene i comandi per la gestione delle carte raster

Informazioni di base sul contenuto di una carta


Informazioni sulle caratteristiche di base di una carta si possono ottenere mediante il comando r.info, a cui si accede
mediante la sequenza:

Raster > Report and statistics > Report basic file informations

Nel pannello che viene aperto si inserisca geology e si attivi il primo tasto in alto denominato Print range only

Cliccando su Run vengono visualizzati nell’Output il valore minimo e massimo (1 e 9) delle categorie presenti nella
carta. Si sperimentino una ad una tutte le opzioni (disattivando di volta in volta il tasto precedente). L’Output dovrebbe
corrispondere al seguente

Vengono riportati nell’ordine, oltre ai valori minimo e massimo, la risoluzione, il tipo di valore presente nelle celle
(CELL indica la presenza di numeri interi), le coordinate della regione di lavoro (attiva al momento della creazione
49
della carta), l’origine dei dati con una breve descrizione ed eventuali commenti, la presenza o meno di timestamp (una o
più date eventualmente inserite in precedenza tramite un apposito comando).

Si ripeta la procedura per la carta slope. Il risultato dovrebbe essere il seguente.

Si noti che il tipo di valori è FCELL, vale a dire valori decimali, come peraltro evidente osservando i valori minimo e
massimo.

Lista delle categorie e delle etichette


Con il commando r.cats:

Raster > Report and statistics > Report category labels and values

si ottiene una lista delle categorie e delle eventuali etichette descrittive associate.
Si immetta la carta geology e si clicchi Run. Si ottiene il seguente risultato

50
E’ possibile anche selezionare un numero limitato di categorie da listare. Se ad es. si immettono nella casella Category
list i valori 1,3-5,7,9 nella lista compaiono solo le categorie selezionate
Nel caso la carta non contenga numeri interi ma decimali, è indispensabile specificare le categorie da listare inserendole
nell’apposita casella Comma separated value list. Si selezioni ad esempio la carta aspect (che contiene etichette
descrittive inserite automaticamente al momento della creazione della carta) e si inseriscano i valori 10.3, 30.9, 282.0,
359.4. Il risultato è il seguente

Calcolo delle statistiche elementari


La sequenza

Raster > Report and statistics > General statistics

apre il pannello del comando r.stats per il calcolo di alcune statistiche elementari relative alla carta specificata. Come
esempio, si selezioni la carta geology e si attivino le quattro opzioni Print area totals, Print cell counts, Print
APPROXIMATE percents, Print categorie labels, come nella figura seguente

51
Cliccando Run si ottiene una lista delle 9 categorie presenti, con la relativa etichetta descrittiva, l’area (in m2), il
numero di celle e la percentuale, come nella seguente figura

In alternativa alla visualizzazione nell’Output, il risultato può essere salvato in un file il cui nome va inserito nella
casella Output file name:.del pannello. Mantenendo il settaggio precedente, si inserisca nella casella il nome
geology.stat. Al clic su Run il file viene salvato nel direttorio corrente. Per visualizzarne il contenuto si può utilizzare
il file manager.

Se la carta contiene valori decimali, le funzioni da utilizzare sono diverse. Si disattivino tutte le opzioni precedenti (si
cancelli anche il nome del file da salvare) e si selezioni la carta slope. Si clicchi Run. I valori presenti nella carta
vengono suddivisi in 255 intervalli di classe e listati. Il numero di intervalli può essere aumentato o ridotto modificando
il valore di default nell’ultima casella del pannello. Si provi ad introdurre 10.
Per sperimentare un uso un po’ più complesso si modifichi il pannello attivando, oltre alle quattro opzioni
precedentemente sperimentate, anche l’opzione Suppress reporting of any NULLs e inserendo tab nella casella
Output field separator, come segue

52
Oltre alle opzioni per la stampa delle etichette e delle aree, già sperimentati per geology, vengono anche soppressi i
valori null e utilizzato come separatore fra i campi una tabulazione (tab) invece dello spazio (space). Il risultato è il
seguente (si allarghi eventualmente la finestra di Output)

Tabelle con contenuto analogo, ma più complete ed ordinate, si possono ottenere con r.report:

Raster > Report and statistics > Sum area by map and category

Nel pannello si selezioni geology e nella casella sottostante si inseriscano come unità di misura c,k,p per il calcolo delle
aree rispettivamente in numero di celle, in km2 e in percentuale

Si clicchi Run. Il risultato è il seguente

53
Si sperimenti la stessa funzione con la carta slope (con 10 intervalli anziché i 255 di default).

Il comando r.report consente anche di calcolare la distribuzione di frequenza delle categorie di una carta per ciascuna
categoria di un’altra. Come esempio si può calcolare la distribuzione di frequenza delle nove categorie della carta
geology in ciascuna delle due categorie presenti nella carta owner, che suddivide l’area negli appezzamenti di proprietà
privata da quelli di proprietà del Servizio forestale. Allo scopo si immettano nel pannello di r.report le carte owner e
geology nell’ordine (invertendo l’ordine il risultato è ovviamente diverso) e come unità di misura si adottino k,p

Il risultato è il seguente

54
Analisi statistica univariata
Un’analisi statistica univariata dei valori di una carta si può ottenere con il comando r.univar:

Raster > Report and statistics > Univariate statistics

Nel pannello si selezioni la carta elevation.dem e si clicchi Run. Si ottiene

55
Modifica dei valori di categoria e delle etichette
La costruzione di una nuova carta mediante una riclassificazione di una carta esistente è un’operazione molto frequente
in un GIS. La riclassificazione consiste nel sostituire le classi presenti con altre classi definite dall’utente. Il comando
più utilizzato per questo scopo è r.reclass.rules a cui si accede mediante

Raster > Change category values and labels > Reclassify categories using rules

Nel pannello che viene aperto vanno inseriti il nome della carta da riclassificare e della carta risultante. Si inseriscano
ad es. geology e geology.rec.

Al clic di Run viene aperta una finestra per l’inserimento dei criteri (rules) di riclassificazione.

Come già verificato più volte, geology contiene nove categorie, numerate progressivamente da 1 a 9. Si voglia creare la
nuova carta con il valore 1 assegnato alle categorie 1 e 2 di geology, il valore 2 alle categorie 3,4,5,6, il valore 3 alle
categorie 7 e 8, e infine il valore 4 alla categoria 9. Nella prima riga, in corrispondenza del prompt, si inseriscano le
categorie della carta geology separate da uno spazio, quindi il segno = seguito dalla nuova categoria, vale a dire:
12=1
Si prema [Invio].
Quando si riclassifica una serie continua di categorie, si può utilizzare l’opzione thru inserendola fra il primo e l’ultimo
valore della serie. Quindi nella seconda riga si scriva
3 thru 6 = 2
e di nuovo [Invio].
Nelle righe successive:
7 8 =3 [Invio]
9 =4 [Invio].
Per terminare l’inserimento dei criteri, si digiti end, come nella figura seguente

56
e si prema [Invio].

Si visualizzi geology.rec. Per verificarne il contenuto si utilizzi r.cats, che dà il seguente risultato

Si noti che le etichette descrittive sono state perse. E’ possibile tuttavia inserire delle etichette descrittive durante la
riclassificazione scrivendole direttamente di seguito ai criteri di riclassificazione. Per sperimentare questa possibilità si
ripeta la procedura assegnando alla carta da riclassificare il nome geology.rec1, e si immetta

Il risultato è il seguente

Ad una categoria della carta originale non considerata nei criteri di riclassificazione, viene assegnato il valore null. Ad
es., se si immettono i seguenti criteri:

12=1
4 thru 8 = 2
end

nella carta risultante le categorie 3 e 9 della carta originale avranno valore null.

Per assegnare all’insieme delle categorie non considerate nei criteri di riclassificazione un determinato valore di
categoria, si usa il simbolo * (asterisco). Ad es.:

12=1
4 thru 8 = 2
57
*=3
end

produce una carta riclassificata in cui ai valori 3 e 9 della carta originale viene assegnato il valore 3.

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 l’eventuale cancellazione della carta originale rende impossibile la
visualizzazione della carta riclassificata (il tentativo di rimozione della carta originale con g.remove comporta
comunque l’emissione di un avviso sulla presenza di carte riclassificate).

Unione di carte
E’ possibile creare una nuova carta derivante dall’unione di due o più carte esistenti mediante il comando r.patch.
L’unione fra carte raster può essere effettuata solo in presenza di aree con valore null che risultano trasparenti
permettendo la visualizzazione del tematismo sottostante. Quindi non più di una carta deve essere priva di tali valori.
Si uniscano ad es. le carte raster streams, fields e soils. Le prime due contengono entrambe delle aree con valore null.
Per accedere al comando:

Raster > Overlay maps > Patch maps

Nel pannello si inseriscano i nomi delle tre carte e si assegni alla carta risultante il nome streams.fields.soils, come
nella figura seguente

Nell’input del comando le carte contenenti le aree con valore null devono precedere la carta con aree prive di tali valori.
Si clicchi Run.
La carta prodotta contiene in primo piano l’idrografia, al di sotto gli appezzamenti di terreno a diversa proprietà, e
ancora più sotto i diversi tipi di suolo che riempiono le aree null delle prime due carte.

Utilizzo di una maschera


Come si è visto, la modifica di una regione modifica le dimensioni dell’area 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 l’analisi ad aree definite all’interno della regione mediante l’adozione 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 che nella
maschera hanno un valore diverso da null.
A titolo di esempio, verrà utilizzata come maschera la carta raster fields, che 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 verificabile visualizzando la carta nel Map Display.
Si supponga di dover costruire un certo numero di elaborati esclusivamente nelle aree per le quali la proprietà risulta
definita.
Il comando per creazione di una maschera è r.mask a cui si accede mediante:

Raster > Create raster MASK

58
Nel pannello si inserisca fields come nome della carta da utilizzare come maschera. L’asterisco nella casella Category
values to use for MASK indica che tutte le categorie presenti nella carta verranno utilizzate nella maschera (è quindi
possibile utilizzare anche un numero limitato di categorie). Si clicchi Run.

Viene creata una carta raster denominata MASK.


Si visualizzi quindi geology. Come previsto, la carta viene visualizzata solo nelle aree con valore diverso da null in
MASK.

Si costruisca una nuova carta, denominata landsoils, unendo landuse e soils mediante r.patch, come già sperimentato
in precedenza:

Si rimuova la maschera attivando l’opzione Remove existing MASK (override other options) nel pannello di r.mask
e cliccando Run.
Si visualizzi geology per verificare la rimozione della maschera e quindi landsoils per constatare che è stata
effettivamente costruita tenendo conto della maschera e quindi nelle aree con valore diverso da null nella carta fields.

59
Esercizio di verifica 4
Si costruisca una carta raster, denominata landgeo, unendo la carta dell’uso del suolo (landuse) e la carta geologica
(geology), ridotta di 1500m per ogni lato rispetto alla regione di default, con una risoluzione di 10m. e in presenza
della maschera fields. Si visualizzi la carta landgeo nella regione di default in assenza della maschera.

Costruzione di una carta tramite operazioni aritmetiche e logiche su altre carte


Il comando r.mapcalculator è sicuramente il comando più potente disponibile in GRASS. Permette infatti la
costruzione di una nuova carta tramite l’applicazione di calcoli matematici, anche molto complessi, ad altre carte
esistenti.
Si acceda al comando mediante

Raster > Map calculator

Nel pannello delle opzioni sono presenti sei caselle identificate dalle lettere A-F in ciascuna delle quali va inserito il
nome della carta coinvolta nell’operazione. Nella casella sottostante, denominata Formula (e.g. A-B or A*C+B): va
inserita l’espressione aritmetica da calcolare. Nella casella successiva, Resulting output map:, va infine inserito il
nome della carta risultante, vale a dire della carta contenente i risultati del calcolo.
Per sperimentare un utilizzo molto semplice del comando, si può costruire una carta altimetrica dell’area che contenga
le quote espresse in millimetri. Poiché esiste già una carta altimetrica, elevation.dem, che contiene le quote espresse in
metri, è sufficiente moltiplicare per 1000 i valori presenti nella carta.
Si inserisca quindi elevation.dem nella casella A, nella casella Formula l’espressione A*1000, e come nome della
carta risultante elevation.1000.

Si clicchi Run per eseguire l’operazione.

60
Con r.info si può verificare che il range di valori della nuova carta è 1066000 -1840000 (mentre in elevation.dem è
1066-1840).

Per sperimentare un utilizzo un po’ più complesso del comando, si supponga di dover costruire una carta, denominata
elevgeo, in cui è assegnata la categoria 1 alle aree caratterizzate dalla litologia 9 della carta geology ubicate ad una
quota superiore a 1200m., e la categoria 2 alle aree rimanenti. Le due carte coinvolte sono ovviamente elevation.dem e
geology, mentre l’espressione da utilizzare, o Formula, è if(B==9 && A>1200,1,2), vale a dire:
se (if) in geology (B) la categoria e uguale (==) a 9 e contemporaneamente (&&) in elevation.dem (A) il valore è
superiore (>) a 1200, allora il valore di categoria da assegnare nella carta elevgeo è 1, altrimenti è 2.

Si visualizzi elevgeo. Le aree che soddisfano la condizione (categoria 1) sono in giallo, le altre (categoria 2) in rosso.

Per un elenco completo delle numerose funzioni e operatori disponibili in r.mapcalculator si rimanda alle pagine del
manuale.

61
Creazione di fasce nell’intorno di celle con valore diverso da null
Il comando r.buffer crea una carta che contiene le zone, o fasce (buffers), a determinati intervalli di distanza (scelti
dall'utente) dalle celle che contengono valori di categoria diversi da null in una carta raster esistente.
Si vogliano ad es. individuare tre fasce intorno ai corsi d’acqua i cui limiti siano posti ad una distanza rispettivamente
di 100, 250 e 600 metri.
Per accedere al comando:

Raster > Create raster buffer

Si inserisca streams come nome della carta contenente le celle da cui calcolare le distanze, streams.buffer come nome
della carta risultante e nella casella sottostante i valori di distanza separati da una virgola, vale a dire 100,250,600,
come nella figura seguente

Si visualizzi la carta risultante

Sono presenti quattro categorie distinte da diversi colori. Con il comando r.cats è possibile verificare come la categoria
1 sia stata assegnata ai corsi d’acqua, che rappresentano le celle da cui le distanze sono state calcolate, la categoria 2
alle celle entro una distanza di 100m, la categoria 3 alle zone ad una distanza compresa fra 100 e 250m, la categoria 4
alle celle fra 250 e 600m. Alle aree con distanza superiore a 400 m è stato assegnato il valore null.

62
Assegnazione di categorie diverse a gruppi distinti di celle
Il comando r.clump assegna ad ogni distinto raggruppamento di celle fra di loro connesse (clump), un diverso valore di
categoria. Per sperimentare il comando si può utilizzare la carta soils che contiene un certo numero di appezzamenti a
cui è assegnato un valore da 1 a 54, essendo 54 i diversi tipi di suolo della classificazione adottata. Tuttavia gli
appezzamenti (o raggruppamenti distinti di celle fra loro conesse) sono in numero notevolemente superiore in quanto
ciascun tipo di suolo può essere contenuto in più appezzamenti distinti. Il comando r.clump permette di assegnare una
categoria distinta a ciascun appezzamento (indipendentemente dalla categoria originale in esso presente).
Si attivi il comando con

Raster > Transform features > Clump small areas (statistics calculated by r.volume)

e si inseriscano nel pannello il nome della carta originale, soils, e quello della carta risultante soils.clump

Cliccando Run la nuova carta viene creata e nell’Output viene indicato il numero di clump (appezzamenti distinti)
presenti nella carta (789). Ad ogni clump è stato assegnato un numero di categoria da 1 a 789.

63
Esercizio riassuntivo relativo alle carte raster

Le conoscenze fin qui acquisite sulla gestione delle carte raster permettono di risolvere un problema di tipo applicativo
particolarmente idoneo all’utilizzo di un GIS, che consiste nell’individuazione di 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 nell’area di studio.

Vincoli Motivazione Tematismo coinvolto

Fra 100 e 400m dalla rete viaria Lontano dalle strade ma non troppo per Strade
esistente limitare i costi di costruzione di nuove
strade di accesso
Oltre 500m dai corsi d’acqua Per evitare lo scolo diretto nei corsi Corsi d'acqua
d'acqua
Oltre 600 m dalle aree residenziali Per evitare una collocazione troppo vicina Uso del suolo
e dalle infrastrutture alle zone frequentate
Pendenza non superiore a 8° Per limitare le opere di sbancamento ed Pendenza o acclività del
evitare una eccessiva erosione per terreno
ruscellamento a monte
Suoli impermeabili Per evitare infiltrazioni superficiali. Tipo di suolo
Superficie di almeno 50.000m2 Per un dimensionamento della discarica Estensione
atto a soddisfare le necessità del territorio

L’individuazione delle porzioni di territorio che soddisfano 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, all’interno 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 50.000m2 .

Si verifichi innanzitutto, mediante il comando g.list, la presenza nel Database (Mapset PERMANENT) delle carte, in
formato raster, necessarie all'esecuzione dell'esercizio. Più precisamente:
- roads (Strade)
- streams (Idrografia)
- landuse (Uso del suolo)
- slope (Pendenza dei versanti, o Acclività)
- soils (Suoli)

Si verifichi che la regione corrente sia quella di default.

Distanza dalle strade


Per soddisfare i primi tre criteri è necessario individuare delle fasce a determinate distanze dagli elementi considerati. Il
comando da utilizzare è quindi r.buffer, già sperimentato.
Per quanto riguarda il primo criterio, l'elaborato a cui applicare il comando è la carta raster roads. Si visualizzi la carta.
Poichè le aree idonee vanno individuate ad una distanza dalle strade superiore a 100m ed inferiore a 400m., è
necessario individuare due fasce nell’intorno delle strade: la prima che si estende fino a 100m, la seconda fino a 400m.
Si immetta pertanto

Raster > Create raster buffer

e si esegua il comando dopo aver inserito nel pannello il nome della carta, il nome della carta risultante, ad es.
roads.buf, e i valori 100 e 400, come segue

64
Si visualizzi la carta risultante.

Alle strade è stato assegnata la categoria 1, alla prima fascia la categoria 2 e alla seconda fascia la categoria 3, come si
può constatare mediante il comando r.cats

65
La categoria 3 identifica quindi le aree idonee per l’ubicazione 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 nell’elaborato roads.buf appena creato.
In altri termini si deve procedere ad una operazione di riclassificazione, che , come si è già sperimentato, viene
effettuata attraverso uno specifico comando denominato r.reclass.rules.

Raster > Change category values and labels > Reclassify categories using rules

Nel pannello si inserisca il nome della carta appena creata, roads.buf e di quella risultante, ad es. roads.ok

Si clicchi Run e nella finestra che viene aperta si immettano i criteri di riclassificazione, o meglio l’unico criterio di
riclassificazione, vale a dire

E quindi [Invio]

Nella carta prodotta è presente la sola fascia più esterna a cui è stato assegnata la categoria 1.

66
Distanza dai corsi d’acqua
Il secondo criterio, fra quelli elencati in precedenza, prevede di considerare idonee solo le aree ad una distanza
maggiore di 500m dai corsi d'acqua. L'idrografia dell'area è contenuta nel file streams. Si visualizzi la carta.

Considerato che le aree utili si trovano ad una distanza dai corsi d’acqua superiore a 500m., è necessario innanzitutto
individuare la fascia che si estende dai corsi d’acqua fino a 500m. mediante il comando r.buffer.

Il risultato è il seguente

La categoria 1 è assegnata ai corsi d’acqua, la categoria 2 alla fascia di 500m, mentre il valore null è assegnato a tutte le
celle a distanza maggiore. Queste ultime rappresentano quelle idonee per l’ubicazione della discarica e quindi da
sottoporre a riclassificazione per l’assegnazione del valore 1. Il comando r.reclass.rules, tuttavia, non consente la
riclassificazione dei valori null presenti in una carta. Il comando r.mapcalculator può risolvere il problema.
Assegnando ad A la carta streams.buf, l’espressione (o Formula) da utilizzare è la seguente:

if(isnull(A),1,null())

Vale a dire: se nella carta A è presente il valore null (isnull(A)), nella carta risultante viene assegnato il valore 1,
altrimenti il valore null (null()). Il risultato è una trasformazione dei valori null in 1 e dei valori 1 e 2 in null.
Assegnando alla carta risultante il nome streams.ok, il pannello va quindi compilato come segue

67
Il risultato è il seguente

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

68
Con r.cats se ne può listare il contenuto

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 riclassificare la carta landuse per
costruire un nuovo elaborato, che può essere denominato landuse.tmp, privo della categoria 6.
Quindi

69
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.

E' ora possibile procedere alla definizione delle fasce. Come per i corsi d’acqua, anche in questo caso le aree utili si
trovano ad una distanza superiore ad un certo limite (600m) e quindi si potrebbe adottare la stessa procedura, vale a dire
il calcolo di una fascia di 600m e l’utilizzo di r.mapcalculator per la trasformazione dei valori null che si trovano a
distanza maggiore. Si può tuttavia sperimentare una procedura alternativa, che consiste nel definire una prima fascia di
600m ed una seconda fascia ad una distanza talmente grande da garantire l’inclusione di tutte le celle rimanenti
all’interno dell’area di studio. Considerando le dimensioni dell’area Spearfish, la cui estensione in diagonale è di circa
24000m, una distanza di 50000m rappresenta una garanzia più che sufficiente.
Si applichi quindi r.buffer a landuse.tmp, assegnando alla carta risultante il nome landuse.buf

Si visualizzi il nuovo elaborato landuse.buf

70
Come previsto, la categoria 3 occupa tutta l’area a distanza superiore a 600m. A queste celle va assegnata la categoria
1, per ottenere la carta con le aree idonee, denominata, ad es, landuse.ok

landuse.ok dovrebbe avere il seguente aspetto

Riclassificazione della carta clivometrica


Anche per l'acclività, o pendenza dei versanti, è necessario procedere ad una riclassificazione. Si visualizzi la carta
clivometrica denominata slope:
Come già verificato in uno dei paragrafi precedenti questa carta contiene i valori di acclività, espressa in gradi, da 0 a
52,52…...
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 va quindi riclassificata. Il comando r.reclass è
particolarmente idoneo a riclassificare valori discreti, mentre pone problemi di arrotondamento quando usato con valori
continui. Una riclassificazione può comunque essere effettuata mediante il comando r.mapcalculator. Nel caso in
esame la l’espressione idonea è la seguente:
if(A >= 0 && A <= 8,1,null())
In tal modo viene assegnato il valore 1 alle celle con acclività fra 0 e 8, e null a tutte le altre.
Denominando slope.ok la carta risultante, il comando ha la seguente forma

71
Il risultato è

Riclassificazione della carta dei suoli


L'ultimo elaborato da riclassificare è quello relativo ai suoli, denominato soils.
Contiene 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 caratterizzati 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, e quindi la costruzione della carta soils.ok
è il seguente

72
Si visualizzi l'elaborato risultante

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

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 mediante il comando r.mapcalculator. Il risultato dell’operazione è
la produzione di un nuovo elaborato in cui ogni cella contiene la somma dei valori presenti nella cella corrispondente in
ciascuno dei cinque elaborati. 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
nell’elaborato risultante e rappresentano le aree idonee all’ubicazione della discarica. Per sommare i cinque elaborati si
compili il pannello del comando nel seguente modo

73
La carta risultante, denominata siti.ok, ha il seguente aspetto

Si verifichi con r.cats che la sola categoria presente in siti.ok è la categoria 5.

Calcolo delle aree


L’ultima condizione per l’idoneità delle aree individuate, è un’estensione minima di 40.000m2. Nella carta siti.ok tutte
aree idonee sono indistintamente attribuite all’unica 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, mediante il comando
r.clump. Si immetta quindi il comando, denominando siti.clump la carta risultante

74
Il numero di raggruppamenti di celle (o clumps) individuati, risulta 73, come riportato nell’Output

A ciascuno di essi è stato assegnato un diverso valore di categoria

Si visualizzi siti.clump

La diversa colorazione delle aree conferma la presenza di categorie distinte.

E’ ora possibile procedere al calcolo della superficie di ciascuna delle 73 aree mediante il comando r.stats (o in
alternativa r.report) attivando l’opzione per la stampa delle aree e l’opzione per la soppressione dei valori null come
segue

75
Nell’Output viene riportata (su un’unica colonna) la superficie di ciascuna delle 73 aree, espressa in m2.
Più precisamente:

1 40500.000000 2 111600.000000 3 14400.000000 4 66600.000000


5 109800.000000 6 50400.000000 7 2700.000000 8 1800.000000
9 9000.000000 10 900.000000 11 25200.000000 12 900.000000
13 8100.000000 14 900.000000 15 900.000000 16 6300.000000
17 3600.000000 18 900.000000 19 5400.000000 20 7200.000000
21 2700.000000 22 23400.000000 23 900.000000 24 900.000000
25 900.000000 26 16200.000000 27 9000.000000 28 44100.000000
29 1800.000000 30 900.000000 31 9000.000000 32 270900.000000
33 7200.000000 34 2700.000000 35 900.000000 36 900.000000
37 18900.000000 38 42300.000000 39 13500.000000 40 2700.000000
41 900.000000 42 1800.000000 43 1800.000000 44 3600.000000
45 3600.000000 46 900.000000 47 32400.000000 48 18000.000000
49 900.000000 50 900.000000 51 900.000000 52 900.000000
53 253800.000000 54 35100.000000 55 2700.000000 56 900.000000
57 363600.000000 58 214200.000000 59 2700.000000 60 900.000000
61 900.000000 62 900.000000 63 4500.000000 64 20700.000000
65 9900.000000 66 45000.000000 67 3600.000000 68 115200.000000
69 3600.000000 70 900.000000 71 1800.000000 72 900.000000
73 900.000000

Solo alcune delle aree hanno una superficie minima di 50.000 m2, più precisamente quelle contraddistinte dai valori di
categoria 2, 4, 5, 6, 32, 53, 57, 58, 68. Per selezionare queste aree, eliminando quelle più piccole, si può ricorrere ad
un’operazione di riclassificazione, vale a dire

76
Si visualizzi carta.finale. Solo le 9 aree con estensione di almeno 50.000m2 sono rappresentate nell'immagine.

Per meglio valutare l'ubicazione delle aree può risultare utile sovrapporre all'immagine i vettoriali contenenti
l’idrografia, in blu, e le vie di comunicazione. Il risultato è il seguente

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 imposti.

Procedimento alternativo
L’individuazione delle aree idonee all’ubicazione 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 l’uso un po’ più complesso del comando r.mapcalculator, è possibile ridurre sostanzialmente il numero di
operazioni.
In una fase intermedia della procedura seguita si hanno a disposizione i seguenti elaborati:

roads.buf (in cui la categoria 3 definisce le aree idonee all’ubicazione della discarica)
streams.buf (in cui null 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)

Indicando le cinque carte con le lettere da A ad E, l’elaborato contenente le aree che soddisfano contemporaneamente i
primi 5 criteri, che in precedenza è stato definito siti.ok, può essere ottenuto tramite la seguente espressione in
r.mapcalculator

if(A == 3 && isnull(B) && C == 3 && D >= 0 && D <= 8 && E == 1,1,null())

Tramite il comando, ad ogni cella dell’elaborato risultante, denominato siti.ok.1, viene assegnato il valore 1 se si
verificano le condizioni definite dall’if logico, il valore null se almeno una delle condizioni risulta non soddisfatta. In
dettaglio:

77
se (if) roads.buf (A) è uguale (==) a 3 e (&&) streams.buf è uguale a null (isnull(B)) e (&&) landuse.buf (C) è
uguale (==) a 3 e (&&) slope (D) ha un valore uguale o maggiore (>=) a 0 e inferiore o uguale (<=) a 8 (valori di
acclività da 0 a 8°) e (&&) soils.ok (E) è uguale (==) a 1, allora alla cella della carta risultante viene assegnato il
valore 1 che identifica le aree idonee all’ubicazione della discarica; in caso contrario viene assegnato il valore null.
E’ evidente che in questo modo la procedura risulta semplificata riducendo il numero di comandi immessi (più
precisamente vengono evitati quattro processi di riclassificazione).

La carta siti.ok.1 è ovviamente identica a siti.ok realizzata in precedenza.

Esercizio di verifica 5
Si debbano individuare, nell’area Spearfish, delle zone da destinarsi ad uso ricreativo.
Tali aree devono:
1) Essere ad una distanza dalle strade compresa fra i 100 e i 600m.
2) Essere ad una distanza dai corsi d’acqua non superiore ai 400m ed includere i corsi d’acqua.
3) Essere ad una distanza di almeno 1000m 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 della carta raster landuse.
4) Essere ubicate ad una quota compresa fra 1300 e 1600m.
5) Avere un’acclività non superiore ai 30°.
Costruire la carta con queste caratteristiche e visualizzarla insieme all’idrografia e alla rete stradale vettoriali.

Suggerimenti:
1) Definire il buffer intorno alle strade (le aree idonee saranno definite dalla categoria 3)
2) Definire i buffer intorno ai corsi d’acqua (le aree idonee saranno definite dalle categorie 1 e 2)
3) Riclassificare la carta 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 con la Formula:
if(A == 3 && B <= 2 && C == 3 && D >= 1300 && D <= 1600 && E <= 30,1,null())

78
Il menu Databases

Come si è già descritto nell’introduzione, una carta vettoriale è costituita da un insieme di caratteristiche geometriche e
di attributi.
Gli attributi sono salvati in table all’interno di un database e collegati alle caratteristiche geometriche mediante una
DBMI (DataBase Management Interface). Una table è costituita da un insieme di colonne, che contengono le variabili e
che hanno un’intestazione non più lunga di 10 caratteri, e da righe, ciascuna delle quali si riferisce ad uno specifico
elemento della carta vettoriale.
Va considerato che la copia di una carta vettoriale implica automaticamente la creazione di una table a cui viene
assegnato lo stesso nome della copia, così come la cancellazione di una carta vettoriale comporta anche la cancellazione
della table corrispondente.
Il menu Databases contiene i comandi per la gestione degli attributi delle carte vettoriali
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 delle carte vettoriali roads, streams e soils denominandole rispettivamente roads1, streams1 e soils1
(si ricorda che il percorso è: File > Menage maps and volume > Copy maps). Poichè la copia di una carta vettoriale
comporta automaticamente anche la copia della table relativa, risulteranno disponibili anche le table roads1, streams1
e soils1.

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 accessibile tramite:

Databases > Database information > List drivers

Nel pannello si attivi l’opzione print drivers and exit

Il risultato dovrebbe essere

Il driver dbf è sempre disponibile, mentre i driver pg e ogr sono elencati solo se espressamente installati in fase di
compilazione.

Connessione ad un database
La scelta del database da utilizzare viene effettuata attraverso la connessione al database stesso mediante il comando
db.connect. Di default il database connesso è il dbf. Per verificarlo si acceda a db.connect tramite:

Databases > Manage database > Connect to database

79
e nel pannello si attivi il tasto print current connection parameters and exit
Il risultato è il seguente

che conferma che la connessione corrente è al database definito dbf, che è semplicemente una directory del Mapset
corrente.
Schema e group sono opzioni utilizzabili solo per alcuni database e non sono supportati dal dbf, per cui sono definiti
come null.
Nel caso in cui si voglia accedere ad un altro database, nel pannello del comando va specificato il nome del driver
relativo nella casella driver name: e il percorso nella casella Database name:.

Elenco delle table presenti in un 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.:

Databases > Database information > List tables

elenca le table streams1, roads1 e soils1 appena create ed eventualmente quelle relative alle carte vettoriali copiate in
precedenza.

Descrizione delle caratteristiche di una table


Il comando db.describe visualizza le caratteristiche del contenuto di una table. Al comando si accede mediante

Databases > Database information > Describe table

Ad es., si inserisca come table name: il nome roads1

Nell’ Output viene riportata la descrizione dettagliata delle caratteristiche di ogni singola colonna presente nella table
roads1

80
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, può contenere caratteri alfanumerici della
lunghezza massima di 43 caratteri.

Attivando l’opzione print column names only instead… nel pannello, si ottiene una descrizione più sintetica, in
quanto vengono visualizzati solo il numero di colonne e i nomi relativi

Risultato analogo, ma più sintetico, può essere ottenuto con il comando db.columns, a cui si accede con:

Databases > Database information > List columns

Immettendo il nome roads1 si ottiene l’intestazione delle colonne presenti nella table, vale a dire:
cat
label

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 (sta per Structured Query Language ed è un linguaggio creato per l'accesso a
informazioni memorizzate nei database).

81
Per accedere:

Databases > Query > Query data (SQL select)

Immettendo solo il nome roads1 viene visualizzato l’intero contenuto della table, incluse le intestazioni delle colonne:

Di default il separatore fra i campi è “| “, ma può essere modificato inserendo il separatore desiderato nell’apposita
casella output field separator. Si cancelli ad esempio la barra verticale e si inseriscano due spazi. Si attivi anche il
tasto do not include column names in output in modo da escludere il nome delle colonne dalla lista.

82
Il risultato è

E’ possibile applicare un criterio di selezione al comando utilizzando la funzione SELECT di SQL, la cui sintassi è la
seguente (si può anche scrivere tutto in minuscolo; il maiuscolo viene qui utilizzato per meglio distinguere il nome
delle funzioni dal nome delle variabili):

SELECT columns FROM table [WHERE condition]

Ad es., per visualizzare solo le etichette descrittive (contenute nella colonna label) delle categorie (contenute nella
colonna cat) con valore maggiore di 2, si deve immettere nell’apposita casella SQL select statement, for example … :

SELECT label FROM roads1 WHERE cat > 2

Che significa: “Seleziona (e scrivi) il contenuto della colonna label della carta roads1 se il valore contenuto nella
colonna cat è maggiore di 2”. Vengono quindi scritte le etichette delle categorie 3, 4 e 5.

83
Il risultato è:

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

Un ultimo esempio, che utilizza l’operatore “~”. Con:

SELECT cat,label FROM roads1 WHERE label ~ ‘road’

si richiede la selezione e la stampa del numero di categoria e dell’etichetta descrittiva degli elementi della table che
hanno la stringa ‘road’ nell’etichetta descrittiva

84
Solo le categorie 4 e 5 presentano questa caratteristica

Copia di una table


Il comando db.copy permette di copiare una table da un database all’altro o all’interno dello stesso database. Per
eseguire, ad es., una copia della table roads1 da denominare roads2, all’interno del database dbf:

Databases > Manage database > Copy table

Si inseriscano i due nomi nelle apposite caselle, come nella seguente figura

85
Con db.tables si può verificare la presenza della nuova table roads2 (con lo stesso contenuto, ovviamente, di quella
originale, come verificabile con db.select).

Creazione, cancellazione e modifica di una table


Il comando db.execute permette di creare, cancellare e modificare 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 (già elencati in precedenza):

"=" : uguale
"<" : minore
"<=" : minore o uguale
">" : maggiore
">=" : maggiore o uguale
"<>" : diverso
"~" : stringa corrispondente

L’istruzione SQL deve essere salvata in un file il cui nome va inserito nel pannello del comando.
Ad es. per creare una table denominata table1, con tre colonne, la prima delle quali denominata cat e destinata a
contenere un numero intero, la seconda area, destinata a contenere dati numerici con cifre decimali, e la terza
descrizione, destinata a contenere fino ad un massimo di 20 caratteri alfanumerici, si utilizza l’istruzione:

CREATE TABLE table1 (cat int, area double, descrizione varchar(20))

86
Con un editor (ad es. kedit o nedit) si crei un file, denominato newtable, contenente l’istruzione (che può essere scritta
tutta in minuscolo)

Si apra quindi il pannello del comando db.execute con:

Databases > Query > Execute SQL statement

e si inserisca il nome del file creato nella casella File containing SQL statements:

Al clic su Run viene eseguita l’istruzione. La creazione della nuova table table1 e le colonne presenti possono essere
verificate con db.select. Si noti che l’intestazione descrizione è stata troncata a 10 caratteri, che rappresenta il numero
massimo di caratteri utilizzabili per definire l’intestazione di una colonna.

Per cancellare una table, ad es. table1 appena creata, si utilizza:

DROP TABLE table1

Si crei un file contenente l’istruzione e lo si salvi con il nome deltable

Si apra il pannello di db.execute e si inserisca il nome del file; si clicchi Run e si verifichi che la table non esiste più
con il comando db.tables.

E’ possibile inserire nuove colonne in una table esistente. Ad es., per inserire nella table roads1 una colonna
denominata lunghezza, destinata a contenere dati in doppia precisione, si utilizza:

ALTER TABLE roads1 ADD COLUMN lunghezza double

Al soilito si crei un file, denominato addcol, contenente l’istruzione.

87
Si apra quindi il pannello del comando db.execute e si inserisca il nome del file creato. Al clic su Run viene eseguita
l’istruzione. L’avvenuto inserimento della nuova colonna in roads1 può essere verificato con db.select o db.describe.

Dal momento che il comando db.execute è piuttosto macchinoso, sono stati creati degli appositi comandi che eseguono
direttamente, e quindi in modo più semplice per l’utente, alcune delle istruzioni specifiche di db.execute. Alcuni di
questi sono accessibili tramite i menu funzionali del GIS Manager, altri sono invece disponibili solo in modalità Linea
di Comando. Più precisamente:
v.db.addcol (per aggiungere una o più colonne ad una table. Databases > Manage database > Add columns to table)
v.db.addtable (per creare una nuova table)
v.db.droptable (per cancellare una table esistente)
v.db.select (stampa il contenuto di una table)
v.db.update (per assegnare un nuovo valore ad una colonna. Databases > Manage database > Change values in a column)

Ad es. l’operazione appena sperimentata di inserimento di una colonna può essere effettuata mediante il comando
v.db.addcol a cui si accede mediante:

Databases > Manage database > Add columns to table

Per sperimentare il comando si aggiungano alla table roads1 due nuove colonne, la prima denominata costi e destinata
a contenere dei dati numerici con cifre decimali, la seconda denominata commenti e destinata a contenere caratteri
alfanumerici fino ad un massimo di 30. Nel pannello del comando si inserisca il nome della carta vettoriale roads1 e
nell’apposita casella il nome della prima colonna seguito dal tipo di contenuto, quindi il nome della seconda colonna e
il tipo di contenuto, separati da una virgola, nel modo seguente

Con db.select si può verificare l’inserimento delle due nuove colonne, ovviamente vuote

Per modificare il contenuto di una colonna si utilizza il comando v.db.update tramite:

Databases > Manage database > Change values in a column


88
Si voglia ad es. modificare la denominazione delle strade di categoria 4 nella table roads1, denominandole
semplicemente ‘secondary road’, invece di ‘light-duty road, improved surface’. Il pannello va completato come segue

Con db.select si può verificare la modifica

89
Il menu Vector
Questo menù contiene i comandi per la gestione e l’analisi dei dati vettoriali.

Rapporti e statistiche del contenuto di una carta


Con il comando v.info si ottengono informazioni elementari sulle caratteristiche di una carta. Si apra il pannello
relativo con

Vector > Report and statistics > Basic information

e nel pannello si inserisca semplicemente il nome della carta roads1

Il risultato è il seguente

La carta contiene esclusivamente linee, più precisamente 825. Si noti che le coordinate N,S,E,W si riferiscono all’area
rettangolare in grado di contenere tutti gli elementi digitalizzati, e non alla regione corrente.

Lunghezze o aree delle categorie presenti in una carta si possono ottenere con il comando v.report accessibile tramite:

Vector > Report and statistics > Report areas for for vector attribute categories

Ad es. si immetta nel pannello roads come carta di input, si selezioni length in Value to calculate e k come unità di
misura nella casella sottostante

90
Il risultato è il seguente

Si tenga presente i valori calcolati vengono semplicemente visualizzati e non inseriti nella table degli attributi.

Connessione ad una table


Quando si crea una carta vettoriale, ad es. attraverso un’operazione di copiatura, viene automaticamente creata una
table degli attribuiti connessa alla geometria del vettoriale. E’ però possibile connettere la carta ad una diversa table
degli attributi presente in un qualunque database, mediante il comando v.db.connect.
Si può sperimentare il comando utilizzando la carta roads1 che è attualmente connessa alla table roads1. Come si
ricorderà, in questa table sono state aggiunte tre nuove colonne ed è stata modificata la descrizione della categoria 4.
Prima della modifica è stata tuttavia creata una copia della table originale denominata roads2. Per ritornare agli
attributi originali è sufficiente connettere il vettoriale roads1 alla table roads2. Si apra il pannello di v.db.connect con:

Vector > Vector<->database connections > Set database connection for vector attributes

Si attivi il tasto Overwrite connection parameter for certain layer, e si inseriscano nel pannello il nome della carta
roads1 e della table da connettere vale a dire roads2 come segue

91
Con Run viene attivata la connessione e gli oggetti del vettoriale roads1 hanno ora gli attributi definiti dalla table
roads2. Per una semplice verifica si carichi il vettoriale roads1 nel GIS Manager e nel pannello si clicchi sull’icona
alla destra di show attribute data. Nell’Output viene visualizzato

Per riconnettere la carta vettoriale alla table modificata si ripeta l’operazione inserendo nel pannello di v.db.connect la
table roads1

92
Cliccando nel pannello del vettoriale roads1 nel GIS Manager l’icona alla destra di show attribute data si può
verificare il contenuto della table connessa

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 aree). 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, oppure con il comando v.db.addcol già analizzati 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 apra il pannello del comando con:

Vector > Report and statistics > Load vector attributes to database or create reports

e si immetta il nome della carta vettoriale roads1. Nella casella Value to upload: si scelga length e nella casella
sottostante si scelga come unità di misura k per esprimere la lunghezza in chilometri. Infine, nella casella column(s) si
inserisca lunghezza, vale a dire il nome della colonna in cui inserire i valori. Si noti che di default sono attivate tutte le
opzioni relative alla tipologia degli elementi da considerare (point, line, boundary, centroid). La carta in oggetto
contiene solo elementi lineari per cui non è necessario disattivare le caselle relative a point, boundary e centroid.

93
Per verificare l’avvenuto inserimento, si usi db.select

A differenza di quanto avviene con v.report, i valori calcolati vengono inseriti nella table, che risulta pertanto
modificata, e non solo visualizzati nell’Output.

Per un esempio di inserimento di valori di area, si può utilizzare soils1 (la copia di soils creata in precedenza).
Si inserisca quindi una colonna, denominata area, destinata a contenere le aree di ciascuno dei 54 tipi di suolo con
v.db.addcol (Databases > Manage database > Add columns to table)

94
Si verifichi la presenza della nuova colonna con db.select

Si inseriscano quindi i valori di area, in metri quadrati, con v.to.db

Si visualizzi la table con db.select

95
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 carta
esistente mediante un criterio prestabilito.
Ad es. per estrarre dalla carta soils1 precedentemente creata tutti i tipi di suolo la cui area complessiva, riportata nella
colonna area, è compresa fra 500000 e 1000000m2, si apra il pannello con:

Vector > Query by attribute

e si inserisca il nome della carta soils1, il nome della carta risultante soilsext e il criterio di selezione, vale a dire:
area >=500000 and area <= 1000000
come nella seguente figura

96
Viene creato una nuova carta vettoriale, denominata soilsext, con la relativa table.

Si verifichi il risultato visualizzando la carta nel Map Display con attivata l’opzione categories.

E visualizzando il contenuto della table con db.select

97
Esercizio di verifica 6
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 l’area, in m2, degli appezzamenti selezionati alla table e visualizzarne il contenuto.

Creazione di una fascia nell’intorno di oggetti


Il comando v.buffer permette di definire una fascia di ampiezza a piacere nell’intorno di una determinata tipologia di
oggetti presenti in una carta vettoriale. Per definire ad es. una fascia dell’ampiezza di 200m intorno ai corsi d’acqua, si
apra il pannello del comando con:

Vector > Create vector buffer

Si inserisca streams come nome della carta e si assegni il nome streams_buffer alla carta risultante. Nella sezione
Type: si disattivino point e area in modo che venga definita la fascia solo nell’intorno degli elementi lineari (corsi
d’acqua). Infine si inserisca 200 come Buffer distance in map units:

98
Il risultato è il seguente

A differenza del comando equivalente per le carte raster, r.buffer, questo comando permette il calcolo di una sola
fascia. Il calcolo di più fasce può comunque essere ottenuto ripetendo il comando più volte. Se ad. es. si volesse
determinare la fascia fra 200 e 300m attorno ai corsi d’acqua, si dovrebbe dapprima calcolare la fascia di 200m, come
realizzato in streams_buffer e applicare di nuovo il comando immettendo come carta originale streams_buffer.
Ovviamente come tipologia degli oggetti va selezionata area e come distanza 100.

Sovrapposizione condizionata di due carte


Il comando v.overlay 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 un’operazione di intersezione fra le due carte
or (default): per un’operazione di unione
not : per un’operazione di esclusione
xor: per un’operazione di unione con esclusione dell’intersezione

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 dell’area in 63 appezzamenti appartenenti a diversi proprietari.
Si faccia una copia di ciascuna carta assegnando rispettivamente il nome suoli e campi.

Si visualizzi il contenuto della table campi con il comando db.select

99
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 (Vector > Query by attributes), definendo la carta risultante campiKren e specificando il range di categorie
da estrarre (48-58)

Si visualizzi la carta creata

100
Con procedimento analogo, si crei una nuova carta, denominata suolisel, contenente esclusivamente i suoli con
categoria 23, 44 e 51.

Si visualizzi la carta risultante, che contiene 135 aree con i tre tipi di suolo selezionati

101
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 l’operatore di “intersezione” and:

Per accedere al pannello del comando:

Vector > Overlay maps > Overlay/combine 2 vector maps

Si inseriscano i nomi delle due carte campiKren e suolisel nelle apposite caselle e si assegni il nome campiandsuoli
alla carta risultante. Nella casella sottostante si scelga dall’elenco l’operatore and

102
Vengono individuate 36 aree distinte con le caratteristiche richieste

Le colonne della table campiandsuoli, visualizzabile con db.select:, contengono, nell’ordine, il numero progressivo
delle 36 aree, il numero di categoria e l’etichetta descrittiva degli appezzamenti originali, e il numero progressivo e
l’etichetta 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 l’operatore di “unione” or. Si può usare lo stesso pannello precedente modificando solo
il nome della carta risultante, campiorsuoli, e selezionando l’operatore or

103
Si ottengono 184 aree distinte

e viene creata la seguente table in cui 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. l’area 11)

104
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 un’operazione di “esclusione” con l’operatore not

105
Il risultato è il seguente

Infine, per ottenere una carta contenente le aree appartenenti a C.Krenshow e le aree occupate dai suoli 23, 44 e 51, con
l’esclusione però delle aree comuni, cioè delle aree di C.Krenshow occupate dai tre tipi di suolo, si utilizza l’operatore
xor

con il seguente risultato

106
Gli esempi precedenti coinvolgono due carte contenenti entrambe elementi areali. L'operazione di overlay si può
effettuare anche quando una carta contiene elementi lineari. Per individuare ad es. i segmenti fluviali che interessano
ogni specifico appezzamento di terreno appartenente ad un diverso proprietario, si applica il comando alle due carte
streams, che contiene elementi lineari, e fields, che contiene elementi areali. Si visualizzino entrambe le carte nel Map
Display, facendo attenzione a sovrapporre l’idrografia agli appezzamenti a diversa proprietà. Come si può notare solo
parte del reticolato idrografico cade all’interno degli appezzamenti.

Si acceda al comando e si inserisca nel pannello streams, come prima carta di input. Si attivi la sottostante opzione
line, disattivando area. Si inserisca quindi fields come seconda carta di input e si assegni il nome st_fi alla carta
risultante. Infine si selezioni l’operatore and e si clicchi Run. Il pannello dovrebbe avere il seguente aspetto

107
E la carta risultante

Si visioni la table st_fi (con db.select) per analizzare la distribuzione nei diversi appezzamenti dei 112 segmenti
fluviali individuati.

Riclassificazione di una carta


La riclassificazione di una carta vettoriale ha come risultato la creazione di una nuova carta in base a determinati criteri
di riclassificazione applicati alla carta originale. I criteri devono essere contenuti in un apposito file. Ogni criterio è
definito su due righe: nella prima viene definita la categoria da assegnare, nella seconda viene specificata la condizione
di riclassificazione. Per sperimentare il comando si riclassifichi la carta appena ottenuta, st_fi, in modo da assegnare la
stessa categoria ai segmenti fluviali che ricadono all’interno di appezzamenti appartenenti allo stesso proprietario.
Mediante un editor si scriva il file di riclassificazione, denominato st_fi.rec, con le seguenti caratteristiche

108
La categoria 1 della nuova carta viene assegnata ai segmenti fluviali che nella colonna b_label della table st_fi
contengono la stringa ‘Black Hills Natl. Forest’.
La categoria 2 viene assegnata ai segmenti che in b_label contengono la stringa ‘Sea’. In tal modo non solo si accelera
la scrittura del file di riclassificazione, ma si definiscono tutti gli appezzamenti appartenenti a D. Seagall (sono tre),
indipendentemente dalla loro numerazione.
Lo stesso criterio viene utilizzato per l’assegnazione delle altre categorie.
Per effettuare la riclassificazione si acceda al comando v.reclass tramite

Vector > Change attributes > Reclassify features using rules file

e si introducano il nome della carta da riclassificare, st_fi, il nome della carta riclassificata, ad es. st_fi_rec e il nome
del file di riclassificazione, st_fi.rec, come segue

Il risultato è il seguente

109
Il comando non produce la table degli attributi relativa alla carta creata.

Unione di più carte


Il comando v.patch permette di costruire una nuova carta vettoriale mediante l’unione di due o più carte vettoriali
esistenti. Per unire le carte vettoriali roads e streams, ad es., si acceda al comando mediante

Vector > Overlay maps > Patch multiple maps (combine)

e si inseriscano nel pannello i nomi delle due carte e quello della carta risultante, ad es. roastr

Va considerato che di default non viene creata la table relativa al nuovo vettoriale. La table viene creata solo se
esplicitamente richiesta tramite il tasto Copy also attribute table nel pannello e solo se le due table hanno le stesse
caratteristiche in termini di numero, formato e nome delle colonne. Nella carta risultante vengono comunque conservate
le categorie presenti nelle due carte componenti come verificabile visualizzando la carta con l’opzione di
visualizzazione delle categorie attiva.

Esercizio riassuntivo relativo alle carte vettoriali


Si supponga che la Contea a cui appartiene l’area Spearfish abbia pianificato all’interno dell’area occupata dalla Black
Hill National Forest, come definita nella carta fields, la realizzazione di una fascia di sicurezza, mediante
disboscamento, su entrambi i lati delle strade caratterizzate dalle categorie 3, 4 e 5 nella carta roads. L’ampiezza delle
fasce è diversa a seconda della categoria della strada, più precisamente una fascia di 6m per le strade di categoria 3, di
4m per le strade di categoria 4 e di 3m per le strade di categoria 5. Si vuole conoscere l’area complessiva soggetta a
disboscamento.

110
Procedimento
Dal momento che solo le strade di categoria 3, 4 e 5 sono di interesse per l’analisi, risulta innanzitutto opportuno creare
una carta contenente solo queste categorie estraendole da roads mediante il comando v.extract

Vector > Query by attribute

Nel pannello si specifichi roads come carta di input, roads_es come carta risultante, e le categorie da estrarre
nell’apposita casella.

Per verificare gli effetti dell’operazione, si visualizzi la carta nel monitor con i numeri di categoria, quindi la table degli
attributi con db.select

111
Un’operazione analoga va seguito per estrarre dalla carta fields l’area occupata dalla Black Hill National Forest.
Come verificato in un esercizio precedente l’area è identificata dalla categoria 63. Quindi:

Vector > Query by attribute

Si inseriscano fields come carta di input, fields_es come carta risultante e 63 come categoria da estrarre.

Si visualizzi la carta nel Map Display.

112
Quindi la table degli attributi con:

Databases > Query > Query data (SQL select)

Per il calcolo delle fasce è disponibile il comando v.buffer, già sperimentato in precedenza per definire una fascia di
ampiezza costante (100m) nell'intorno degli elementi lineari (corsi d'acqua) presenti nell'area. Tuttavia il comando
permette di definire fasce di ampiezza diversa per le diverse categorie di oggetti presenti in una carta. Le diverse
ampiezze vanno inserite in una colonna all'interno della table. E' quindi necessario innanzitutto introdurre una nuova
colonna, definita ad es. fascia nella table roads_es, mediante il comando v.db.addcol accessibile tramite:

Databases > Manage database > Add columns to table

Nel pannello si inserisca il nome della carta, roads_es e l'intestazione della nuova colonna, fascia, seguita dal tipo di
dati da inserire, nel caso specifico numeri interi, int

Nella nuova colonna vanno quindi inseriti i diversi valori di ampiezza per le diverse categorie di strada. Il comando per
l'inserimento di valori è v.db.update il cui pannello viene aperto tramite:

Databases > Manage database > Change values in a column

Per inserire il valore di ampiezza 6 in corrispondenza della categoria 3 si inserisca il nome della carta, roads_es, il
nome della colonna di inserimento, fascia, il valore da assegnare, 6, e come condizione cat=3.

113
In modo analogo, modificando il pannello, si assegni il valore 4 alla categoria 4.

Infine, per assegnare il valore 3 alla categoria 5

Visualizzando la table si può verificare il contenuto della colonna fascia.

114
A questo punto è possibile calcolare le fasce a diversa ampiezza.

Vector > Create vector buffer

Nel pannello si inserisca il nome della carta di input, roads_es, di quella risultante, roads_es_buf, e fascia nella casella
Attribute column to use for buffer distances:.

Vengono quindi calcolate delle fasce attorno alle strade con ampiezza diversa a seconda della loro categoria, come
specificato dai valori presenti nella colonna fascia.
Si visualizzi la carta risultante.

115
Per rendere visibili le fasce si può utilizzare il tasto del Map Display. Nella seguente figura è riprodotta la porzione
centrale della carta.

Per determinare le aree appartenenti contemporaneamente alle fasce definite in roads_es_buf e alla National Forest
definita in fields_es, si utilizza il comando v.overlay con l'operatore and, a cui si accede mediante

Vector > Overlay maps > Overlay/combine 2 vector maps

Si immettano le due carte di input, si definisca fields_roads la carta risultante e si selezioni l'operatore and.

116
Si visualizzino le due carte fields_es e fields_roads (nell’ordine) nel Map Display.

Si prenda visione della table fields_roads con db.select

Sono state individuate 27 aree distinte.

Dal momento che è richiesta l’area complessiva, è necessario riclassificare la carta in modo da attribuire la stessa
categoria, ad es. 1, alle 27 aree. Allo scopo si utilizza il comando v.reclass che legge i criteri di riclassificazione da un
file creato appositamente, come sperimentato in un paragrafo precedente. Si crei pertanto il file fr.rec mediante un
editor con il seguente contenuto e lo si salvi nel direttorio corrente.

117
(Si potrebbero anche adottare indifferentemente i criteri ‘where a_cat = 1’, oppure ‘where b_cat=63’).

Si acceda quindi a v.reclass tramite:

Vector > Change attributes > Reclassify features using rules file

e si inseriscano il nome della carta da riclassificare, fields_roads, il nome della carta risultante fr_rec e il nome del file
con i criteri di riclassificazione, fr.rec.

Viene creato un nuovo vettoriale in cui tutti gli oggetti hanno la stessa categoria 1, privo tuttavia di una table degli
attributi, che deve quindi essere creata mediante il comando db.execute con la funzione CREATE TABLE table (
columndefs ). Come nel caso precedente, la definizione della funzione deve essere inserita in un apposito file. Dal
momento che nella table dovrà essere inserito anche il valore dell’area, va creata anche la relativa colonna. Il file,
denominata ad es. fr.tab, deve avere pertanto il seguente contenuto.

Si acceda quindi al comando db.execute:

Databases > Query > Execute SQL statement

E si inserisca nella realtiva casella il nome del file creato, fr.tab.

118
La table creata deve innanzitutto essere connessa alla carta fr_rec mediante v.db.connect:

Vector > Vector<->database connections > Set database connection for vector attributes

Si inseriscano nel pannello il nome della carta, fr_rec, e della table a cui va connessa, fr_rec (non è necessario, ma
conveniente, assegnare alla table lo stesso nome della carta).

La table contiene due colonne denominate cat e area, prive di contenuto, come verificabile con db.select.

Per definire una corrispondenza fra la categoria assegnata agli oggetti presenti nella carta e gli attributi presenti nella
table, è necessario inserire nella table il numero di categoria prelevandolo dal vettoriale fr_rec. Allo scopo si utilizza il
comando v.to.db:

Vector > Report and statistics > Load vector attributes to database or create reports
119
Si inserisca il nome della carta e si selezioni cat nella casella Value to upload:.

Per calcolare e inserire l’area si utilizzi lo stesso pannello, selezionando area come Value to upload:, me come unità di
misura e area come nome della colonna di inserimento.

Si visualizzi con db.select il contenuto della table, che contiene, come richiesto, la superficie complessiva destinata a
disboscamento.

120
Il menu Imagery

Da questo menù sono accessibili i comandi per la georeferenziazione, rettificazione e analisi di immagini da satellite,
foto aeree e carte acquisite tramite scanner. L’argomento, per quanto estremamente importante, è piuttosto complesso
ed esula quindi dagli scopi del presente manuale introduttivo. Inoltre la Location Spearfish non contiene elaborati per
una sperimentazione di questo tipo di comandi. Per una trattazione approfondita dell’argomento si rimanda al Cap.9 del
testo di M. Neteler e H. Mitasova (2004): Open Source GIS: A GRASS GIS Approach (Second Edition) mentre
dati idonei all’utilizzo dei comandi si possono trovare all’indirizzo http://grass.itc.it/download/data6.php sotto il nome
‘IMAGERY 6.0 data set’.

121
Il menu Grid3D

E' il menu per la gestione ed elaborazione di volumi o "carte" tridimensionali (3D), vale dire di carte in cui la posizione
di un punto è definita da una terna di coordinate x,y,z. Come già spiegato, per la gestione di carte di questo tipo è
necessario utilizzare una regione tridimensionale, definita, oltre che dai limiti planimetrici, anche da un quota minima
ed una massima. Una regione di questo tipo è già stata creata e salvata in precedenza con il nome regione_3d.
Si imposti questa regione come regione corrente (mediante Config > Region > Change region settino).

Nel pannello si inserisca il nome regione_3d nell’apposito spazio e si clicchi Run

Un elaborato tridimensionale può essere facilmente costruito importando un file ASCII con il comando v.in.ascii già
sperimentato. Il file può essere costruito rapidamente modificando il file punti_ascii creato in precedenza, aggiungendo
la quota dei punti (coordinata z). In altri termini si suppone che i dati di temperatura siano stati rilevati al di sopra delle
stazioni di misura alle quote indicate. Si apra quindi il file punti_ascii in un editor, si aggiunga una colonna contenente
le quote, come nella figura seguente, e lo si salvi con il nome punti_ascii_3d.

Per la trasformazione in una carta vettoriale GRASS si acceda a v.in.ascii (File > Import > Vector map> ASCII points
file or GRASS ASCII vector file) e nel pannello si attivi la prima opzione in alto Create 3D file e si inseriscano i nomi
del file di input, punti_ascii_3d, e della carta risultante, punti_temp_3d. Negli appositi spazi per la definizione delle
colonne del file contenenti i valori x,y,z e cat, si inseriscano rispettivamente i valori 2,3,4 e 1, come nella seguente
figura

122
Si clicchi il tasto Run. La carta vettoriale 3D viene creata insieme alla relativa table degli attributi. Il contenuto è
visualizzabile con db.select (Databases > Query > Query data (SQL select))

Si noti che l’intestazione delle colonne viene inserita automaticamente dal comando v.in.ascii.
Come si è detto la carta creata è una carta vettoriale tridimensionale. Può esser trasformata in una carta raster
tridimensionale con comando v.to.rast3 a cui si accede tramite

File > Map type conversion > Vector 3D points to volume voxel

123
Nel pannello del comando si inseriscano il nome della carta vettoriale punti_temp_3d e della carta raster
tridimensionale risultante, ad es. punti_temp_3d_rast. In corrispondenza di Column name (type must be numeric) si
definisca l’intestazione della colonna contenente i valori (temperature) da inserire nelle celle tridimensionali, vale a dire
int_5

Premendo Run viene costruita la carta raster punti_temp_3d_rast costituita da un insieme di celle cubiche con lato di
100 metri, cinque delle quali contengono i valori di temperatura, mentre tutte le altre hanno valore null.
Le carte tridimensionali, sia vettoriali che raster, non possono essere visualizzate nel Map Display, ma necessitano di
appositi moduli per la visualizzazione di elaborati tridimensionali, come ad es. NVIZ che è accessibile dal GIS
Manager.
In questo menù sono tuttavia disponibili alcuni comandi per la gestione di elaborati 3D che verrano analizzati di seguito

Rapporti e statistiche del contenuto di una carta 3D


Per estrarre informazioni da carte 3D è possibile utilizzare il comando r3.info, a cui si accede tramite

Grid3D > Report and statistics > Display information about grid3D volume

Nel pannello si inserisca semplicemente il nome della carta e si clicchi Run.

Viene visualizzata una tabella che riassume le caratteristiche di base della carta

124
Informazioni più specifiche si possono ottenere con le diverse opzioni del pannello.

Tracciamento di sezioni attraverso un raster 3D


E’ anche possibile tracciare delle sezioni attraverso un carta 3D in corrispondenza di una carta altimetrica di
riferimento. Per sperimentare questa opzione si costruisca dapprima una carta altimetrica ad una quota costante di
1180m. Si può utilizzare r.mapcalculator (Raster > Map calculator) inserendo nel pannello semplicemente il valore
1180 nella casella Formula e assegnando il nome quota1180 alla carta risultante, che rappresenta quindi un piano
orizzontale a quota 1180m.

Per la costruzione della sezione si utilizza il comando r3.cross.rast

Grid3D > Create 2D raster cross section from grid3d volume

Nel pannello si inseriscano il nome della carta 3D, il nome della carta altimetrica e quello della carta risultante
125
Si visualizzi nel Map Display la carta temp_1180

Il quadretto rosso che compare a nord ovest, rappresenta l’intersezione del piano a quota 1180 con la cella
tridimensionale relativa alla temperatura della stazione 5. Infatti il valore originale di temperatura, 26°, misurato ad una
quota di 1190 metri, è stato assegnato nella carta raster 3D alla cella (cubica con lato di 100m) che occupa una spazio
verticale fra 1100 e 1200m. Per verificare che il valore della cella è effettivamente 26, si può usare il tasto per
l’interrogazione interattiva del Map Display.

Costruzione di un volume 3D da punti vettoriali tridimensionali


Se partendo dai dati puntuali vettoriali tridimensionali si vuole costruire un volume tridimensionale in formato raster è
disponibile il comando v.vol.rst che assegna un valore a tutte le celle presenti nello spazio tridimensionale interpolando
i punti dati mediante ‘spline regolarizzate’. Per accedere al comando:

Grid3D > Interpolate volume from vector points using splines

Il comando prevede un numero elevato di opzioni che permettono di modellare il risultato a seconda delle sigenze
dell’utente e delle caratteristiche dei dati immessi. Per sperimentarne un uso molto semplice, nel pannello si inserisca
come input il vettoriale 3D punti_temp_3d creato in precedenza. Nello spazio denominato Name of the column
containing w attribute to interpolate va inserito il nome della colonna contenente i dati di temperatura da interpolare,
vale a dire int_5. Più sotto, in corrispondenza di Output elevation g3d-file si inserisca il nome dell’elaborato di output
contenente il volume interpolato, ad es. vol_temp.

126
Si clicchi quindi Run. L’elaborato risultante può essere visualizzato con NVIZ, ma è anche possibile tracciare delle
sezioni visualizzabili nel Map Display con il comando r3.cross.rast già sperimentato in precedenza. Come si è già
detto, questo comando permette di tracciare delle sezioni in corrispondenza di una superficie altimetrica definita da una
carta raster. In precedenza si è utilizzato come superficie altimetrica un piano a quota costante (quota1180). E’
possibile tuttavia utilizzare una qualsiasi superficie altimetrica comunque conformata, come ad es. elevation.dem. In tal
caso la carta bidimensionale risultante riporta i valori del volume (temperatura) in corrispondenza delle diverse quote
della carta altimetrica. Per sperimentare questa possibilità, si apra il pannello r3.cross.rast e si inseriscano i nomi degli
elaborati come segue

127
Si clicchi quindi Run e si visualizzi la carta creata temp_elevation.dem nel Map Display.

Con il tasto per l’interrogazione interattiva del Map Display si verifichino i diversi valori di temperatura.

Costruzione di una carta 3D tramite operazioni aritmetiche e logiche su altre carte 3D


Anche in 3D è possibile eseguire calcoli sulle carte mediante r3.mapcalculator, analogo al già sperimentato
r.mapcalculator per le carte bidimensionali.
Per provare il comando si immagini di voler esprimere i valori di temperatura di vol_dem in gradi Fahrenheit anziché
centigradi. Come noto F°=9/5C°+32.
Si entri in r3.mapcalculator

Grid3D > Map calculator for grid3D operations

Nel pannello si inserisca in A: il nome della carta vol_temp, in Formula l’espressione A*9/5+32 e come nome della
carta risultante vol_temp_far

128
Cliccando Run viene eseguita la trasformazione e prodotta la nuova carta. Con r.info se ne possono verificare le
caratteristiche, fra cui l’intervallo di valori che varia da un minimo di 62,329….. ad un massimo di 77.333……

129
Il menu Help

Da questo menù si accede al manuale, alle informazioni relative al Copyright e alle caratteristiche del sistema in uso.
In particolare, cliccando il tasto Help viene visualizzato il seguente menù

Cliccando su GRASS help viene visualizzata la pagina indice del Manuale di riferimento da cui si possono accedere
alle diverse sezioni e comandi del manuale.
L’opzione GIS Manager help visualizza la pagina del manuale relativa al comando gis.m contenente la descrizione del
comando e delle funzioni associate ai diversi tasti sia del GIS Manager che del Map Display.
L’opzione About GRASS visualizza una breve descrizione dei termini della Licenza e del Copyright di GRASS.
Infine l’opzione About System elenca le caratteristiche del sistema in uso: Piattaforma, Sistema Operativo, Versione,
ecc.

130
Altre modalità di immissione dei comandi

Fino a questo punto si è sperimentata l’esecuzione dei comandi di GRASS tramite l’interfaccia grafica GIS manager,
sia utilizzando i diversi menu funzionali, sia mediante i tasti predisposti nella finestra del GIS Manager stesso e nel
Map Display. Questa modalità non richiede la conoscenza da parte dell'utente ne' del nome del comando ne' dei
parametri e delle opzioni disponibili. Un'altra modalità già sperimentata in precedenza, consiste nell’inserimento di un
comando completo, vale a dire in modalità Linea di Comando, nella lista dei comandi da eseguire mediante il tasto
del GIS Manager.

Immissione dei comandi dalla finestra dell'Output


Un’altra modalità consiste nell’esecuzione di un comando della finestra di Output. Per sperimentarla si clicchi nella
sezione inferiore dell'Output e si inserisca il comando g.list. Si clicchi quindi il tasto sottostante Run UI (UI sta per
User Interface). Viene aperto il pannello del comando per l’immissione dei parametri, lo stesso pannello disponibile
attraverso le funzioni del GIS Manager. Si scelga rast come data type:, si clicchi Run e, come previsto, nell’Output
vengono elencate le carte raster presenti nei vari Mapset.
Dalla stessa finestra dell'Output è possibile immettere un comando in modalità Linea di Comando. Per sperimentare
questa modalità, si aggiunga rast alla destra di g.list già presente nella parte inferiore dell'Output, in modo che il
comando risulti g.list rast, e si clicchi Run. Si ottiene direttamente lo stesso risultato.
Per immettere un nuovo comando è necessario cancellare quello precedente.
Se si immette un comando di visualizzazione è necessario aprire preventivamente un’apposita finestra grafica, definita
monitor in GRASS. Infatti le immagini non possono essere visualizzate nel Map Display. Per aprire un monitor si
cancelli il comando precedente e si immetta d.mon x0 (d.mon è il comando per la gestione dei monitor e x0 è il nome
del monitor da aprire). Cliccando su Run viene aperta la finestra grafica denominata monitor x0. Per visualizzare una
carta raster si cancelli d.mon x0 e si immetta d.rast geology. Cliccando Run (background) la carta viene visualizzata.
Si chiuda il monitor x0 (cliccando sulla crocetta in alto a destra).

Immissione di comandi dal prompt di GRASS


Un’altra modalità alternativa al Gis Manager è l’immissione dei comandi dal prompt di GRASS in una finestra a
caratteri. Dal momento che rappresenta una modalità piuttosto utilizzata, soprattutto dagli utenti più esperti in quanto
più veloce, verrà trattata di seguito in modo più approfondito.
Per utilizzare questa modalità si imposti la regione di default e si esca dal Gis Manager (File > Exit). Vengono chiuse le
tre finestre e il controllo passa al prompt di GRASS nel terminale a caratteri:

GRASS 6.2.2cvs (spearfish60):~>

Si apra un monitor con il comando

> d.mon x0 [invio]

Quindi si visualizzino le categorie fra 1100 e 1200 e fra 1500 e 1700 della carta raster elevation.dem

> d.rast elevation.dem catlist=1100-1200,1500-1700

La modalità Linea di Comando presuppone la conoscenza del nome del comando e dei parametri e delle opzioni
disponibili, come il parametro catlist nell’ultimo comando immesso. Un considerevole aiuto in questo senso è offerto
dall’help in linea. Si immetta ad es.

> d.rast help

Viene visualizzata una sintetica descrizione del comando d.rast, con la sua intassi, i parametri e le opzioni. Si noti che
catlist è il parametro per definire le categorie (o gli intervalli di categoria) da visualizzare nelle carte contenenti numeri
interi (come nel caso di elevation.dem).
Per aver informazioni più complete è ovviamente disponibile il manuale in linea. Per accedervi:

> g.manual d.rast

Si chiuda la pagina del manuale.


Esistono diversi accorgimenti per velocizzare l'immissione dei comandi. Uno di questi è l'utilizzo del tasto ‘freccia in
su’ per richiamare i comandi precedentemente immessi. Ad es., si prema il tasto fino ad arrivare al comando di
visualizzazione di elevation.dem. Si sostituisca 1700 con 1600 e si prema [Invio] da tastiera.

131
Un altro accorgimento consiste nel digitare solo le lettere iniziali di un parametro. Le prime tre lettere garantiscono
sempre l'assenza di conflitto con altri parametri dello stesso comando e talora è sufficiente la lettera iniziale. Si provi ad
es. ad eseguire il precedente comando d.rast sostituendo a catlist l’iniziale c (si richiami il comando con il tasto
“freccia in su”)

> d.rast elevation.dem c=1100-1200,1500-1600

Per cancellare l'immagine dal monitor:

> d.erase

Alcuni comandi presentano una sintassi leggermente diversa se immessi dal prompt e talora esistono anche comandi
alternativi, più idonei all’utilizzo in modalità Linea di Comando. E’ il caso ad es. di r.mapcalculator, già utilizzato in
precedenza tramite il GIS Manager. Si provi ad es. a costruire una carta altimetrica, denominata elev.mm con le quote
in millimetri partendo dalla carta altimetrica, elevation.dem, in cui, come noto, le quote sono espresse in metri. Si è già
sperimentato in precedenza, mediante il GIS Manager, che per ottenere la carta richiesta è sufficiente moltiplicare per
1000 la carta elevation.dem. La stessa carta si ottiene in modalità Linea di Comando con:

> r.mapcalculator amap=elevation.dem formula=A*1000 outfile=elev.mm

Ma la stessa operazione può essere effettuata con il comando r.mapcalc che ha una sintassi (ma non una logica)
leggermente diversa, più sintetica e quindi più idonea all’immissione dal prompt (in realtà r.mapcalculator utilizza il
comando r.mapcalc adattando semplicemente l’input e l’output alle esigenze del GIS Manager).
> r.mapcalc “elev.mm=elevation.dem*1000”

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 (nel caso specifico non sono
necessarie).

Gran parte dei comandi di GRASS non permettono la sovrascrittura di carte o files esistenti, per evitarne la
cancellazione accidentale. Si provi ad es. a copiare la carta raster geology denominandola geology.copia. Il comando da
inserire è il seguente:

> g.copy rast=geology,geology.copia

La nuova carta viene creata e inserita nel Mapset esercizi, come verificabile con:

> g.list rast

Si richiami il comando di duplicazione (freccia in sù!) e si prema [Invio] per eseguirlo nuovamente. Viene emesso un
messaggio di errore in quanto la carta geology.copia esiste già e non può essere sovrascritta. Per abilitare la
sovrascrittura si usa l’opzione --overwrite (o più semplicemente --o). Si richiami il comando e si aggiunga l’opzione:

> g.copy rast=geology,geology.copia --o

La copia viene eseguita.

E’ anche possibile abilitare la sovrascrittura in modo permanente modificando la variable OVERWRITE con il
seguente comando:

> g.gisenv set=’OVERWRITE=1'

Si richiami e si esegua il comando:

> g.copy rast=geology,geology.copia

La copia viene eseguita.


Va considerato che la variabile mantiene il suo settaggio non solo nella sessione corrente ma anche nelle successive
sessioni di lavoro per cui va usato con cautela.

Per disabilitare la sovrascrittura:

> g.gisenv set=’OVERWRITE=0'


132
Si è già anticipato che non tutti i comandi di GRASS sono disponibili tramite il GIS Manager. Altri, pur disponibili,
risultano di utilizzo solo parziale e spesso particolarmente complicato. Per questi comandi la migliore modalità di
immissione è dal prompt di GRASS. E’ il caso di alcuni comandi per l’analisi dei reticoli come ad es. il comando
d.path che permette di individuare il percorso più breve (o meno costoso) fra due punti lungo un reticolo.
Per sperimentare il comando, si supponga di dovere individuare il percorso stradale più breve fra due punti individuati
nell’area Spearfish. Si pulisca il monitor con:

> d.erase

si visualizzi il reticolo stradale:

> d.vect roads

quindi si digiti:

> 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
un punto nel settore orientale dell’area 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 stradale, vengono anche riportate le distanze dei punti dalla rete stessa (Distance to
the network e distance from the network).

Il calcolo del percorso 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.

Per definire il percorso più breve fra più coppie di punti contemporaneamente e salvare la carta risultante e le distanze
calcolate, si può utilizzare il comando v.net.path. Il comando prevede l’immissione delle coordinate dei punti fra cui

133
calcolare le distanze. Una modalità molto semplice di immissione consiste nel digitare le coppie di coordinate nelle
righe immediatamente successive al comando. Nel comando stesso viene indicata tale modalità di immissione tramite i
caratteri << seguiti da una stringa qualsiasi, per cui il comando interpreta le righe successive come dati di input fino
alla riga contenente la stessa stringa.
Pertanto si digiti:

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

Esercizio riassuntivo relativo all'immissione dei comandi dal prompt di GRASS


Per acquisire una certa familiarità con questa modalità di utilizzo di GRASS e valutarne le differenze con l’uso
dell’interfaccia grafica, è utile ripetere l’esercizio relativo all’individuazione di siti idonei all’ubicazione di una
discarica, già svolto in precedenza mediante il GIS Manager.
Per comodità si riporta di seguito la tabella dei criteri da adottare.

Vincoli Motivazione Tematismo coinvolto

Fra 100 e 400m dalla rete viaria Lontano dalle strade ma non troppo per Strade
esistente limitare i costi di costruzione di nuove
strade di accesso
Oltre 500m dai corsi d’acqua Per evitare lo scolo diretto nei corsi Corsi d'acqua
d'acqua
Oltre 600 m dalle aree Per evitare una collocazione troppo vicina Uso del suolo
residenziali e dalle infrastrutture alle zone frequentate
Pendenza non superiore a 8° Per limitare le opere di sbancamento ed Pendenza o acclività del
evitare una eccessiva erosione per terreno
ruscellamento a monte
Suoli impermeabili Per evitare infiltrazioni superficiali. Tipo di suolo
Superficie di almeno 50.000m2 Per un dimensionamento della discarica Estensione
atto a soddisfare le necessità del territorio

Dal momento che la procedura è già stata analizzata nel dettaglio in precedenza, i diversi passaggi verranno descritti
sinteticamente.

Verifica della presenza nel Mapset PERMANENT delle carte necessarie all'esecuzione dell'esercizio, roads (Strade),
streams (Idrografia), landuse (Uso del suolo), slope (Acclività) e soils (Suoli)

> g.list rast


134
Distanza dalle strade
Calcolo delle fasce

> r.buffer input=roads output=roads.buf2 distances=100,400 units=meters

Si noti che l’ampiezza dei buffer viene introdotta mediante il parametro distances=.

Visualizzazione della carta risultante


> d.rast roads.buf2

Assegnazione della categoria 1 alla fascia idonea mediante un processo di riclassificazione

> r.reclass input=roads.buf2 output=roads.ok2

premendo [Invio] nella finestra dei comandi compare

>

Di fianco al segno si scriva:

3 = 1 [Invio]

Al nuovo segno:

>

si scriva:

end

e si prema [Invio].

La carta riclassificata viene creata. Per visualizzarla:

> d.rast roads.ok2

Distanza dai corsi d’acqua


Calcolo delle fasce:

> r.buffer i=streams o=streams.buf2 d=500

Si noti che i parametri input, output e distances sono stati sostituiti dalle iniziali e che la definizione delle unità è stata
omessa, in quanto vengono utilizzati i metri di default. Si visualizzi l'elaborato risultante mediante il comando:

> d.rast streams.buf2

Per l’assegnazione della categoria 1 alle aree con distanza superiore ai 500m:

> r.mapcalc “streams.ok2=if(isnull(streams.buf2),1,null())”

Visualizzazione della carta risultante:

> d.rast streams.ok2

Sovrapposizione della rete idrografica in colore blu:

> d.vect streams co=blue

Distanza dai centri abitati e dalle infrastrutture


Prima riclassificazione per l’esclusione della categoria 6.

135
> r.reclass i=landuse o=landuse.tmp2
> 1 2 3 4 5 7 8 = 1
> end

Calcolo delle distanze

> r.buffer i=landuse.tmp2 o=landuse.buf2 d=600,100000

Visualizzazione:

> d.rast landuse.buf2

Riclassificazione delle aree idonee

> r.reclass i=landuse.buf2 o=landuse.ok2


> 3=1
> end

Visualizzazione:

> d.rast landuse.ok2

Riclassificazione della carta clivometrica


Assegnazione della categoria 1 ai valori compresi fra 0° e 8°:

> r.mapcalc “slope.ok2=if(slope >= 0 && slope <= 8,1,null())”

Visualizzazione:

> d.rast slope.ok2

Riclassificazione della carta dei suoli


Riclassificazione dei tipi di suolo idonei:

> r.reclass i=soils o=soils.ok2


> 1 thru 5 8 18 thru 27 30 thru 35 39 thru 45 50 51 52 54 = 1
> end

Visualizzazione:

> d.rast soils.ok2

Individuazione delle aree potenzialmente idonee


Somma delle cinque carte:

> r.mapcalc siti.ok2 = roads.ok2 + streams.ok2 + landuse.ok2 + slope.ok2 + soils.ok2

Visualizzazione dell'elaborato:

> d.rast siti.ok2

Calcolo delle aree


Assegnazione di una specifica categoria ad ogni raggruppamento di celle:

> r.clump in=siti.ok2 ou=siti.clump2

Visualizzazione:

> d.rast siti.clump2

Calcolo della superficie di ciascuna delle 73 aree mediante il comando:

> r.stats -a i=siti.clump2

136
L'opzione -a comporta il calcolo delle aree in m2.

Selezione degli appezzamenti con estensione superiore a 50.000m2:

> r.reclass i=siti.clump2 o=carta.finale2


> 2 4 5 6 32 53 57 58 68 = 1 Aree con superficie => 50.000 mq.
> end

Visualizzazione:

> d.rast carta.finale2

Sovrapposizione dell’idrografia e della rete stradale:

> d.vect streams col=blue


> d.vect roads

137
Creazione di uno script di shell
Normalmente, come del resto si è avuta occasione di verificare in alcuni degli esercizi precedenti, l’analisi tramite GIS
richiede un cospicuo numero di operazioni e quindi l’immissione 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
l’assunzione di un diverso criterio di riclassificazione, può richiedere la ripetizione dell’intero procedimento. Altre
volte lo stesso tipo di analisi, e quindi la stessa sequenza di comandi, deve essere condotta su di un’area diversa. In
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 dell’operatore. A titolo di esempio viene qui costruito il programma di shell per l’esecuzione del precedente
esercizio di verifica 5 in cui ci si proponeva di individuare le aree idonee ad un uso ricreativo. Come si ricorderà, tali
aree devono avere le seguenti caratteristiche:
1) Essere ad una distanza dalle strade compresa fra i 100 e i 600m.
2) Essere ad una distanza dai corsi d’acqua non superiore ai 400m ed includere i corsi d’acqua.
3) Essere ad una distanza di almeno 1000m 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 della carta raster landuse.
4) Essere ubicate ad una quota compresa fra 1300 e 1600m.
5) Avere un’acclività non superiore ai 30°.
Una volta realizzata, la carta deve essere visualizzata sullo schermo insieme all’idrografia e alla rete stradale.

Il programma di shell è il seguente:

#!/bin/bash
#.....................................................................
# Programma di shell per l’individuazione 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 d’acqua
r.buffer input=streams output=st.buf dist=400
#.....Riclassifica l’uso 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 “ricreat2 = 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 ricreat2
d.vect streams
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 un’altra 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 # (ad esclusione della prima, appena descritta) sono semplicemente dei
commenti che vengono ignorati dalla shell.
Tutte le altre righe contengono comandi di GRASS già utilizzati nel corso degli esercizi precedenti.
Si scriva pertanto il file con un qualunque editor di testi (eventualmente omettendo i commenti) e lo si salvi con il nome
ricreat.sh (l’estensione sh non è vincolante, ma può risultare utile per distinguere con facilità i programmi di shell
da tutti gli altri file contenuti nella directory 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

138
In tal modo vengono elencati tutti i file con estensione .sh (ovviamente potrebbe apparire solo il file ricreat.sh
se è l’unico 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 dell’esecuzione, compare sul monitor la carta con l’ubicazione delle aree idonee, le strade e i fiumi, come
previsto dal programma.

L’esempio 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 del linguaggi per la gestione di testi (come awk, gawk, perl). Queste possibilità rendono i programmi di shell
estremamente flessibili e potenti permettendo l’esecuzione automatica di analisi estremamente complesse (esempi
possono essere trovati all’interno di GRASS nella directory scripts).

Esercizio di verifica 7
Si costruisca un programma di shell, da denominare ricreat1.sh, per l’individuazione 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 d’acqua non superiore ai 400 metri ed includere i corsi d’acqua.
3) Avere un’acclività 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 dell’elaborazione le aree idonee vengano visualizzate sovrapposte
all’altimetria dell’intera area.

139
Elenco dei comandi utilizzati
- db.columns
- db.connect
- db.copy
- db.describe
- db.drivers
- db.execute
- db.select
- db.tables
- d.barscale
- d.erase
- d.grid
- d.histogram
- d.legend
- gis.m &
- d.mon
- d.path
- d.rast
- d.rast.arrow
- d.vect
- exit
- g.copy
- g.list
- g.manual
- g.mapsets
- g.region
- g.rename
- g.remove
- nomecomando help
- ps.map
- r.buffer
- r.cats
- r.clump
- r.describe
- r.digit
- r.info
- r.mapcalc
- r.mapcalculator
- r.mask
- r.patch
- r.reclass.rules
- r.report
- r.stats
- r.to.vect
- r.what
- r3.cross.rast
- r3.info
- r3.mapcalculator
- v.buffer
- v.db.addcol
- v.db.update
- v.extract
- v.info
- v.in.ascii
- v.net.path
- v.overlay
- v.patch
- v.report
- v.to.db
- v.to.rast
- v.to.rast3
- v.what
- v.vol.rst

140
Soluzione degli esercizi di verifica
Soluzione esercizio di verifica 1
Nel GIS Manager si inseriscano nell’ordine:
il raster elevation.dem (selezionando nel pannello delle opzioni la visualizzazione del solo intervallo 1400-1600 metri)
il raster landuse
il vettoriale streams (selezionando nel pannello delle opzioni la visualizzazione delle sole categorie 1 e 2 e il colore
blu)
Il GIS Manager dovrebbe apparire come segue

Visualizzando nel Map Display si dovrebbe ottenere la seguente immagine

141
Si apra un secondo Map Display e nel relativo GIS Manager si inseriscano nell'ordine:
il raster geology (assegnando un valore di trasparenza di 0,4)
il raster landuse
il vettoriale roads (selezionando nel pannello il colore rosso e uno spessore di 2 pixel)
il vettoriale t_powerlines (selezionando nel pannello uno spessore di 3 pixel).
la scala grafica
Il GIS Manager dovrebbe apparire come segue

Visualizzando nel Map Display 2 si dovrebbe ottenere la seguente immagine

Si chiuda il Map Display2, quindi si esca dal GIS Manager e si rientri con il comando gis.m &.

142
Soluzione esercizio di verifica 2
File > Menage maps and volume > Copy maps

File > Map type conversion > Vector to raster

File > Menage maps and volume > Copy maps

File > Menage maps and volume > List maps

143
Inserimento delle quattro carte nel GIS Manager

Visualizzazione

144
File > Menage maps and volume > Rename maps

Apertura Map Display 2


Clic sul tasto del GIS Manager

Inserimento delle quattro carte nel GIS Manager

Visualizzazione nel Map Display 2

145
File > Menage maps and volume > Remove maps

146
Soluzione esercizio di verifica 3

Creazione del file geo.testo

raster geology
vlines streams
width 1
color aqua
end
vlines roads
width 2
color red
end
text 599100.0 4927300.0 Geologia dell’area Spearfish
color red
background yellow
border red
size 400
ref lower center
opaque y
end
scale 1:150000
end

Esecuzione del comando ps.map

File > Create ps.map file for postscript printing

Risultato (visualizzato con GostView)

147
Soluzione esercizio di verifica 4

Modifica della regione

Config > Region > Change region setting

Definizione dei margini

Definizione della risoluzione

Inserimento maschera

Raster > Create raster MASK

148
Unione delle carte landuse e geology

Raster > Overlay maps > Patch maps

Impostazione regione di default

Config > Region > Change region setting

Rimozione della maschera

Raster > Create raster MASK

149
Carta risultante landgeo

150
Soluzione esercizio di verifica 5

Buffer intorno alle strade

Raster > Create raster buffer

Buffer intorno ai corsi d’acqua

Riclassificazione dell’uso del suolo


Raster > Change category values and labels > Reclassify categories using rules

151
Buffer intorno all’uso del suolo riclassificato

Calcolo delle aree idonee

Raster > Map calculator

152
Visualizzazione

153
Soluzione esercizio di verifica 6

Copia di fields:
File > Menage maps and volume > Copy maps

Visualizzazione della table:


Databases > Query > Query data (SQL select)

Creazione delle nuova carta:


Vector > Query by attribute

154
Visualizzazione della table:
Databases > Query > Query data (SQL select)

Inserimento di una colonna nella table:


Databases > Manage database > Add columns to table

155
Inserimento delle aree:
Vector > Report and statistics > Load vector attributes

Visualizzazione della table:


Databases > Query > Query data (SQL select)

156
157
Soluzione esercizio di verifica 7

Programma di shell ricreat1.sh:


#!/bin/bash
#.....................................................................
# Programma di shell per l’individuazione 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 d’acqua
r.buffer input=streams output=st1.buf distance=400
#.....Riclassifica l’uso 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 l’altimetria
d.rast elevation.dem
#.....Sovrapponi le aree idone
d.rast –o ricreat1
#....Fine del programma

chmod a+x ricreat1.sh


./ricreat1.sh

FINE

158