22 aprile, 2008 | di

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.

image_pyramid 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.

natural_earth

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.

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.


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.