Création de tuiles pour le web depuis les orthophotographies de la BD Ortho® en Licence Ouverte
En entrée : la BD Ortho®
L’IGN met à disposition sa BD Ortho® et son ORTHO HR® sous divers format et divers droits de réutilisation. En OpenData ce n’est pas deux mais trois versions de la BD Ortho® qui sont disponibles sous Licence Ouverte.
- La France entière y compris les DOM sont disponibles dans une version à la résolution réduite à 5 m par pixel : http://professionnels.ign.fr/BD Ortho-5m
- Pour les régions et départements qui sont co-auteurs avec l’IGN de ces orthophotographies et qui souhaitent les partager en OpenData, elles sont disponibles en résolution de 50 cm ou 20 cm par pixel : http://professionnels.ign.fr/BD Ortho-50cm-par-departements et http://professionnels.ign.fr/orthohr
Les données fournies par l’IGN sont des images géoréférencées utilisant des projections différentes en fonction de la zone couverte.
Quelle que soit la version de la BD Ortho®, chaque département est une archive multipartie au format 7z. Elles contiennent des images géoréférencées au format JPEG2000 ou TIFF. Pour chaque département ces images forment une mosaïque (en d’autre termes, ce sont aussi des tuiles). Plusieurs projections cartographiques sont utilisées en fonction de la zone : métropole et différents DOM.
En Sortie : des tuiles utilisables sur des cartes web
Le but est de pouvoir servir des tuiles en utilisant cette imagerie. Pour fabriquer ces tuiles il faut reprojeter, mettre à l’échelle et découper les images d’origines. Il y a deux approches possibles pour cela :
- Précalculer toutes les tuiles. Les traiter à l’avance prend du temps, mais ensuite les servir sur le web est facile : il suffit simplement d’accéder à un fichier image. Il n’y a également pas besoin de conserver les images d’origine.
- Calcul à la volée. Chaque fois que l’on souhaite visualiser une tuile il faut effectuer des calculs de projection et de mise à l’échelle, cela prend donc du temps.
Pour fabriquer une seule tuile de zoom faible, il faut réunir beaucoup de données des images de base. Cela prend donc du temps en terme d’accès à toutes ces données et en terme de temps de calcul. Pour les tuiles de niveau de zoom plus élevées, le volume de données étant réduit, les calculs sont plus rapides. Par ailleurs, les tuiles de faible niveau de zoom, couvrant de larges parties du territoire, sont également les plus consultées. Les tuiles les plus longues à calculer sont les plus utilisées, elles sont donc les plus intéressantes à précalculer. Le niveau de zoom à partir duquel on choisit de basculer des tuiles précalculées à des tuiles calculées à la volée dépend de la vélocité souhaitée pour la mise à disposition, du temps que l’on est prêt à accorder au précalcul et du souhait ou non de conserver les images d’origines.
Le parti prit ici est de tout précalculer.
Télécharger la BD Ortho® à 5 m
La première étape est d’obtenir les archives, qui sont disponibles ici : http://professionnels.ign.fr/BD Ortho-5m
Pour télécharger toutes les archives à 2 Mo/s il y en a pour 8 h 30. On se retrouve avec 64 Go d’archives compressées. Il faut ensuite les extraire, cela prend encore une heure et produit 72 Go d’images. On peut ensuite supprimer les 64 Go d’archives, elles ne sont plus nécessaires.
Réassembler tous les morceaux : une très (très) grande image
Une fois les archives récupérées et extraites, on se retrouve avec 8572 morceaux au format JPEG200 et TIFF.
Le principe est de fabriquer une très (très) grande image que l’on va reprojeter et mettre à l’échelle puis découper en tuiles. Mais cette image serait bien trop grande pour être manipulé comme un tout unique. Pour la métropole, à 5 m par pixel, cela représente une image de 232 000 pixels par 216 000 pixels. Nous allons donc simuler cette grande image avec gdalbuildvrt. Cet outil va créer une image virtuelle en utilisant les images des mosaïques d’origines. Quand on fait effectue calculs sur cette image virtuelle (découpage, reprojection…) seules les images sous-jacentes de la partie traitée sont utilisées. Cette image virtuelle est prise en charge par tous les outils basés sur GDAL (Qgis, MapServer…).
En utilisant gdalbuildvrt nous construisons pour chacune des zones, utilisant une projection différente, un descripteur d’image virtuelle.
Pour la métropole bien que tout soit en Lamber93 dans les données fournies par l’IGN, les définitions des projections dans les fichiers ne sont pas toutes identiques. Il est nécessaire de forcer l’utilisation de projections différentes. Bien qu’anormal, cela va quand même fonctionner. Par ailleurs les mosaïques des départements débordent largement de leur limites et sont posées sur fond blanc. Il est donc nécessaire d’en tenir compte en supprimant le fond blanc car l’image virtuelle est l’empilement de toutes les mosaïques individuelles, et par la même de toutes les images individuelles des mosaïques.
On crée un descripteur d’image virtuelle pour chacune des projections.
Des tuiles pour tous
L’objectif final est d’obtenir des tuiles pour chaque niveau de zoom dans une seule et même projection adaptée au tuilage mondial. C’est la projection « Pseudo Mercator », popularisée par Google et qui « l’avantage » de rendre la terre plate et carré.
Reprojection et mise à l’échelle
gdal_translate permet de faire des conversions d’images géoréférencées entre des formats et des projections différentes. Il est bien sûr capable de traiter les images virtuelles que l’on a préalablement définit.
En sortie les tuiles sont des images dans un format classique, on choisit ici JPEG plutôt que PNG. Il est plus adapté à de la photographie et permet une compression avec perte dont on va se satisfaire à la vue du volume de données. Les tuiles en JPEG vont être stockées dans une archive au format MBTiles, format conçu pour cet usage.
Niveau de zoom
En métropole 5 m par pixel correspondent à un niveau de zoom entre le zoom 14 et le zoom 15. On va donc reprojeter et mettre à l’échelle l’image pour produire les niveaux de zooms 14 et inférieur.
Pour une même résolution de 5 m par pixel, le niveau de zoom des tuiles n’est pas le même suivant la latitude. Il faut donc ajuster le niveau de zoom que l’on va produire en fonction de la projection.
Mise à l’échelle
Le processus de mise à l’échelle peut être réalisé avec différents algorithmes. Il faut principalement arbitrer entre la qualité de l’image produite et le temps de calcul que cela va prendre.
À noter que les images de base de la BD Ortho® à 5 m sont déjà une mise à l’échelle de la BD Ortho® d’origine. Le choix effectué à l’IGN pour faire cela est de prendre l’algorithme le plus simple et rapide, donc celui qui donne la plus mauvaise qualité d’image (pour ensuite diffuser le résultat en JPEG2000 en utilisant le mode de compression sans perte…).
Le calcul du MBTiles pour la métropole au niveau de zoom 14 prend 14 h sur un seul CPU.
Construction des autres niveaux de zoom
Par miniature
La suite GDAL offre l’outil gdaladdo. Il permet de construire la miniature d’une image. Pour du MBTiles on peut se représenter les tuiles d’un niveau de zoom comme la miniature des tuiles du niveau de zoom supérieur. Cette « miniature » peut ensuite être également stockée dans le MBTiles. Le défaut de cette approche est que l’on refait une mise à l’échelle du zoom 14 qui est lui-même une mise à l’échelle et une preprojection de la mosaïques de la DB Ortho® à 5 m qui est elle-même une mise à l’échelle (de mauvaise qualité) de la DB Ortho® d’origine. Bref, le résultat, du fait des traitements multiples, n’est pas vraiment de qualité.
Par calcul direct
Une autre façon de procéder est d’utiliser gdal_translate pour produire ces autres niveaux de zooms. La qualité de l’image finale est meilleure car il n’y a pas d’étape d’intermédiaire. L’autre avantage est que l’on peut effectuer les calculs en parallèle et non en séquences car tous les niveaux de zoom ont la même image virtuelle comme source.
On va par contre obtenir un MBTiles par niveau de zoom et non un seul MBTiles pour la pyramide de tuiles. Il va donc falloir réassembler les différents niveaux de zoom dans un seul MBTiles.
Production des MBTiles
gdal_translate ne supporte pas de produire des MBTiles en multi-thread. Il ne peut le faire qu’en utilisant un seul CPU.
Pour utiliser au mieux la machine et avoir un résultat plus rapidement on va utiliser la commande parallel. Elle prend en entrée une liste de commandes à exécuter et lance ensuite autant de tâches en parallèle qu’il y a de CPU. Dès qu’une tâche est terminée la suivante est démarrée. On va lancer autant de tâches qu’il y a de niveaux de zoom à produire multiplié par le nombre de projections d’origines à traiter.
Avec 8 CPU la dernière tâche se termine au bout de 20 h. Le résultat est 60 fichiers MBTiles pour un total 8,5 Go. La taille est bien plus réduite que la taille des images d’origine et ce grâce à l’utilisation de la compression JPEG et malgré la génération plusieurs niveaux de zoom.
Fusion des MBTiles
Les fichiers MBTiles sont en fait des bases de données SQLite qui stockent les images. Il faut copier dans un même MBTiles toutes les images pour une même projection. On pourrait également tout mettre dans un seul MBTiles quelle que soit la projection d’origine, mais garder un MBTiles par zone permet une réutilisation plus facile.
Critiques
Les départements n’ont pas une teinte uniforme entre eux. On les distingue à faible niveau de zoom.
La BD Orhto® couvre les terres et s’arrête tout de suite après la côte. De plus on peut constater sur l’eau des reflets permettant de distinguer les limites des photographies entres elles. Il faudrait étendre et lisser les surfaces couvertes par l’eau pour obtenir un meilleur aspect visuel.
En suivant cette procédure, des tuiles ont été construites jusqu’au niveau de zoom 9, au delà de quoi la France ne représente plus qu’une petite surface isolée entourée de vide. Il vaut mieux alors utiliser une vue plus globale du monde.
Une pyramide de tuiles libres construitent depuis les images satellites Landsat est justement disponible pour les niveaux de zoom de 0 à 8. Ce MBTiles fait 400Mo et est dans le Domaine Public. Il est disponible ici https://archive.org/details/landsat.
On a utilisé la BD Ortho® à 5 m pour construire le niveau de zoom 14. Pour la moitié des départements il existe des versions OpenData en Licence Ouverte de la BD Orhto® à 50 cm et à 20 cm. Il serait donc intéressant d’en profiter pour créer les niveaux de zoom plus évelés. Cela fera l’objet d’un second article.
Ressources
La BD Ortho® : http://professionnels.ign.fr/bdortho-5m
Les scripts de production des MBTiles : https://github.com/Mapotempo/tiles-bd-ortho
Les MBTiles : https://www.data.gouv.fr/fr/datasets/pyramide-de-tuiles-depuis-la-bd-ortho-r
La carte glissante : https://maps.mapotempo.com/styles/satellite-hybrid