19 gennaio, 2009 | di

Il lavoro di ogni giorno è spesso routinario; spesso anche per chi si occupa di sistemi informativi geografici. Non parlo dell’analisi spaziale, ma di quelle cose che facciamo quasi ogni giorno: leggere le metainfomazioni di un file (e scoprire che sono povere), convertire il formato di un file, estrarre una porzione di una raster, etc.

Si tratta di operazioni in genere molto semplici, che siamo in grado di portare a termine con molti strumenti. Questo blog parla de “le cose che ci piacciono TANTO”; una di queste sono quelle utility che alleggeriscono il lavoro di ogni giorno, con un click del mouse ed un menu contestuale.

Vi parlerò di due applicazioni di questo tipo, una per Windows ed una per Ubuntu (e per tutte le distribuzioni che sfruttano Gnome), che sono in grado di “trasferire” sul tasto destro del mouse alcune comuni operazioni utili ad un utente GIS.

Il prerequisito è che nel nostro sistema operativo siano installate le librerie GDAL, che sfrutteremo come motore delle operazioni “spaziali”. Per installarle su Windows basterà scaricare ed installare FWTools, mentre su Ubuntu basterà installare gdal-bin tramite synaptic o tramite riga di comando.

Alla fine del post saremo in grado di fare click con il destro su una TIFF del nostro hard-disk, ed eseguire queste due semplici (ma comodissime operazioni):

  1. convertirla in un altro formato spaziale (in questo esempio eseguirò la conversione in formato JPG2000, un eccellente formato compresso che può avere attributi geografici)
  2. leggerne le metainformazioni (anche quelle spaziali)

Se dovessi ottenere questi due risultati con le librerie GDAL, dovrei aprire il prompt dei comandi e scrivere rispettivamente:

  1. > gdal_translate -of JP2ECW input.tif output.jp2
  2. > gdalinfo input.tif

Vedremo come convertire questi comandi testuali, in operazioni da eseguire con il mouse.

Su Windows

Su Windows sfrutteremo Open++, un’utility di 200kb che consente di personalizzare l’elenco di comandi presenti nel menu contestuale, che si apre quando si clicca con il tasto destro del mouse su un file (o su una cartella).

Una volta che lo avrete scaricato ed installato, troverete una nuova voce nel menu che si aprirà al click con il destro su un file; è visibile nella figura sottostante (“Open++”).

contextmenu

L’utilizzo è immediato e quasi autoesplicativo, in quanto Open++ è già configurato per eseguire delle comode operazioni di base: ade esempio copiare il percorso assoluto di un file (Copy Path), o  aprire il prompt dei comandi a partire dalla cartella selezionata (Command Prompt). Questi due stupidi comandi, sono già un ottimo esempio di alleggerimento del lavoro.

Il primo comando che voglio aggiungere, ci consentirà di convertire in formato JPG2000 un’immagine TIFF. Per inserire questo nuovo comando, tra quelli disponibili in Open++, dovrò cliccare sull’ultima opzione del suo menu a tendina: “Customize” (vedi figura poco sopra).

Mi si aprirà la finestra sottostante:

image

Questi i passi da eseguire:

  1. cliccare in alto a destra sul tasto “Add”, e scegliere l’opzione “Command”
  2. cliccare sulla cella “Title”, ed aggiungere un nome descrittivo al comando che si sta creando (ad esempio “Convert to JPG2000”)
  3. inserire nella cella “Program” il programma che si vuole lanciare. Nel nostro caso vogliamo lanciare il prompt dei comandi e basterà scrivere “%ComSpec%”
  4. scrivere nella cella “Arguments” gli argomenti che vogliamo passare al nostro comando. Nel nostro caso inseriremo la seguente stringa ‘/c “C:\Programmi\FWTools2.2.6\bin\gdal_translate -of JP2ECW” $(TargetName)$(TargetExt) $(TargetName).jp2′
    1. il parametro “/c” fa sì che il prompt dei comandi venga chiuso al termine dell’operazione
    2. “C:\Programmi\FWTools2.2.6\bin\gdal_translate” è il percorso assoluto (nel mio pc) dell’utility GDAL – gdal_translate – che gestisce le conversioni tra formati di file spaziali
    3. “-of JP2ECW” è il parametro necessario per impostare JPG2000 come formato di output
    4. $(TargetName)$(TargetExt) sono delle variabili che coincidono con il nome e con l’estensione del file su cui cliccheremo con il destro, e che verranno valorizzate dinamicamente al lancio del comando. Se ad esempio il file su cui farò click sarà “c:\dati\input.tif”, la variabile “$(TargetName)” verrà sostituito da “c:\dati\input” e “$(TargetExt)” da “.tif”.
    5. lo stesso si dica per $(TargetName).jp2, che verrà sostituito da “c:\dati\input.jp2”
  5. cliccare sulla cella “Associate with Files” e scrivere *.tif
    1. in questo modo il comando di conversione formato sarà disponibile soltanto per i file con estensione .tif (è possibile aggiungere altre estensioni, separandole tramite “;”)
  6. impostare gli altri parametri come nella figura soprastante e cliccare su “OK”

A questo punto aprite una cartella in cui avete un file TIFF, fateci click sopra con il destro del mouse, e selezionate Open++/Convert to JPG2000. Si aprirà il prompt dei comandi e verrà lanciato il comando gdal_translate; a comando eseguito il prompt dei comandi si chiuderà automaticamente e troverete il file JPG2000 (con estensione .jp2) nella stessa cartella in cui è presente il file TIFF.

Quello di sopra è soltanto un esempio; si può di più, meglio e diversamente. Consideratelo come un primo tutorial, dopo il quale iniziare a dare sfogo alla vostra fantasia ed alla vostra competenza.

Per ottenere le metainformazioni spaziali di un file TIFF, utilizzando soltanto il tasto destro del mouse, dovrete un creare un nuovo comando. La procedura è quasi identica alla precedente, salvo per la cella “Arguments”: dovrete inserire la stringa ‘/k “C:\Programmi\FWTools2.2.6\bin\gdalinfo $(TargetName)$(TargetExt)’.

La differenza più importante è il parametro “/k”, che farà in modo che il prompt dei comandi non venga chiuso al termine del comando gdalinfo. Nella finestra del prompt potrete quindi leggere le metainformazioni del file che avrete selezionato.

In questo filmato vedrete i due comandi in azione:


Su Linux

In questo caso sfrutteremo Nautilus-actions, un’utility analoga a Open++ in ambiente GNOME e quindi anche in Ubuntu. E’ installabile tramite synaptic o digitando nella shell:

>sudo apt-get install nautilus-action

Una volta installato lo troverete nel menu Sistema/Preferenze/Nautilus Actions Configuration.

nautilus-actions

Creiamo un’azione (action) che estragga le metainformazioni da un tif selezionata.

Questi i passi da seguire:

  1. cliccare su Add
  2. inserire nella cella “Label” un nome descrittivo del comando (ad esempio “gdal_info”)
  3. scegliere – è opzionale – un tooltip per il comando (ad esempio “cliccare qui per avere le metainformazioni del file selezionato”)
  4. scegliere – è opzionale – un’icona per il comando
  5. definire il comando da lanciare, tramite la cella “Path”
    1. inserire la stringa “bash -c”
  6. impostarne la stringa “gdalinfo %d/%f > %d/%f.txt && gedit %d/%f.txt” nella cella “Parameters
    1. “%d “e “%f ” sono delle variabili che verrano sostituite dinamicamente dal percorso (senza estensione) e dall’estensione del file selezionato
    2. il carattere “>” farà sì che l’output del comando – le metainformazioni – possano essere scritte e memorizzare in un file di testo
    3. “%d/%f.txt” faranno si che il file di testo venga salvato nella stessa cartella del file selezionato (%d), con lo stesso nome (%f) e con estensione .txt
    4. “&&” fa si che venga esguito il comando successivo – gedit – ma soltanto dopo la fine del primo
    5. “gedit %d/%f.txt” per aprire con l’editor di testo di Ubuntu il file di testo appena creato
  7. cliccare sul Tab “Conditions” e scrivere nella cella “Filenames” la stringa “*.tif” (in questo modo il comando gdal_info sarà visibile soltanto per file con estensione .tif)
  8. selezionare il radio botton “Only files”
  9. e cliccare su OK

edit-action-gdal_info

A questo punto non ci resta che fare click con il destro su un file .tif e provare il comando appena creato. Aggiungo però qualche spiegazione dovuta. Cosa è bash?

Si tratta di un interprete di comandi che permette all’utente di comunicare col sistema operativo attraverso una serie di funzioni predefinite, o di eseguire programmi.

Il parametro “-c” forza bash a leggere i comandi dalla stringa di testo che segue, che nel nostro caso è quella del punto 6 di sopra.

Nel filmato sottostante vedrete (male, è saltata una parte) il comando in azione:


Record your screencast online

Nautilus-actions è a mio avviso un gioiellino. Una caratteristica che lo fa brillare è la facilità di condividere i comandi creati. Lo si fa con il tasto “Import/Export” presente nella finestra principale. Qui ad esempio una serie di “azioni” già pronte. Il comando di conversione in JPG2000 è di facile implementazione e non lo svilupperò.

In chiusura

Prendete quanto scritto soltanto come spunto per “piegare” (ad esempio) le librerie GDAL/OGR al vostro tasto destro. Sono quasi un’analfabeta di istruzioni da riga di comando, e quelle che vi ho indicato possono sicuramente essere scritte meglio e più elegantemente. Mi piacerebbe molto che qualcuno condividesse qui la propria esperienza, con qualche comando “de paura”.

Software/servizi usati per scrivere il post

  • TipCam per registrare il filmato su windows
  • ScreenToaster per farlo su Linux
  • Zotero per gestire e generare la sitografia sottostante

Sitografia letta, consigliata e disordinata

  1. “BASH Help – A Bash Tutorial,” http://www.hypexr.org/bash_tutorial.php.
  2. “Bash – Wikipedia,” http://it.wikipedia.org/wiki/Bash.
  3. “Beginners/BashScripting – Community Ubuntu Documentation,” https://help.ubuntu.com/community/Beginners/BashScripting.
  4. “COMMAND.COM, SHELL and COMSPEC,” http://www.robvanderwoude.com/command.html.
  5. “Eseguire programmi e comandi DOS – Cenati Giovanni VbScript WSH,” http://digilander.libero.it/Cenati/esegui.htm.
  6. “Nautilus-actions: GUI è bello! » Ubuntu block notes,” http://www.aldolat.it/guide-e-howto/nautilus-actions-gui-e-bello/.
21 febbraio, 2007 | di

In un post recente, ho parlato di FWTools ed ho introdotto il primo piccolissimo tutorial sul suo utilizzo. In questo, ci sposteremo dal raster al vector, e vedremo come estrarre le metainformazioni da un file vettoriale.

Utilizzerò l’utility ogrinfo, presente nel pacchetto FWTools. E’ un applicazione che va lanciata dal prompt dei comandi. Vediamo una serie di esempi applicati a un file con estensione .shp (ArcView shapefile):

>ogrinfo gb_orto.shp

mi restituirà

INFO: Open of `gb_orto.shp'
using driver `ESRI Shapefile' successful.
1: gb_orto (Polygon)

Se volessi avere le metainformazioni su questo layer poligonale – 1: gb_orto (Polygon) – scriverò

>ogrinfo -summary gb_orto.shp gb_orto

e otterrò

INFO: Open of `gb_orto.shp'
using driver `ESRI Shapefile' successful.
	
Layer name: gb_orto
Geometry: Polygon
Feature Count: 698
Extent: (2244520.000000, 3929160.000000) - (2578399.500000, 4288120.000000)
Layer SRS WKT:
(unknown)
RASTER: String (255.0)

In questo caso ottengo molte più informazioni:

  • il numero di feature presenti nel layer (698 poligoni)
  • l’estensione geografica del layer (il bounding box)
  • il sistema di coordinate – SRS Spatial Reference System – quando è possibile ricavarlo dal file (nel mio esempio non era possibile, come spesso accade con gli shapefile)
  • i campi presenti nel database e la loro tipologia (c’è un solo campo che si chiama “RASTER”, e di tipo String e con una larghezza di 255 caratteri)

Per gli appofondimenti vi lascio alla pagina ufficiale e alla rete.

9 febbraio, 2007 | di

Quando formatto il mio PC, e devo reinstallare tutte le applicazioni, inizio da quelle “fondamentali ed insostituibili”. Ognuno ha le proprie, e la scelta si basa su criteri pratici mescolati spesso con pulsazioni da tifoso. Nella mia Top Ten c’è proprio FWTools, un kit di applicazioni sviluppato da Frank Warmerdam (FW), disponibile sia per Linux che per Windows, che non può mancare tra le applicazione di chiunque si occupi di GIS e cartografia numerica.

E’ composto dai seguenti pacchetti:

  • OpenEV: A high performance raster/vector desktop data viewer and analysis tool.
  • MapServer: A web mapping package.
  • GDAL/OGR: A library and set of commandline utility applications for reading and writing a variety of geospatial raster (GDAL) and vector (OGR) formats.
  • PROJ.4: A cartographic projections library with commandline utilities.
  • OGDI: a multi-format raster and vector reading techology noteworthy for inclusion of support for various military formats including VPF (ie. VMAP, VITD), RPF (ie. CADRG, CIB), and ADRG.
  • Python: a scripting language.

Con questo post, voglio inaugurare una serie di piccolissimi tutorial dedicata a FWTools ed in particolare alle librerie GDAL/OGR. L’installazione di FWTools è molto semplice e non ne parlerò. Le operazione che andremo a svolgere, le faremo tutte da “riga di comando”.

Come ricavare le metainformazioni disponibili in un file GeoTiff?

Per ottenere queste informazioni utilizzerò le librerie GDAL, ed in particolare l’utility gdalinfo. Ecco i passi da seguire:

  • aprire la shell di sistema
  • scrivere un comando con la seguente sintassi "gdalinfo /percorso_file_geotiff/file_geottif.tif"
  • premere invio

Otterrò un’output di questo tipo:

Driver: GTiff/GeoTIFF
Size is 7520, 5800
Coordinate System is:
PROJCS[\"unnamed\",
GEOGCS[\"unnamed\",
DATUM[\"unknown\",
SPHEROID[\"unnamed\",6378388,297.0000000000014,
AUTHORITY[\"EPSG\",\"7022\"]],
AUTHORITY[\"EPSG\",\"6265\"]],
PRIMEM[\"Greenwich\",0],
UNIT[\"degree\",0.0174532925199433],
AUTHORITY[\"EPSG\",\"4265\"]],
UNIT[\"metre\",1,
AUTHORITY[\"EPSG\",\"9001\"]],
AUTHORITY[\"EPSG\",\"3004\"]]
Origin = (2366320.000000,4218280.000000)
Pixel Size = (1.00000000,-1.00000000)
Metadata:
AREA_OR_POINT=Area
TIFFTAG_XRESOLUTION=300
TIFFTAG_YRESOLUTION=300
TIFFTAG_RESOLUTIONUNIT=2 (pixels/inch)
Corner Coordinates:
Upper Left  ( 2366320.000, 4218280.000)
Lower Left  ( 2366320.000, 4212480.000)
Upper Right ( 2373840.000, 4218280.000)
Lower Right ( 2373840.000, 4212480.000)
Center      ( 2370080.000, 4215380.000)
Band 1 Block=7520x16 Type=Byte, ColorInterp=Red
Band 2 Block=7520x16 Type=Byte, ColorInterp=Green
Band 3 Block=7520x16 Type=Byte, ColorInterp=Blue

Magari a voi non suscita alcun emozione, ma questo semplicissimo comando ci restituisce un’informazione spaziale strutturata utilissima. Se vorrete creare un file .txt, basterà scrivere sulla shell la seguente stringa:

\"gdalinfo /percorso_file_geotiff/file_geottif.tif > /percorso_export/nomefile.txt\"

Il comando esegue anche operazioni più sofisticate, per le quali troverete informazioni sulla pagina ufficiale di questa utility e anche cercando un po’ sul web.


TANTO non rappresenta una testata giornalistica ai sensi della legge n. 62 del 7.03.2001, in quanto non viene aggiornato con una precisa e determinata periodicita'. Pertanto, in alcun modo puo' considerarsi un prodotto editoriale.