SlideShare a Scribd company logo
1 of 51
PROVINCIA AUTONOMA DI TRENTO Servizo Bacini Montani Be Groovy with JGrass TRENTO,  20 Novembre   2008
EDITOR DI SCRIPTING DI JGRASS
EDITOR DI SCRIPTING DI JGRASS Per configurare l'ambiente di scripting è necessario personalizzare l'intestazione del file con il percorso al MAPSET di calcolo ed all'installazione dei comandi di GRASS. MAPSET e GISBASE sono le uniche variabili necessarie e devono essere decommentate da  //# MAPSET = ... //# GISBASE = ... a # MAPSET = ... # GISBASE = ...
EDITOR DI SCRIPTING DI JGRASS # MAPSET= ... # GISBASE = ...
EDITOR DI SCRIPTING DI JGRASS Il file di scripting di default di JGrass viene creato nella home dell'utente ed è chiamato  default.jgrass  e viene salvato automaticamente, è anche possibile personalizzare il nome del file. Nell'ambiente di scripting è possibile eseguire i comandi di JGrass e di GRASS ed utilizzare un linguaggio di programmazione completo come Groovy o Beanshell per automatizzare le procedure.
EDITOR DI SCRIPTING DI JGRASS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
EDITOR DI SCRIPTING DI JGRASS ,[object Object],[object Object],[object Object]
EDITOR DI SCRIPTING DI JGRASS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
EDITOR DI SCRIPTING DI JGRASS
EDITOR DI SCRIPTING DI JGRASS
EDITOR DI SCRIPTING DI JGRASS ,[object Object],[object Object],[object Object],[object Object]
IMPORT DEI DATI IN JGRASS ,[object Object],[object Object],[object Object]
IMPORT DEI DATI IN JGRASS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IMPORT DEI DATI IN JGRASS Definiamo una variabile che contenga il percorso alla cartella contenente i file compressi e quelli scompattati. Sia fa notare l'impostazione di MAPSET e GISBASE: # MAPSET = /home/moovida/TMP/testlocation/testmapset/ # GISBASE = /usr/lib/grass/ def cartellaFileZippati =  new File("/home/moovida/data/1x1zip")
IMPORT DEI DATI IN JGRASS Controlliamo il contenuto della cartella: cartellaFileZippati.eachFile{ file -> println file } Il risultato: /home/moovida/data/1x1zip/dtm000358_WGS.zip /home/moovida/data/1x1zip/dtm000359_WGS.zip /home/moovida/data/1x1zip/dtm000360_WGS.zip /home/moovida/data/1x1zip/dtm000358_WGS.ASC /home/moovida/data/1x1zip/dtm000359_WGS.ASC /home/moovida/data/1x1zip/dtm000360_WGS.ASC Total run time: 2765 ms
IMPORT DEI DATI IN JGRASS Modifichiamo il ciclo sui file per elencare solo i file che ci interessano: cartellaFileZippati.eachFile{ file -> if (  file.name.endsWith("ASC") ) println file } Il risultato: /home/moovida/data/1x1zip/dtm000358_WGS.ASC /home/moovida/data/1x1zip/dtm000359_WGS.ASC /home/moovida/data/1x1zip/dtm000360_WGS.ASC Total run time: 937 ms
IMPORT DEI DATI IN JGRASS Creiamo una lista dei file che ci interessano, in modo da poterla usare dopo: // creo una lista vuota def  listFile  = []; // la popolo con i percorsi dei file che voglio importare cartellaFileZippati.eachFile{ file -> if ( file.name.endsWith(&quot;ASC&quot;)) { listFile  << file.absolutePath } }
IMPORT DEI DATI IN JGRASS Ancora una volta controlliamo se la lista è stata correttamente popolata: listFile.each{ percorso -> println percorso } Il risultato: /home/moovida/data/1x1zip/dtm000358_WGS.ASC /home/moovida/data/1x1zip/dtm000359_WGS.ASC /home/moovida/data/1x1zip/dtm000360_WGS.ASC
IMPORT DEI DATI IN JGRASS Adesso proviamo a estrarre dal nome del file il nome che vogliamo dare alla mappa importata. Ad esempio possiamo rimuovere la parte finale:  _WGS.ASC   // creiamo una lista vuota per i nomi delle mappe importate def listFile = [] def  listNames  = [] cartellaFileZippati.eachFile{ file -> if ( file.name.endsWith(&quot;ASC&quot;)) { listFile << file.absolutePath listNames <<  file.name.replaceFirst(&quot;_WGS.ASC&quot;,&quot;&quot;) } }
IMPORT DEI DATI IN JGRASS Controlliamo se la lista è stata correttamente popolata: listNames.each{ nome -> println nome } Il risultato: dtm000358 dtm000359 dtm000360
IMPORT DEI DATI IN JGRASS Ora che abbiamo una lista con i percorsi delle mappe da importare e una lista dei nomi delle mappe importate, dobbiamo capire come fare un ciclo che processi entrambe le variabili. In groovy i cicli possono essere scritti usando la seguente sintassi: (0..5).each{ i -> println  i } secondo la quale vengono stampate in output 6 righe riportanti l'indice del ciclo, da 0 a 5: 0, 1, 2, 3, 4, 5
IMPORT DEI DATI IN JGRASS Siamo pronti a tentare di applicare la sintassi appena vista al nostro caso: // chiediamo alla lista il numero di valori contenuti def numeroMappe = listFile.size // eseguiamo un ciclo stampando in contemporanea sia percorsi che nomi mappe (0..numeroMappe-1).each { i-> println &quot;Importo &quot; + listFile[i] + &quot; e creo &quot; + listNames[i] }
IMPORT DEI DATI IN JGRASS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
IMPORT DEI DATI IN JGRASS Ora siamo pronti per importare i dati.  Utilizzeremo il comando  r.in.gdal  dei comandi nativi di GRASS. Diamo una controllata alla sintassi del comando: grass r.in.gdal --help Se al momento dell'esecuzione vi sono parti selezionate nell'editor, vengono eseguite solamente quelle. Quindi selezionando solo la riga appena inserita ed eseguendo, tutto il resto viene ignorato e ci viene stampata in output il messaggio di aiuto di  r.in.gdal .
IMPORT DEI DATI IN JGRASS Usage: r.in.gdal  [ -o efk]  input=string output=name  [band=value] [target=string] [title=&quot;phrase&quot;] [location=string] [ --overwrite ] Flags: -o  Override projection (use location's projection) -e  Extend location extents based on new dataset -f  List supported formats then exit -k  Keep band numbers instead of using band color names --o  Force overwrite of output files Parameters: input  Raster file to be imported output  Name for output raster map band  Band to select (default is all bands) target  Name of location to read projection from for GCPs transformation title  Title for resultant raster map location  Name for new location to create
LO SCRIPT COMPLETO # MAPSET = /home/moovida/TMP/testlocation/testmapset/ # GISBASE = /usr/lib/grass/ def cartellaFileZippati = new File(&quot;/home/moovida/data/1x1zip&quot;); def listFile = [] def listNames = [] cartellaFileZippati.eachFile{ file -> if ( file.name.endsWith(&quot;ASC&quot;)) { listFile << file.absolutePath listNames << file.name.replaceFirst(&quot;_WGS.ASC&quot;,&quot;&quot;) } } def numeroMappe = listFile.size (0..numeroMappe-1).each { i-> def percorso = listFile[i] def nome = listNames[i] grass r.in.gdal --o input=$percorso output=$nome }
IMPORT DEI DATI IN JGRASS ,[object Object],[object Object],[object Object],[object Object],[object Object]
IMPORT DEI DATI IN JGRASS ,[object Object],[object Object],[object Object],[object Object],[object Object]
IMPORT DEI DATI IN JGRASS ,[object Object],[object Object],[object Object]
IMPORT DEI DATI IN JGRASS Anche in questo caso si può ripetere l'operazione più volte unendo a blocchi i fogli di DTM oppure automatizzare il ciclo su tutti i dati alla stessa risoluzione.
IMPORT DEI DATI IN JGRASS Approcio 1:  r.patch di tutte le mappe in un colpo // commento la parte che eseguiva r.in.gdal /*(0..numeroMappe-1).each { i-> def percorso = listFile[i] def nome = listNames[i] grass r.in.gdal --o input=$percorso output=$nome }*/ uso join per trasformare la lista delle mappe in una stringa def mappe = listNames.join(&quot;,&quot;) setto la regione attiva a una regione contenente tutte le mappe grass g.region rast=$mappe grass r.patch --o input=$mappe output=unione
IMPORT DEI DATI IN JGRASS Il risultato è quell o desiderato, tranne per  la mappa dei colori, che presenta qualche buco:
IMPORT DEI DATI IN JGRASS I buchi nelle tabelle dei colori si colmano facilmente con il comando r.colors: grass r.colors map=unione color=rainbow e si ottiene la mappa finale desiderata.
IMPORT DEI DATI IN JGRASS Approcio 2:  visto che r.patch accetta di processare un numero di mappe limitato, è spesso necessario fare un ciclo sulle mappe e patcharle una alla volta. Questo viene lasciato come spunto per un esercizio!
ANALISI DEI DATI IN JGRASS La risoluzione di 1m è troppo elevata per gestire questi dati su un pc normale e non dà nessun vantaggio ai fini idro-geomorfologici. Quello che conviene fare su bacini estesi è di utilizzare la risoluzione di 5m. La cosa migliore sarebbe utilizzare algoritmi di interpolazione quali ad esempio r.resamp.stats. Per ora settiamo semplicemente la regione attiva a risoluzione di 5 metri. grass g.region res=5
ANALISI DEI DATI IN JGRASS È ora possibile effettuare tutte le analisi geomorfologiche ed idrologiche nell'ambiente di scripting di JGrass ricordando la sintassi dei comandi. jgrass h.pitfiller --help Usage:h.pitfiller --igrass-elevation elevation --ograss-pit pit  Parameters: --igrass-elevation the map containing the elevations --ograss-pit the map of the correct elevations
ANALISI DEI DATI IN JGRASS E di conseguenza: jgrass h.pitfiller --igrass-elevation unione --ograss-pit pit Allo stesso modo si procede nel calcolo di: h.flow h.draindir h.extractnetwork h.wateroutlet
SCRIPTING Attraverso il linguaggio di scripting si possono semplificare, oltre ad automatizzare, alcune operazioni. Vengono proposti di seguito alcuni esempi.
SCRIPTING Lettura di una mappa raster e fare delle operazioni sui dati contenuti in essa.
SCRIPTING Lettura di una mappa raster e fare delle operazioni sui dati contenuti in essa.
SCRIPTING Generazione del profilo di una mappa date le coordinate di inizio e fine dello stesso.
SCRIPTING Generare il profilo di una mappa date le coordinate di inizio e fine dello stesso.
SCRIPTING Generare il profilo di una mappa date le coordinate di inizio e fine dello stesso.
SCRIPTING Generare il profilo di una mappa date le coordinate di inizio e fine dello stesso.
SCRIPTING Generare il profilo di una mappa date le coordinate di inizio e fine dello stesso.
SCRIPTING Lettura dei dati di uno shapefile e operazioni sui dati letti.
SCRIPTING Leggere i dati di uno shapefile e fare operazioni sui dati letti.
SCRIPTING Leggere i dati di uno shapefile e fare operazioni sui dati letti.
SCRIPTING Creazione di uno shapefile delle curve di livello partendo da un DTM.
SCRIPTING Creare uno shapefile delle curve di livello partendo da un DTM.
GRAZIE DELL'ATTENZIONE...

More Related Content

Viewers also liked

04 Geographic scripting in uDig - halfway between user and developer
04 Geographic scripting in uDig - halfway between user and developer04 Geographic scripting in uDig - halfway between user and developer
04 Geographic scripting in uDig - halfway between user and developerAndrea Antonello
 
Opensource gis development - part 4
Opensource gis development - part 4Opensource gis development - part 4
Opensource gis development - part 4Andrea Antonello
 
Geopaparazzi, state of the art
Geopaparazzi, state of the artGeopaparazzi, state of the art
Geopaparazzi, state of the artAndrea Antonello
 
LESTO - a GIS toolbox for LiDAR empowered sciences
LESTO - a GIS toolbox for LiDAR empowered sciencesLESTO - a GIS toolbox for LiDAR empowered sciences
LESTO - a GIS toolbox for LiDAR empowered sciencesAndrea Antonello
 
JGrass Workshop: Horton Machine (FOSS4G2008)
JGrass Workshop: Horton Machine (FOSS4G2008)JGrass Workshop: Horton Machine (FOSS4G2008)
JGrass Workshop: Horton Machine (FOSS4G2008)Andrea Antonello
 
Rilevare in campagna con il cellulare: Solo un gioco o il nostro futuro?
Rilevare in campagna con il cellulare: Solo un gioco o il nostro futuro?Rilevare in campagna con il cellulare: Solo un gioco o il nostro futuro?
Rilevare in campagna con il cellulare: Solo un gioco o il nostro futuro?Andrea Antonello
 
Geopaparazzi, history of a digital mapping kid
Geopaparazzi, history of a digital mapping kidGeopaparazzi, history of a digital mapping kid
Geopaparazzi, history of a digital mapping kidAndrea Antonello
 
New tools for LiDAR, forestry, river management and hydro-geomorphology in gvSIG
New tools for LiDAR, forestry, river management and hydro-geomorphology in gvSIGNew tools for LiDAR, forestry, river management and hydro-geomorphology in gvSIG
New tools for LiDAR, forestry, river management and hydro-geomorphology in gvSIGAndrea Antonello
 
Geographic scripting in uDig
Geographic scripting in uDigGeographic scripting in uDig
Geographic scripting in uDigAndrea Antonello
 
PART 6: FROM GEO INTO YOUR REPORT
PART 6: FROM GEO INTO YOUR REPORTPART 6: FROM GEO INTO YOUR REPORT
PART 6: FROM GEO INTO YOUR REPORTAndrea Antonello
 
Foss4g2016 Geopaparazzi Workshop
Foss4g2016 Geopaparazzi WorkshopFoss4g2016 Geopaparazzi Workshop
Foss4g2016 Geopaparazzi WorkshopAndrea Antonello
 
Linking environmental models together to make the world a better place: the G...
Linking environmental models together to make the world a better place: the G...Linking environmental models together to make the world a better place: the G...
Linking environmental models together to make the world a better place: the G...Andrea Antonello
 

Viewers also liked (14)

04 Geographic scripting in uDig - halfway between user and developer
04 Geographic scripting in uDig - halfway between user and developer04 Geographic scripting in uDig - halfway between user and developer
04 Geographic scripting in uDig - halfway between user and developer
 
Opensource gis development - part 4
Opensource gis development - part 4Opensource gis development - part 4
Opensource gis development - part 4
 
Geopaparazzi, state of the art
Geopaparazzi, state of the artGeopaparazzi, state of the art
Geopaparazzi, state of the art
 
LESTO - a GIS toolbox for LiDAR empowered sciences
LESTO - a GIS toolbox for LiDAR empowered sciencesLESTO - a GIS toolbox for LiDAR empowered sciences
LESTO - a GIS toolbox for LiDAR empowered sciences
 
JGrass Workshop: Horton Machine (FOSS4G2008)
JGrass Workshop: Horton Machine (FOSS4G2008)JGrass Workshop: Horton Machine (FOSS4G2008)
JGrass Workshop: Horton Machine (FOSS4G2008)
 
JGrass Present Future
JGrass Present FutureJGrass Present Future
JGrass Present Future
 
Rilevare in campagna con il cellulare: Solo un gioco o il nostro futuro?
Rilevare in campagna con il cellulare: Solo un gioco o il nostro futuro?Rilevare in campagna con il cellulare: Solo un gioco o il nostro futuro?
Rilevare in campagna con il cellulare: Solo un gioco o il nostro futuro?
 
Geopaparazzi, history of a digital mapping kid
Geopaparazzi, history of a digital mapping kidGeopaparazzi, history of a digital mapping kid
Geopaparazzi, history of a digital mapping kid
 
New tools for LiDAR, forestry, river management and hydro-geomorphology in gvSIG
New tools for LiDAR, forestry, river management and hydro-geomorphology in gvSIGNew tools for LiDAR, forestry, river management and hydro-geomorphology in gvSIG
New tools for LiDAR, forestry, river management and hydro-geomorphology in gvSIG
 
Geographic scripting in uDig
Geographic scripting in uDigGeographic scripting in uDig
Geographic scripting in uDig
 
PART 6: FROM GEO INTO YOUR REPORT
PART 6: FROM GEO INTO YOUR REPORTPART 6: FROM GEO INTO YOUR REPORT
PART 6: FROM GEO INTO YOUR REPORT
 
Foss4g2016 Geopaparazzi Workshop
Foss4g2016 Geopaparazzi WorkshopFoss4g2016 Geopaparazzi Workshop
Foss4g2016 Geopaparazzi Workshop
 
JGrasstools
JGrasstoolsJGrasstools
JGrasstools
 
Linking environmental models together to make the world a better place: the G...
Linking environmental models together to make the world a better place: the G...Linking environmental models together to make the world a better place: the G...
Linking environmental models together to make the world a better place: the G...
 

Similar to Be groovy with JGrass

Osmit2010 introduzione editing_modificata
Osmit2010 introduzione editing_modificataOsmit2010 introduzione editing_modificata
Osmit2010 introduzione editing_modificataAle ZenaIT
 
Lez. 1 - Corso di Modelli e GIS per l'ambiente
Lez. 1 - Corso di Modelli e GIS per l'ambiente Lez. 1 - Corso di Modelli e GIS per l'ambiente
Lez. 1 - Corso di Modelli e GIS per l'ambiente Margherita Di Leo
 
JGrass intro Italiano
JGrass intro ItalianoJGrass intro Italiano
JGrass intro Italianosilli
 
9 Altre Istruzioni Di I O
9   Altre Istruzioni Di I O9   Altre Istruzioni Di I O
9 Altre Istruzioni Di I Oguest60e9511
 
Django: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàDjango: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàskam
 
GWT vs CSS3
GWT vs CSS3GWT vs CSS3
GWT vs CSS3GWTcon
 
Introduzione ad ECMAScript 6 (ES6) e TypeScript
Introduzione ad ECMAScript 6 (ES6) e TypeScriptIntroduzione ad ECMAScript 6 (ES6) e TypeScript
Introduzione ad ECMAScript 6 (ES6) e TypeScriptGiovanni Buffa
 
Il linguaggio R usato come GIS per elaborare i dati OpenStreetMap
Il linguaggio R usato come GIS per elaborare i dati OpenStreetMapIl linguaggio R usato come GIS per elaborare i dati OpenStreetMap
Il linguaggio R usato come GIS per elaborare i dati OpenStreetMapMarco Brancolini
 
Lez. 2 - Corso di modelli e GIS per l'ambiente
Lez. 2 - Corso di modelli e GIS per l'ambiente Lez. 2 - Corso di modelli e GIS per l'ambiente
Lez. 2 - Corso di modelli e GIS per l'ambiente Margherita Di Leo
 
Acadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewAcadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewFrancesco Sciuti
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoBabel
 
Post gresql su_raspberry
Post gresql su_raspberryPost gresql su_raspberry
Post gresql su_raspberryMarco Buttolo
 

Similar to Be groovy with JGrass (20)

Osmit2010 introduzione editing_modificata
Osmit2010 introduzione editing_modificataOsmit2010 introduzione editing_modificata
Osmit2010 introduzione editing_modificata
 
08 mapreduce
08   mapreduce08   mapreduce
08 mapreduce
 
Java lezione 10
Java lezione 10Java lezione 10
Java lezione 10
 
Lez. 1 - Corso di Modelli e GIS per l'ambiente
Lez. 1 - Corso di Modelli e GIS per l'ambiente Lez. 1 - Corso di Modelli e GIS per l'ambiente
Lez. 1 - Corso di Modelli e GIS per l'ambiente
 
Openmoko
OpenmokoOpenmoko
Openmoko
 
Gcc & Make
Gcc & MakeGcc & Make
Gcc & Make
 
JGrass intro Italiano
JGrass intro ItalianoJGrass intro Italiano
JGrass intro Italiano
 
9 Altre Istruzioni Di I O
9   Altre Istruzioni Di I O9   Altre Istruzioni Di I O
9 Altre Istruzioni Di I O
 
Django: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalitàDjango: utilizzo avanzato e nuove funzionalità
Django: utilizzo avanzato e nuove funzionalità
 
Hadoop analyzerJR
Hadoop analyzerJRHadoop analyzerJR
Hadoop analyzerJR
 
GWT vs CSS3
GWT vs CSS3GWT vs CSS3
GWT vs CSS3
 
Hadoop in action!
Hadoop in action!Hadoop in action!
Hadoop in action!
 
Introduzione ad ECMAScript 6 (ES6) e TypeScript
Introduzione ad ECMAScript 6 (ES6) e TypeScriptIntroduzione ad ECMAScript 6 (ES6) e TypeScript
Introduzione ad ECMAScript 6 (ES6) e TypeScript
 
Il linguaggio R usato come GIS per elaborare i dati OpenStreetMap
Il linguaggio R usato come GIS per elaborare i dati OpenStreetMapIl linguaggio R usato come GIS per elaborare i dati OpenStreetMap
Il linguaggio R usato come GIS per elaborare i dati OpenStreetMap
 
Lez. 2 - Corso di modelli e GIS per l'ambiente
Lez. 2 - Corso di modelli e GIS per l'ambiente Lez. 2 - Corso di modelli e GIS per l'ambiente
Lez. 2 - Corso di modelli e GIS per l'ambiente
 
7 Sottoprogrammi
7   Sottoprogrammi7   Sottoprogrammi
7 Sottoprogrammi
 
Umap
Umap Umap
Umap
 
Acadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewAcadevmy - TypeScript Overview
Acadevmy - TypeScript Overview
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
 
Post gresql su_raspberry
Post gresql su_raspberryPost gresql su_raspberry
Post gresql su_raspberry
 

More from Andrea Antonello

Smash & Geopaparazzi - State of the art 2021
Smash & Geopaparazzi - State of the art 2021Smash & Geopaparazzi - State of the art 2021
Smash & Geopaparazzi - State of the art 2021Andrea Antonello
 
GEOPAPARAZZI: STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
GEOPAPARAZZI: STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATIONGEOPAPARAZZI: STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
GEOPAPARAZZI: STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATIONAndrea Antonello
 
GEOPAPARAZZI STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
GEOPAPARAZZI STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATIONGEOPAPARAZZI STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
GEOPAPARAZZI STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATIONAndrea Antonello
 
Geopaparazzi Survey Server workshop
Geopaparazzi Survey Server workshopGeopaparazzi Survey Server workshop
Geopaparazzi Survey Server workshopAndrea Antonello
 
Geopaparazzi Survey Server Installation
Geopaparazzi Survey Server InstallationGeopaparazzi Survey Server Installation
Geopaparazzi Survey Server InstallationAndrea Antonello
 
Modelling natural hazards in gvSIG with the HortonMachine plugins
Modelling natural hazards in gvSIG with the HortonMachine pluginsModelling natural hazards in gvSIG with the HortonMachine plugins
Modelling natural hazards in gvSIG with the HortonMachine pluginsAndrea Antonello
 
GEOPAPARAZZI: STATE OF THE ART
GEOPAPARAZZI: STATE OF THE ARTGEOPAPARAZZI: STATE OF THE ART
GEOPAPARAZZI: STATE OF THE ARTAndrea Antonello
 
Geopaparazzi - NEVER OUT OF DATA IN THE FIELD
Geopaparazzi - NEVER OUT OF DATA IN THE FIELDGeopaparazzi - NEVER OUT OF DATA IN THE FIELD
Geopaparazzi - NEVER OUT OF DATA IN THE FIELDAndrea Antonello
 
The HortonMachine, for data analysis to help scientists... and not only
The HortonMachine, for data analysis to help scientists... and not onlyThe HortonMachine, for data analysis to help scientists... and not only
The HortonMachine, for data analysis to help scientists... and not onlyAndrea Antonello
 
Geopaparazzi & gvSIG Mobile - state of the art
Geopaparazzi & gvSIG Mobile - state of the artGeopaparazzi & gvSIG Mobile - state of the art
Geopaparazzi & gvSIG Mobile - state of the artAndrea Antonello
 
PART 4: GEOGRAPHIC SCRIPTING
PART 4: GEOGRAPHIC SCRIPTINGPART 4: GEOGRAPHIC SCRIPTING
PART 4: GEOGRAPHIC SCRIPTINGAndrea Antonello
 
PART 3: THE SCRIPTING COMPOSER AND PYTHON
PART 3: THE SCRIPTING COMPOSER AND PYTHONPART 3: THE SCRIPTING COMPOSER AND PYTHON
PART 3: THE SCRIPTING COMPOSER AND PYTHONAndrea Antonello
 
03 Geographic scripting in uDig - halfway between user and developer
03 Geographic scripting in uDig - halfway between user and developer03 Geographic scripting in uDig - halfway between user and developer
03 Geographic scripting in uDig - halfway between user and developerAndrea Antonello
 
02 Geographic scripting in uDig - halfway between user and developer
02 Geographic scripting in uDig - halfway between user and developer02 Geographic scripting in uDig - halfway between user and developer
02 Geographic scripting in uDig - halfway between user and developerAndrea Antonello
 
05 Geographic scripting in uDig - halfway between user and developer
05 Geographic scripting in uDig - halfway between user and developer05 Geographic scripting in uDig - halfway between user and developer
05 Geographic scripting in uDig - halfway between user and developerAndrea Antonello
 
Trackoid Rescue - eine mobile Lösung zur Unterstützung von Rettungsmannschaften
Trackoid Rescue - eine mobile Lösung zur Unterstützung von RettungsmannschaftenTrackoid Rescue - eine mobile Lösung zur Unterstützung von Rettungsmannschaften
Trackoid Rescue - eine mobile Lösung zur Unterstützung von RettungsmannschaftenAndrea Antonello
 
Opensource gis development - part 3
Opensource gis development - part 3Opensource gis development - part 3
Opensource gis development - part 3Andrea Antonello
 
Opensource gis development - part 2
Opensource gis development - part 2Opensource gis development - part 2
Opensource gis development - part 2Andrea Antonello
 
Opensource gis development - part 1
Opensource gis development - part 1Opensource gis development - part 1
Opensource gis development - part 1Andrea Antonello
 

More from Andrea Antonello (20)

Smash & Geopaparazzi - State of the art 2021
Smash & Geopaparazzi - State of the art 2021Smash & Geopaparazzi - State of the art 2021
Smash & Geopaparazzi - State of the art 2021
 
GEOPAPARAZZI: STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
GEOPAPARAZZI: STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATIONGEOPAPARAZZI: STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
GEOPAPARAZZI: STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
 
GEOPAPARAZZI STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
GEOPAPARAZZI STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATIONGEOPAPARAZZI STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
GEOPAPARAZZI STATE OF THE ART OF THE DIGITAL FIELD MAPPING APPLICATION
 
Geopaparazzi Survey Server workshop
Geopaparazzi Survey Server workshopGeopaparazzi Survey Server workshop
Geopaparazzi Survey Server workshop
 
Geopaparazzi Survey Server Installation
Geopaparazzi Survey Server InstallationGeopaparazzi Survey Server Installation
Geopaparazzi Survey Server Installation
 
Modelling natural hazards in gvSIG with the HortonMachine plugins
Modelling natural hazards in gvSIG with the HortonMachine pluginsModelling natural hazards in gvSIG with the HortonMachine plugins
Modelling natural hazards in gvSIG with the HortonMachine plugins
 
GEOPAPARAZZI: STATE OF THE ART
GEOPAPARAZZI: STATE OF THE ARTGEOPAPARAZZI: STATE OF THE ART
GEOPAPARAZZI: STATE OF THE ART
 
Geopaparazzi - NEVER OUT OF DATA IN THE FIELD
Geopaparazzi - NEVER OUT OF DATA IN THE FIELDGeopaparazzi - NEVER OUT OF DATA IN THE FIELD
Geopaparazzi - NEVER OUT OF DATA IN THE FIELD
 
The HortonMachine, for data analysis to help scientists... and not only
The HortonMachine, for data analysis to help scientists... and not onlyThe HortonMachine, for data analysis to help scientists... and not only
The HortonMachine, for data analysis to help scientists... and not only
 
Geopaparazzi & gvSIG Mobile - state of the art
Geopaparazzi & gvSIG Mobile - state of the artGeopaparazzi & gvSIG Mobile - state of the art
Geopaparazzi & gvSIG Mobile - state of the art
 
PART 5: RASTER DATA
PART 5: RASTER DATAPART 5: RASTER DATA
PART 5: RASTER DATA
 
PART 4: GEOGRAPHIC SCRIPTING
PART 4: GEOGRAPHIC SCRIPTINGPART 4: GEOGRAPHIC SCRIPTING
PART 4: GEOGRAPHIC SCRIPTING
 
PART 3: THE SCRIPTING COMPOSER AND PYTHON
PART 3: THE SCRIPTING COMPOSER AND PYTHONPART 3: THE SCRIPTING COMPOSER AND PYTHON
PART 3: THE SCRIPTING COMPOSER AND PYTHON
 
03 Geographic scripting in uDig - halfway between user and developer
03 Geographic scripting in uDig - halfway between user and developer03 Geographic scripting in uDig - halfway between user and developer
03 Geographic scripting in uDig - halfway between user and developer
 
02 Geographic scripting in uDig - halfway between user and developer
02 Geographic scripting in uDig - halfway between user and developer02 Geographic scripting in uDig - halfway between user and developer
02 Geographic scripting in uDig - halfway between user and developer
 
05 Geographic scripting in uDig - halfway between user and developer
05 Geographic scripting in uDig - halfway between user and developer05 Geographic scripting in uDig - halfway between user and developer
05 Geographic scripting in uDig - halfway between user and developer
 
Trackoid Rescue - eine mobile Lösung zur Unterstützung von Rettungsmannschaften
Trackoid Rescue - eine mobile Lösung zur Unterstützung von RettungsmannschaftenTrackoid Rescue - eine mobile Lösung zur Unterstützung von Rettungsmannschaften
Trackoid Rescue - eine mobile Lösung zur Unterstützung von Rettungsmannschaften
 
Opensource gis development - part 3
Opensource gis development - part 3Opensource gis development - part 3
Opensource gis development - part 3
 
Opensource gis development - part 2
Opensource gis development - part 2Opensource gis development - part 2
Opensource gis development - part 2
 
Opensource gis development - part 1
Opensource gis development - part 1Opensource gis development - part 1
Opensource gis development - part 1
 

Recently uploaded

Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 

Recently uploaded (9)

Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 

Be groovy with JGrass

  • 1. PROVINCIA AUTONOMA DI TRENTO Servizo Bacini Montani Be Groovy with JGrass TRENTO, 20 Novembre 2008
  • 3. EDITOR DI SCRIPTING DI JGRASS Per configurare l'ambiente di scripting è necessario personalizzare l'intestazione del file con il percorso al MAPSET di calcolo ed all'installazione dei comandi di GRASS. MAPSET e GISBASE sono le uniche variabili necessarie e devono essere decommentate da //# MAPSET = ... //# GISBASE = ... a # MAPSET = ... # GISBASE = ...
  • 4. EDITOR DI SCRIPTING DI JGRASS # MAPSET= ... # GISBASE = ...
  • 5. EDITOR DI SCRIPTING DI JGRASS Il file di scripting di default di JGrass viene creato nella home dell'utente ed è chiamato default.jgrass e viene salvato automaticamente, è anche possibile personalizzare il nome del file. Nell'ambiente di scripting è possibile eseguire i comandi di JGrass e di GRASS ed utilizzare un linguaggio di programmazione completo come Groovy o Beanshell per automatizzare le procedure.
  • 6.
  • 7.
  • 8.
  • 10. EDITOR DI SCRIPTING DI JGRASS
  • 11.
  • 12.
  • 13.
  • 14. IMPORT DEI DATI IN JGRASS Definiamo una variabile che contenga il percorso alla cartella contenente i file compressi e quelli scompattati. Sia fa notare l'impostazione di MAPSET e GISBASE: # MAPSET = /home/moovida/TMP/testlocation/testmapset/ # GISBASE = /usr/lib/grass/ def cartellaFileZippati = new File(&quot;/home/moovida/data/1x1zip&quot;)
  • 15. IMPORT DEI DATI IN JGRASS Controlliamo il contenuto della cartella: cartellaFileZippati.eachFile{ file -> println file } Il risultato: /home/moovida/data/1x1zip/dtm000358_WGS.zip /home/moovida/data/1x1zip/dtm000359_WGS.zip /home/moovida/data/1x1zip/dtm000360_WGS.zip /home/moovida/data/1x1zip/dtm000358_WGS.ASC /home/moovida/data/1x1zip/dtm000359_WGS.ASC /home/moovida/data/1x1zip/dtm000360_WGS.ASC Total run time: 2765 ms
  • 16. IMPORT DEI DATI IN JGRASS Modifichiamo il ciclo sui file per elencare solo i file che ci interessano: cartellaFileZippati.eachFile{ file -> if ( file.name.endsWith(&quot;ASC&quot;) ) println file } Il risultato: /home/moovida/data/1x1zip/dtm000358_WGS.ASC /home/moovida/data/1x1zip/dtm000359_WGS.ASC /home/moovida/data/1x1zip/dtm000360_WGS.ASC Total run time: 937 ms
  • 17. IMPORT DEI DATI IN JGRASS Creiamo una lista dei file che ci interessano, in modo da poterla usare dopo: // creo una lista vuota def listFile = []; // la popolo con i percorsi dei file che voglio importare cartellaFileZippati.eachFile{ file -> if ( file.name.endsWith(&quot;ASC&quot;)) { listFile << file.absolutePath } }
  • 18. IMPORT DEI DATI IN JGRASS Ancora una volta controlliamo se la lista è stata correttamente popolata: listFile.each{ percorso -> println percorso } Il risultato: /home/moovida/data/1x1zip/dtm000358_WGS.ASC /home/moovida/data/1x1zip/dtm000359_WGS.ASC /home/moovida/data/1x1zip/dtm000360_WGS.ASC
  • 19. IMPORT DEI DATI IN JGRASS Adesso proviamo a estrarre dal nome del file il nome che vogliamo dare alla mappa importata. Ad esempio possiamo rimuovere la parte finale: _WGS.ASC // creiamo una lista vuota per i nomi delle mappe importate def listFile = [] def listNames = [] cartellaFileZippati.eachFile{ file -> if ( file.name.endsWith(&quot;ASC&quot;)) { listFile << file.absolutePath listNames << file.name.replaceFirst(&quot;_WGS.ASC&quot;,&quot;&quot;) } }
  • 20. IMPORT DEI DATI IN JGRASS Controlliamo se la lista è stata correttamente popolata: listNames.each{ nome -> println nome } Il risultato: dtm000358 dtm000359 dtm000360
  • 21. IMPORT DEI DATI IN JGRASS Ora che abbiamo una lista con i percorsi delle mappe da importare e una lista dei nomi delle mappe importate, dobbiamo capire come fare un ciclo che processi entrambe le variabili. In groovy i cicli possono essere scritti usando la seguente sintassi: (0..5).each{ i -> println i } secondo la quale vengono stampate in output 6 righe riportanti l'indice del ciclo, da 0 a 5: 0, 1, 2, 3, 4, 5
  • 22. IMPORT DEI DATI IN JGRASS Siamo pronti a tentare di applicare la sintassi appena vista al nostro caso: // chiediamo alla lista il numero di valori contenuti def numeroMappe = listFile.size // eseguiamo un ciclo stampando in contemporanea sia percorsi che nomi mappe (0..numeroMappe-1).each { i-> println &quot;Importo &quot; + listFile[i] + &quot; e creo &quot; + listNames[i] }
  • 23.
  • 24. IMPORT DEI DATI IN JGRASS Ora siamo pronti per importare i dati. Utilizzeremo il comando r.in.gdal dei comandi nativi di GRASS. Diamo una controllata alla sintassi del comando: grass r.in.gdal --help Se al momento dell'esecuzione vi sono parti selezionate nell'editor, vengono eseguite solamente quelle. Quindi selezionando solo la riga appena inserita ed eseguendo, tutto il resto viene ignorato e ci viene stampata in output il messaggio di aiuto di r.in.gdal .
  • 25. IMPORT DEI DATI IN JGRASS Usage: r.in.gdal [ -o efk] input=string output=name [band=value] [target=string] [title=&quot;phrase&quot;] [location=string] [ --overwrite ] Flags: -o Override projection (use location's projection) -e Extend location extents based on new dataset -f List supported formats then exit -k Keep band numbers instead of using band color names --o Force overwrite of output files Parameters: input Raster file to be imported output Name for output raster map band Band to select (default is all bands) target Name of location to read projection from for GCPs transformation title Title for resultant raster map location Name for new location to create
  • 26. LO SCRIPT COMPLETO # MAPSET = /home/moovida/TMP/testlocation/testmapset/ # GISBASE = /usr/lib/grass/ def cartellaFileZippati = new File(&quot;/home/moovida/data/1x1zip&quot;); def listFile = [] def listNames = [] cartellaFileZippati.eachFile{ file -> if ( file.name.endsWith(&quot;ASC&quot;)) { listFile << file.absolutePath listNames << file.name.replaceFirst(&quot;_WGS.ASC&quot;,&quot;&quot;) } } def numeroMappe = listFile.size (0..numeroMappe-1).each { i-> def percorso = listFile[i] def nome = listNames[i] grass r.in.gdal --o input=$percorso output=$nome }
  • 27.
  • 28.
  • 29.
  • 30. IMPORT DEI DATI IN JGRASS Anche in questo caso si può ripetere l'operazione più volte unendo a blocchi i fogli di DTM oppure automatizzare il ciclo su tutti i dati alla stessa risoluzione.
  • 31. IMPORT DEI DATI IN JGRASS Approcio 1: r.patch di tutte le mappe in un colpo // commento la parte che eseguiva r.in.gdal /*(0..numeroMappe-1).each { i-> def percorso = listFile[i] def nome = listNames[i] grass r.in.gdal --o input=$percorso output=$nome }*/ uso join per trasformare la lista delle mappe in una stringa def mappe = listNames.join(&quot;,&quot;) setto la regione attiva a una regione contenente tutte le mappe grass g.region rast=$mappe grass r.patch --o input=$mappe output=unione
  • 32. IMPORT DEI DATI IN JGRASS Il risultato è quell o desiderato, tranne per la mappa dei colori, che presenta qualche buco:
  • 33. IMPORT DEI DATI IN JGRASS I buchi nelle tabelle dei colori si colmano facilmente con il comando r.colors: grass r.colors map=unione color=rainbow e si ottiene la mappa finale desiderata.
  • 34. IMPORT DEI DATI IN JGRASS Approcio 2: visto che r.patch accetta di processare un numero di mappe limitato, è spesso necessario fare un ciclo sulle mappe e patcharle una alla volta. Questo viene lasciato come spunto per un esercizio!
  • 35. ANALISI DEI DATI IN JGRASS La risoluzione di 1m è troppo elevata per gestire questi dati su un pc normale e non dà nessun vantaggio ai fini idro-geomorfologici. Quello che conviene fare su bacini estesi è di utilizzare la risoluzione di 5m. La cosa migliore sarebbe utilizzare algoritmi di interpolazione quali ad esempio r.resamp.stats. Per ora settiamo semplicemente la regione attiva a risoluzione di 5 metri. grass g.region res=5
  • 36. ANALISI DEI DATI IN JGRASS È ora possibile effettuare tutte le analisi geomorfologiche ed idrologiche nell'ambiente di scripting di JGrass ricordando la sintassi dei comandi. jgrass h.pitfiller --help Usage:h.pitfiller --igrass-elevation elevation --ograss-pit pit Parameters: --igrass-elevation the map containing the elevations --ograss-pit the map of the correct elevations
  • 37. ANALISI DEI DATI IN JGRASS E di conseguenza: jgrass h.pitfiller --igrass-elevation unione --ograss-pit pit Allo stesso modo si procede nel calcolo di: h.flow h.draindir h.extractnetwork h.wateroutlet
  • 38. SCRIPTING Attraverso il linguaggio di scripting si possono semplificare, oltre ad automatizzare, alcune operazioni. Vengono proposti di seguito alcuni esempi.
  • 39. SCRIPTING Lettura di una mappa raster e fare delle operazioni sui dati contenuti in essa.
  • 40. SCRIPTING Lettura di una mappa raster e fare delle operazioni sui dati contenuti in essa.
  • 41. SCRIPTING Generazione del profilo di una mappa date le coordinate di inizio e fine dello stesso.
  • 42. SCRIPTING Generare il profilo di una mappa date le coordinate di inizio e fine dello stesso.
  • 43. SCRIPTING Generare il profilo di una mappa date le coordinate di inizio e fine dello stesso.
  • 44. SCRIPTING Generare il profilo di una mappa date le coordinate di inizio e fine dello stesso.
  • 45. SCRIPTING Generare il profilo di una mappa date le coordinate di inizio e fine dello stesso.
  • 46. SCRIPTING Lettura dei dati di uno shapefile e operazioni sui dati letti.
  • 47. SCRIPTING Leggere i dati di uno shapefile e fare operazioni sui dati letti.
  • 48. SCRIPTING Leggere i dati di uno shapefile e fare operazioni sui dati letti.
  • 49. SCRIPTING Creazione di uno shapefile delle curve di livello partendo da un DTM.
  • 50. SCRIPTING Creare uno shapefile delle curve di livello partendo da un DTM.