Trucs et astuces en relation avec OpenStreetMap

Cette page présente des informations utiles dans ma pratique d'OpenStreetMap.

Le problème s'est posé à moi lorsque j'ai récupéré sur le site Open Data de Toulouse Métropole un jeu de 416 images JPEG de 14000 x 10000 pixels constituant l'orthophotographie de la communauté urbaine de Toulouse réalisée en juillet 2011 par AéroScan : Toulouse ne publiant que les dalles et ne donnant accès à aucun service WMS ou TMS, comment convertir cette collection de dalles en pyramides de tuiles de manière à constituer mon propre service WMS ou TMS ?

Méthode

Guillaume Pasero m'a donné une réponse basée sur le couteau suisse du développeur de SIG qu'est la bibliothèque GDAL :

Dans un premier temps, il faut créer un jeu de données virtuel (Virtual Dataset) à partir du jeu de dalles récupérées sur le portail :

$ gdalbuildvrt -addalpha \
               ToulouseMetropoleOrtho2011.vrt \
               ToulouseMetropoleOrtho2011/*.jpg

Où :

  • gdalbuildvrt est l'outil du projet GDAL générant les jeux de données virtuels (disponible via le paquet gdal-bin sur Debian)
  • ToulouseMetropoleOrtho2011.vrt est le fichier créé par gdalbuildvrt pour décrire le jeu de données virtuel
  • ToulouseMetropoleOrtho2011/*.jpg est l'ensemble des dalles JPEG insérées dans le jeu de données virtuel

Dans un second temps, il faut générer les tuiles en indiquant le jeu de données virtuel comme source (et en précisant le SRS qui n'est ici pas fourni ou interprété correctement dans les fichiers de métadonnées joints aux dalles) :

$ gdal2tiles.py -v \
                -s EPSG:3943 \
                -z 9-20 \
                -t "Toulouse Metropole - Orthophotographie juillet 2011" \
                -c "Toulouse Metropole" \
                ToulouseMetropoleOrtho2011.vrt \
                Tiles

Où :

  • gdal2tiles.py est le script Python fourni par le projet GDAL pour générer une pyramide de tuiles (disponible via le paquet python-gdal sur Debian)
  • Tiles est le répertoire dans lequel va être créé la pyramide de tuiles.

Remarque : J'ai choisi les niveaux de zoom 9 à 20 en m'appuyant sur la documentation « Resolution and Scale » de la documentation des cartes glissantes d'OSM et en remarquant que :

  • la boîte englobante de l'orthophotographie de Toulouse Métropole a une taille de 42 x 30 km ;
  • au niveau de zoom 9, une tuile couvre une aire de 56,7 x 56,7 km et contient donc toute l'orthophographie ;
  • au niveau de zoom 20, un pixel couvre à la latitude de Toulouse (43,6° N) une largeur de 11 cm, proche des 12,5 cm de résolution des dalles fournies par Toulouse Métropole.

Résultat

Sur une machine dotée d'un processeur Intel Core i5 3570K (1 seul des 4 cœurs étant utilisé puisque gdal2tiles.py n'est pas multithreadée), de 8 Go de RAM (mais il n'en faut pas tant !) et d'un disque SATA rapide, le traitement des 416 dalles de l'orthophotographie de Toulouse Métropole a nécessité, 65 heures et 22 minutes de calcul. Ce traitement a produit 2 292 769 tuiles PNG de 256×256 pixels en RGBA pour un volume total de données de 141 855 Mo (~ 139 Go).