In un post recente, ho scritto di alcune delle modalità di pubblicazione online di cartografia digitale. Ne sono seguiti dei commenti interessanti, ed alcune email con richieste di consigli e di approfondimento. L’argomento mi è sembrato “caldo”, e credo valga la pena alimentarlo ulteriormente.
Su un blog che vi consiglio di leggere – thematicmapping blog – ho scoperto dell’esistenza di GDAL2Tiles, un software a riga di comando che consente di pubblicare -rapidamente e con efficacia – una carta raster nelle seguenti modalità: Google Maps, OpenLayers and Google Earth. E’ uno strumento incluso in GDAL/OGR 1.5.0, e quindi anche nell’ultimo FWTools.
Il lavoro che fa GDAL2Tiles è quello di leggere un’immagine georeferenziata, e suddividerla in tasselli da 256 x 256 pixel, con una struttura a piramide (il nome del pacchetto è in qualche modo descrittivo della funzione che svolge). In altre parole a partire da una raster, ne vengono generate diverse a risoluzioni decrescenti, che vengono suddivise in sezioni da 256 pixel (vedi figura).
Il tassellamento e la piramidazione sono molto efficienti per distribuire raster sul web, in quanto l’immagine potrà essere visualizzata direttamente alla risoluzione adatta al livello di zoom attivo, e verranno scaricati soltanto i tasselli dell’area che stiamo osservando a video. E’ il meccanismo che sta dietro al motore di Google Maps e a quello dei maggiori provider di cartografia online.
Andiamo alla parte pratica e proviamo a mettere online una delle fantastiche immagini presenti su Natural Earth II. Si tratta di file (qui sotto un esempio) che rappresentano la terra, così come sarebbe senza l’influenza dell’uomo (immaginate Parigi coperta da una foresta temperata …); una rappresentazione del pianeta, precedente all’era moderna.
Per il mio esempio ho scaricato la tavola denominata “Ocean with layered depth tints“.
La prima cosa che ho fatto è stata georeferenziarla. Conosco le coordinate dei 4 vertici della tavola, ho FWTools installato, e dalla shell FWTools lancio il seguente comando:
> gdal_translate -a_srs EPSG:4326 -gcp 0 0 -180 90 -gcp 16200 0 180 90
-gcp 16200 8100 180 -90 NE2_modis3.jpg NE2_modis3.tif
gdal_translate è una delle utility presenti in FWTools; questo il significato dei parametri usati:
-a_srs per assegnare il corretto sistema di coordinate (EPSG:4326)
-gcp per assegnare i vari punti di controllo (prima le coordinate in pixel, e poi quelle del sistema di coordinate scelto)
A partire dalla jpeg scaricata, ho creato un tif georeferenziata, assegnando come punti di controllo i 4 vertici della carta.
Dovrò adesso processare l’immagine con gdalwarp:
> gdalwarp -t_srs EPSG:4326 NE2_modis3.tif NE2_modis3_4326.tif
-t_srs è il parametro per assegnare il sistema di coordinate.
La mia immagine di partenza è di 16200 x 8100 pixel; GDAL2Tiles la tassellerà e la piramiderà. Ogni tassello che andrò a generare sarà di 256 x 256 pixel. I livelli di piramidazione, corrispondenti ai livelli di zoom possibili, rispecchieranno lo schema della tabella sottostante.
Livello di Zoom |
Dimensione immagine |
Tasselli |
Numero totale di tasselli |
1 |
512 x 256 |
2 x 1 |
2 |
2 |
1024 x 512 |
4 x 2 |
8 |
3 |
2048 x 1024 |
8 x 4 |
32 |
4 |
4096 x 2048 |
16 x 8 |
128 |
5 |
8192 x 4096 |
32 x 16 |
512 |
6 |
16384 x 8192 |
64 x 32 |
2048 |
7 |
32768 x 16384 |
128 x 64 |
8192 |
Per il mio esempio mi “accontenterò” di un livello di zoom massimo pari a 5 e, prima di dare in pasto il mio file a GDAL2Tiles, ne ridurrò le dimensioni di conseguenza:
> gdal_translate -outsize 8192 4096 NE2_modis3_4326.tif
NE2_modis3_4326_5.tif
-outsize per specifcare la larghezza e l’altezza dell’immagine di output
Non mi resta che “passare” a GDAL2Tiles, l’ultimo file generato:
> gdal2tiles -title \"Pubblicare una Raster\" -publishurl http://www.nostroserver.org/maptiles/ -v NE2_modis3_4326_5.tif cartella_di_output
-title per dare un titolo al progetto
-publishurl per definire l’url delle mappe che pubblicheremo
-v per avere un output “verboso” del comando, e leggere a video il dettaglio di tutte le operazioni eseguite da GDAL2Tiles
L’output del processo sarà una cartella con il seguente contenuto:
- una sottocartella per ognuno dei livelli di piramidazione (in ognuna di queste diverse altre sottocartelle con i vari tasselli da 256 x 256 pixel)
- un file denominato “openlayers.html”, ovvero un’interfaccia web basata su OpenLayers
- un file denominato “googlemaps.html”, ovvero un’interfaccia web basata su Google Maps
- un file denominato “tilemapresource.xml”, ovvero lo schema della struttura dei tasselli di mappa
- un file denominato “cartella_di_output.kml”, che ci consentirà di visualizzare in Google Earth l’immagine processata (vedi figura sotto)
Bisognerà fare l’upload di tutti i file creati da GDAL2Tiles, all’interno della cartella specificata sopra con il parametro -publishurl, e testarne infine il risultato.
Qui potete testare la visualizzazione della mappa in OpenLayers, qui in Google Maps e qui in Google Earth.
Il file con l’interfaccia basata su OpenLayers ha bisogno di una patch. Qui il file con la patch applicata.
Un bravo webmaster è in grado di portare a termine questa procedura, senza sapere nulla di cartografia digitale? Probabilmente si, ma magari soltanto in modo meccanico e pertanto non saprà applicarla ad esempi differenti da quelli descritti (immaginate di partire da un 25000 IGM).
Non ci si improvvisa cartografi online, e bisogna sempre documentarsi. Strumenti come questo fanno venire la voglia di farlo e consentono una più rapida valorizzazione e diffusione di queste tematiche. E’ per questo che mi piace GDAL2Tiles.
I contenuti potrebbero non essere più adeguati ai tempi!
By Diego Guidi on apr 22, 2008
Interessante articolo, tanto quanto la versione originale
Il “problema” di gdal2tiles è che opera a partire da immagini raster, mentre sarebbe interessante un servizio di generazione tiles a partire da un WMS…
ora mi risponderete: ma c’è TileCache!!!!
Vero, ma con tilecache è un problema pubblicare su googlemaps, anche se qualche cosa ci si può inventare…
http://crschmidt.net/blog/311/using-tilecache-with-google-maps-and-virtual-earth/
Per google earth vedo se riesco a modificare il kml che hai postato tu
By Andrea Borruso on apr 22, 2008
Ciao Diego,
il post originale, così tutto il Blog da cui è tratto, è fantastico.
Sul WMS per fortuna c’è sua maestà Christopher Schmidt
Inoltre la nuova versione di OpenLayers apre strade interessanti:
http://openlayers.org/dev/examples/spherical-mercator.html
Appena modifichi il kml, facci sapere.
A presto,
a
By Alessio on apr 22, 2008
Ciao Andrea,
ultimamente ti vedo parecchio ispirato!
Bel post davvero questo su Gdal2Tiles… molto utile
By Andrea Borruso on apr 22, 2008
Alessio grazie, è anche merito tuo
By Pietro Blu Giandonato on apr 22, 2008
Beh, direi che il mio prossimo post puoi (s)postarlo almeno di un paio di mesi
Gran bel lavoro Andy