- MapLibre Tile (MLT) est un nouveau format de tuiles vectorielles de nouvelle génération destiné à remplacer Mapbox Vector Tile (MVT), conçu pour améliorer l’efficacité du traitement des données géospatiales à grande échelle
- Il offre un taux de compression jusqu’à 6 fois supérieur ainsi qu’un décodage rapide basé sur SIMD, ce qui améliore l’espace de stockage, la latence et l’efficacité du cache
- Il est extensible avec pour objectif la prise en charge future des coordonnées 3D (altitude), du traitement basé sur GPU, des types de données composites, du référencement linéaire et des m-values
- Il peut être utilisé immédiatement avec MapLibre GL JS et MapLibre Native, avec des demo tiles, un serveur de conversion et la prise en charge de la génération via Planetiler
- Ce format a été développé grâce à la collaboration de la communauté open source, d’entreprises et du monde académique, et finalisé avec le soutien de Microsoft et d’AWS
Présentation de MapLibre Tile
-
MapLibre Tile (MLT) est le format successeur de [Mapbox Vector Tile (MVT)], entièrement repensé dès le départ pour faire face à la croissance rapide du volume de données géospatiales et à la complexité des formats sources de nouvelle génération
- Conçu pour exploiter les performances du matériel moderne et des API graphiques, il permet de traiter et de rendre avec de hautes performances des fonds de carte 2D et 2.5D à l’échelle planétaire
- L’implémentation actuelle est fonctionnellement équivalente à MVT, tout en apportant des améliorations en matière de performances et d’efficacité
-
Principales améliorations techniques
- Compression améliorée : jusqu’à 6 fois mieux sur les grandes tuiles, grâce à une disposition orientée colonnes et à un encodage léger récursif
- Performances de décodage accrues : une structure d’encodage rapide et légère, compatible avec les instructions SIMD/vectorisées
- Au final : latence réduite, baisse des coûts de stockage et de transfert, et meilleure utilisation du cache
Possibilités d’extension futures
-
MLT a été conçu en anticipant la prise en charge des fonctionnalités futures suivantes
- Renforcement de la prise en charge des coordonnées 3D (altitude)
- Optimisation des formats de stockage et mémoire pour un traitement efficace sur CPU et GPU
- Prise en charge du référencement linéaire (linear referencing) et des m-values pour assurer la compatibilité avec des formats de nouvelle génération comme Overture Maps (GeoParquet)
- Prise en charge de types composites comme les attributs imbriqués, listes et maps
-
L’évolution de MLT sera déterminée par les besoins de la communauté, et diverses idées d’extension et contributions sont les bienvenues
- Parmi les ressources disponibles figurent les slides de la présentation FOSS4G 2024 de Markus Tremmel, une conférence YouTube et un article ACM
Disponibilité et intégration
-
MLT est disponible dès maintenant
- MapLibre GL JS et MapLibre Native prennent tous deux en charge les sources MLT
- Il peut être utilisé en définissant la valeur
mltpour la propriétéencodingdans le JSON de style
-
Essais et développement
- Utiliser le style de demo tiles basé sur MLT
- Utiliser l’Encoding server pour convertir en temps réel un style MVT existant en MLT
- La prise en charge de la génération MLT est prévue dans une prochaine version de Planetiler
- L’état d’intégration peut être consulté sur la page officielle de l’état des implémentations
-
Pour partager des retours d’expérience sur MLT, il est recommandé de participer au canal Slack
#maplibre-tile-formatou aux issues/discussions GitHub
Remerciements et collaboration
- MLT a été développé grâce à plusieurs années de collaboration entre le monde académique, l’open source et les entreprises
- Markus Tremmel a conçu le format, et Yuri Astrakhan a dirigé le projet
- Tim Sylvester a réalisé l’implémentation C++, tandis que Harel Mazor, Benedikt Vogl et Niklas Greindl se sont chargés de l’implémentation JavaScript
- Microsoft et AWS ont financé le développement
Notes
- Contrairement à MVT, MLT ne prend pas en charge les couches où le type des valeurs dans une colonne varie selon les entités
1 commentaires
Avis sur Hacker News
Je recommande d’assister à la présentation de MapLibre qui aura lieu samedi dans le devroom Geospatial à la FOSDEM
Lien vers le programme de l’événement
J’ai cherché un peu la page d’exemple et comparé l’exemple d’affichage de carte avec MLT avec l’exemple d’affichage de carte existant
En regardant les logs de la console, j’ai constaté une amélioration de la compression d’environ 10 %. C’est assez impressionnant
Le format MLT intègre plusieurs encodages légers et il est même possible d’utiliser un encodage différent selon la tuile
Il faut donc une approche heuristique pour trouver la meilleure combinaison, avec un compromis entre taille des tuiles et performances de décodage
C’est encore un stade précoce, mais AWS finance aussi l’optimisation de MLT cette année, donc il y a encore beaucoup de marge de progression
Lors d’un benchmark, il est plus important d’observer les usages réels que la taille totale des tuiles — personne ne zoome au milieu de l’océan 😉
J’ai récemment déployé une solution basée sur pmtiles et j’en suis vraiment satisfait
Voir la documentation PMTiles
pmtiles utilise MVT, mais j’espère qu’un outil permettant une conversion vers MLT verra le jour
MapLibre est la meilleure bibliothèque JS que j’ai utilisée jusqu’ici pour afficher des cartes dans le navigateur
J’ai hâte de voir la transition vers ce nouveau format
Dans Planetiler, il est possible de générer du MLT avec l’option CLI
--tile-format=mltPour l’instant, c’est uniquement sur la branche main, mais une release est prévue bientôt
Les tests montrent qu’avec les paramètres par défaut, la taille de l’archive OpenMapTiles diminue d’environ 10 %. D’autres optimisations sont en cours
Malheureusement, Tilemaker ne prévoit pas de supporter MLT à moyen terme
Une partie de la communauté risque donc d’être laissée de côté dans cette transition
Voir le fil de discussion de l’issue
Je trouve intéressant que les formats de fichiers vectoriels continuent encore à être réinventés
Je comprends l’intérêt d’un meilleur taux de compression ou d’une vitesse de décodage plus élevée, mais je me demande quelles sont les nouvelles idées ou intuitions qui ont guidé cette conception
Je suis ce projet depuis quelque temps et il me semble vraiment prometteur
En tant qu’utilisateur de la stack MapLibre, je pense que le dernier grand chantier sera l’ajout d’une fonction As_MLT() dans PostGIS
Est-ce que certains ici font de l’auto-hébergement de cartes ? Je serais curieux de connaître les avantages, les inconvénients et les outils utilisés
Le serveur doit simplement pouvoir servir des fichiers statiques avec des range requests (Caddy comme Nginx conviennent)
La carte est un seul gros fichier, donc elle est aussi facile à partager entre plusieurs serveurs
Il n’y a presque pas d’inconvénients, mais il faut ajouter côté client une bibliothèque de prise en charge d’un protocole personnalisé
L’édition des styles est un peu délicate, mais on peut charger et modifier des styles protomaps avec l’éditeur Maputnik
Voir le guide de démarrage
J’ai créé séparément une carte basse résolution du monde entier (50 MB) et une carte haute résolution de l’Australie (900 MB), puis je les ai envoyées sur S3
Je n’ai pas besoin de données à jour, donc je les laisse telles quelles, et ça fonctionne très bien
Les API commerciales avaient soit un coût trop élevé pour générer des rasters en 300dpi, soit des restrictions sur la revente
J’utilise PostGIS pour stocker et servir les tuiles vectorielles, et j’enregistre les données raster sur AWS S3 au format GeoTiff COG
Nous construisons le PBF OSM pour notre zone d’intérêt (le Colorado), lançons le conteneur openstreetmap-tile-server, puis appliquons le style et effectuons le rendu avec renderd
MLT est sympa, mais j’aimerais aussi voir ce genre d’avancées sur les formats de tuiles 3D
À l’heure actuelle, 3D Tiles de Cesium est pratiquement le seul choix possible, et ses performances ne sont pas aussi bonnes qu’espéré