9 giugno, 2007 | di

I gioielli più preziosi spesso stanno nascosti dentro una scatola di latta, sotto un paio di calze, nell’angolo del cassetto del mobile vecchio della nonna.

Non avrei (forse) mai scritto il tutorial che sto per scrivere, se non fossi “caduto” per caso in questo sito, un forum italiano dedicato al mondo delle mountain bike. Non ricordo esattamente come ci sia finito, probabilmente mentre facevo ricerche su qualcosa di collegato ad Atlante Italiano (il Portale Cartografico Nazionale). Il sito del forum di cui sopra è ovviamente in qualche modo legato al mondo dei GIS – oggi i ciclisti usano spesso GPS e cartine – ma non mi sarei mai aspettato di trovare un tutorial su come utilizzare gdal_translate in batch da riga di comando. Ma andiamo al tutorial.

Immaginate di avere una cartella con decine di file GeoTiff (o anche delle orribili coppie .tif/.tfw) , ed di volere convertire in batch (ovvero una conversione in blocco di tutti questi file) in un formato raster GIS compresso come il jpg2000 o l’ECW. Il cuore del processo sarà per l’appunto gdal_translate, un’utility che si trova in FWTools, e il cervello saranno i “cicli for” a partire dal prompt dei comandi.

Il funzionamento di gdal_translate è molto semplice. Immaginiamo di voler convertire un file GeoTiff in formato ECW; questi i passi da seguire:

  • aprite la shell di FWTools (si trova in Avvio>Tutti i Programmi>FWTools 1.x.x)
  • scrivete un comando di questo tipo
>gdal_translate -of ECW c:\tanto\tif\topografica1.tif  c:\tanto\ecw\topografica1.ecw

Come vedete è un comando potente e di semplice utilizzo:

  1. prima il nome del comando (gdal_translate)
  2. poi bisogna fissare il formato di output con “-of” (output format)
  3. poi il nome del file di input (metto le virgolette per evitare di avere problemi con nomi di cartelle e file con spazi)
  4. ed in fine il nome del file di output (come sopra)

In pochi secondi avrete così convertito il vostro singolo file GeoTiff in formato ECW, mantenendo inalterate le informazioni geografiche. Lo potrete verificare con il comando gdalinfo.

Come faccio a convertirne ad esempio 40 senza scrivere 40 volte il comando di cui sopra? Mi viene in aiuto un “classico” ciclo for che eseguirò da riga di comando.

Immaginiamo di avere creato due cartelle, una con i file di input (C:\tanto\tif\) ed un’altra per i file di output (C:\tanto\ecw\). Il comando per convertire in solo colpo le vostre 40 immagini GeoTiff in formato ECW sarà il seguente:

>for %i in ("c:\tanto\tif\*.tif") do gdal_translate -of ECW "%i" "c:\tanto\ecw\%~ni.ecw"

Anche questo comando lo lancerete dalla shell di FWTools. Anche questo è un comando semplice, ma richiede delle spiegazioni. Il comando di sopra tradotto in lingua italiana, potrebbe suonare così: “per (for) ogni file (%i) tif (*.tif) contenuto nella cartella c:\tanto\tif\, esegui (do) gdal_translate, e scegli ECW come formato di output (-of ECW)”. Ecco un esploso dei comandi:

  1. for (dichiarate l’inizio del ciclo)
  2. %i (è una variabile che creerete grazie al ciclo e conterrà, per ogni ciclo, il percorso completo del file della cartella di input)
  3. (c:\tanto\tif\*.tif) (specificate quale sia la cartella ed il formato di input)
  4. do (è il comando che fa eseguire una determinata operazione)
  5. gdal_translate -of ECW (sapete già cosa vuol dire)
  6. “%i” (il percorso completo del file di input)
  7. c:\tanto\ecw\ (la cartella di output)
  8. %~ni.ecw (solo il nome del file di input senza estensione, seguito dall’estensione di output)

Scritto il comando e dato invio, inizierà il processo di conversione; vi andate a fare un caffé ed al ritorno troverete tutti i file ECW nella cartella di output.

Ma torniamo al forum sulle mountail bike. Il thread che mi ha stimolato e che mi ha fatto capire diverse cose è questo: è composto da molte pagine, e contiene diverse “chicche”. Se ne scoprite qualcuna di interessante, perché non ci scrivete un post e lo pubblichiamo su TANTO. Colgo l’occasione per fare i complimenti agli utenti di questi forum.

Per saperne di più sui “cicli for” nel prompt del dos ecco alcuni link:

Tutte le utility di FWTools, sono opencource e disponibili anche per Linux. Tutto quello di cui abbiamo parlato si può fare anche in Linux, con tutte le possibilità che da in più la riga di comando in questo ambiente. Il mio problema è che non sono tanto bravo con Linux.

Tutti i comandi di sopra possono essere raffinati. Si possono scegliere molte cose oltre al formato di output: le dimensioni di output, il tipo di compressione, l’assegnazione del corretto sistema di coordinate, etc. Per tutte queste opzioni vi rimando alla pagina ufficiale di gdal_translate.

Per convertire in formato jpg2000 basterà scrivere “-of jp2kak”. Potrete fare anche conversioni in senso inverso da ECW a GeoTiff, ed in questo caso “-of Gtiff”.

Buon divertimento!!


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.