I nostri più assidui lettori sicuramente ricorderanno un “vecchio” post di Andrea Borruso dal titolo “Il tasto destro per alleggerire un po’ il lavoro di chi si occupa di GIS (su Windows e su Linux)”, un evergreen del nostro blog tra i più visitati di sempre. Ebbene, in accordo con la postilla che scriviamo in calce ai nostri post dopo un anno dalla loro pubblicazione (ci teniamo a ricordarlo!), il post di Andrea, pur sempre attualissimo, merita un aggiornamento in virtù del fatto che il software Open++ da lui brillantemente recensito ha subito di recente alcune evoluzioni significative tali da rendere inefficaci le istruzioni scritte all’epoca (…ben due anni e mezzo fa!).
In particolare, Andrea ci mostrava come configurare Open++ in modo da “automatizzare” l’utilizzo di alcune utility dello swiss knife geospaziale per eccellenza: la libreria GDAL. Cercheremo pertanto di ottenere lo stesso risultato di allora, utilizzando stavolta l’ultima release di Open++ (v. 1.5.1).
Partiamo innanzitutto dal notare che la struttura della finestra di dialogo di Open++ è leggermente cambiata rispetto al passato. In luogo della scheda Language, ora ne sono presenti altre due: Install/Uninstall e About. Tralasciando l’ovvio significato di quest’ultima, la scheda Install/Uninstall è stata introdotta in sostituzione del vecchio installer, rendendo quindi l’applicazione portabile (può essere eseguita su una semplice chiavetta USB). La scheda principale (Commands) è apparentemente rimasta invariata rispetto al passato. Tuttavia, come ci fa notare Chiara (una lettrice che di recente ha commentato il post di Andrea, sollevando il problema), qualcosa è cambiato nella versione 1.5.1 (probabilmente anche prima): si tratta essenzialmente delle variabili utilizzabili nella casella di testo in cui andiamo a configurare i nostri comandi e, in particolare, quella degli argomenti (Arguments), come mostrato nella figura seguente.
Tali variabili, per quanto siano di una chiarezza quasi disarmante, risultano però meno flessibili da gestire rispetto alle versioni precedenti specie quando, come nel caso delle utility della libreria GDAL, il nostro comando accetta due o più parametri basati sul nome del file in ingresso. Fortunatamente, ci viene in soccorso l’unica FAQ presente nell’help file di Open++ (abbastanza criptico, in verità…) in cui è mostrato l’utilizzo di un ciclo for in linguaggio batch all’interno degli argomenti. Dunque, se è possibile usare il linguaggio batch, è altrettanto possibile usare anche i parametri batch e trarne così beneficio nel gestire i nomi dei file con o senza le loro estensioni. Ovviamente un ciclo for è applicabile anche su un singolo file e quindi il gioco è fatto!
Andando al sodo, per prima cosa consiglio di aggiungere la cartella dei binari di GDAL (o di FWTools, se preferite) all’interno della variabile PATH di sistema. Così potrete facilmente eseguire qualsiasi tool di GDAL all’interno di una qualsivoglia cartella, senza la necessità di dover riscrivere il suo percorso. In questo altro post sempre di Andrea (lo “swiss knife” di TANTO ) è descritto come fare. Nel seguito, assumerò che lo abbiate fatto.
Quindi aggiungiamo un separatore delle opzioni di menù nella scheda Commands di Open++ e proviamo a configurare l’utility relativamente più semplice tra quelle trattate da Andrea: gdalinfo. Per prima cosa, scriviamo “GDALinfo” come titolo. Poi, trattandosi di una utility che si esegue da riga di comando, il programma da utilizzare sarà %ComSpec%, ovvero il nome della variabile di ambiente usata da Windows per indicare l’interprete da linea di comando (CLI), solitamente cmd.exe. Fin qui nulla di nuovo rispetto al post di Andrea. Negli argomenti, invece, scriveremo:
/k gdalinfo %FilePaths%
La spiegazione è piuttosto semplice: /k significa che vogliamo mantenere la finestra aperta dopo l’esecuzione del comando (altrimenti non riusciremmo a leggere le informazioni), gdalinfo è il nome dell’eseguibile dell’utility e, quindi, %FilePaths% è una variabile che rappresenta il vettore dei percorsi dei file passati come parametro. La directory di lavoro coincide con la directory del file stesso (%FileDir%), scegliamo eventualmente un’icona per rappresentare il comando, associamo il comando al singolo file e, infine, esplicitiamo le estensioni possibili del file in ingresso. Nulla di trascendentale, verrebbe da pensare.
Le cose si complicano, invece, quando andiamo a mettere in pratica l’esempio di Andrea relativo a gdal_translate. La procedura è sostanzialmente identica al caso precedente, ad eccezione dell’argomento. Tuttavia, come anticipavo in precedenza, ci viene ottimamente in soccorso l’unica FAQ a disposizione. E, pertanto, l’argomento da scrivere per convertire in formato JPEG sarà:
/c for %i in (%FilePaths%) do start gdal_translate -of JPEG %~nxi %~ni.jpg
che, in pratica, significa che per tutti i file contenuti nel vettore dei percorsi %FilePaths% (nel nostro caso, contiene un unico percorso in quanto selezioneremo un unico file) esegue il comando gdal_translate -of JPEG %~nxi %~ni.jpg, dove %~nxi è il nome compreso di estensione del raster sorgente, mentre %~ni è il nome privo di estensione del raster di destinazione, seguito poi da .jpg.
E non è ancora tutto! Visto che usiamo un ciclo for come argomento e che Open++ prevede l’associazione dei suoi comandi anche ad un insieme di file, possiamo quindi rendere la conversione in JPEG in modalità batch. A tal fine, creeremo sostanzialmente una copia del Convert to JPEG in cui aggiungeremo solo il termine (batch) alla fine del titolo e poi cambieremo l’opzione Associate with da Single File a Multiple File. Possiamo quindi selezionare più file raster e da menù contestuale scegliere l’opzione Convert to JPEG (batch) per avere la conversione in blocco di tutti i file selezionati. E’ quindi adesso facile definire altri comandi di conversione verso altri formati raster supportati da GDAL …e non solo!
Per i più pigri, ecco il file di configurazione OpenXX.ini dei comandi descritti in precedenza. Basta copiarlo nella cartella contenente Open++, eseguirlo …et voilà …si otterrà la stessa identica configurazione. Si tratta di un metodo semplice e rapido per condividere le proprie raccolte di comandi con i colleghi.
Una nota a margine: in caso si decida di definire comandi per effettuare operazioni di coordinate, occorre aggiungere alla variabile PATH di sistema anche il percorso della cartella di GDAL (o eventualmente della libreria proj.4) che contiene le definizioni dei vari sistemi cartografici definiti da EPSG.
Infine, un grosso ringraziamento a Chiara per averci costretti a rivalutare un post obsoleto.
Tag: gdal gdalinfo gdal_translate open++
I contenuti potrebbero non essere più adeguati ai tempi!
By Andrea Borruso on ott 13, 2011
Caro Antonio,
un po’ “ce la cantiamo e ce la suoniamo”, ma ho già saccheggiato il file .ini che hai condiviso, ne ho fatto un fork ed fatto due modifiche:
- aggiunto ogrinfo per file .shp e .dxf
- modificato il gdalinfo con l’aggiunta del parametro “-noct” (per non avere la stampa della color table)
Ovviamente de gustibus. La “mia” versione è qui: https://gist.github.com/1284665
Adesso installerò Open++ in ogni PC in cui faccio click, ed anche (a loro insaputa) in quelli dei mie colleghi
Molto semplice e molto utile. Grazie
By Antonio Falciano on ott 13, 2011
Andrea, hai fatto benissimo…Grazie a te! Se ogni lettore di TANTO ci scrivesse dentro 2-3 comandi alla fine avremmo tutti una gran bella raccolta! Chi offre di più?
By chiara on ott 16, 2011
fantastico,
grazie a voi per la tempestività e esaustività dei vostri feedback!
Come temevo ero arrivata abbastanza vicina alla soluzione – tranne che per i parametri batch! – ma perlomeno così mi avete risparmiato ore di inutile frustrazione
Ora non mi resta che scatenare la fantasia e vedere se riesco ad aggiungere alla lista qualche comando di pubblica utilità…nel frattempo ho già cominciato a diffondere l’open++ verbo…
grazia ancora
chiara
By Ale on ott 20, 2011
Ciao Andrea,
dopo aver installato GDAL sul mio computer e aver creato alcune utilissime utility, purtroppo ho avuto alcuni problemi con ArcGis 10 che non riesco a risolvere. In particolare non mi legge piu` correttamente alcuni tiff creati precedentemente. Sembra avere dei problemi con i Nodata values e con i numeri decimali.
Hai qualche suggerimento?
Grazie mille
Alessandra
By Antonio Falciano on ott 20, 2011
Ciao Alessandra,
per capire cosa sia potuto accadere occorre che tu ci dica cosa fanno di bello le tue “utilissime utility”. Sembra che si tratti di un problema di conversione di formato. In ogni caso, possiamo escludere a priori il fatto che Open++ possa influire sul comportamento di ArcGIS. Nel frattempo, magari potresti provare a rimuovere GDAL dalla variabile PATH di sistema e a verificare nuovamente il comportamento di ArcGIS, in modo da escludere eventualmente anche l’ipotesi di un conflitto tra le librerie.
Antonio
By Andrea Borruso on ott 20, 2011
Ciao Alessandra,
mi pare una bella cosa che ti sia tornato utile questo post. Che utility hai creato?? Perché non le condividi con noi?
Per poterti aiutare con i “problemi” di cui parli, perché non ci invii in qualche modo il file di input ed il comando che hai utilizzato?
Quando dici problemi, cosa intendi? Visualizzi male i file? ArcGIS non parte?
Saluti,
a
By Ale on ott 21, 2011
Ciao a tutti,
dopo 24 ore di tribolazioni e tentativi vani di capire quali fossero le difficolta` di ArcGis nel leggere dati in formato tiff, con l’aiuto di Andrea, ho scoperto che il problema che mi affligeva non era affatto legato all’istallazione di GDAL.
Pare che inavvertitamente io in qualche momento e non so per quale motivo, abbia cambiato il settaggio del formato dei numeri (Opzioni internazionali del Pannello di Controllo): sostanzialmente, nel caso in cui il Separatore decimale sia rappresentato dalla virgola e i Simbolo raggruppamento cifre dal punto, ArcGIS va in confusione e non sa piu` interpretare correttamente i numeri in un tiff (in particolare i NoData).
Insomma una stupidaggine… che mi e` costata ansia e frustrazione…
Grazie ancora una volta ad Andrea, che ha avuto l’intuizione giusta…
Alessandra