De OSM à PMTiles, avec les tags name:xx=*

Hello,
Depuis quelques jours, je tâtonne dans l’univers des rendus vectoriels OSM… et j’ai besoin d’aide :sweat_smile:

Mon objectif

Créer un rendu mettant en valeur les toponymes dans les langues minoritaires. Je commence facile avec le Live, parlé sur la côté lettone. Nous avons une dizaine de tags name:liv dans OSM, je prévois d’en importer plus depuis une base créée par des chercheurs locaux.

Exemple de node : Node: ‪Kolka‬ (‪264645216‬) | OpenStreetMap

Avantage : pour les tests, le fichier .osm.pbf de la Lettonie fait seulement 100Mo

Ce que j’ai fait

Après quelques tâtonnements, j’ai été séduit par la simplicité du format pmtiles. Voici la procédure utilisée :

  • .osb.pbf > .mbtiles (via planetiler)
  • .mbtiles > .pmtiles
  • .pmtiles rendu avec MapLibre (je n’ai pas encore vraiment créé mon rendu)

En gros, je suis la procédure décrite ici : Create Vector Tiles from OpenStreetMap using Planetiler | bert

Là où j’ai besoin d’aide

J’ai bien réussi les conversions. Mais en inspectant mon .pmtiles via PMTiles Viewer, je constate que j’ai beaucoup de tags name, mais que je perds le name:liv=* à un moment :no_mouth:

J’ai commencé à comprendre que le .mbtiles, c’est pas juste une présentation différente du fichier OSM, mais que ça sélectionne des tags. Évidemment, name:liv n’est pas très standard et doit passer à la trappe.

Comment puis-je faire pour garder les tags name de mon choix à toutes les étapes du pipeline (OSM > MBT > PMT > rendu), afin de pouvoir les utiliser dans mon rendu ?

Mille merci pour votre aide et vos conseils ! Je dois avouer que je me perds un peu dans la doc des différents sites (maplibre, planetiler, pmtiles, Openmaptiles, wiki OSM, maplibre…)

2 Likes

Dans planetiler tu as ça là

Mais c’est un fichier généré depuis la configuration de OpenMapTiles

Il te faut régénérer si tu modif la config

Après tous les fournisseurs de tuiles au schéma OpenMapTiles ont déjà toutes ces langues dans les tuiles. Y compris sur http://tile-vect.openstreetmap.fr

Tu peux par exempla utiliser ce plugin MapLibre pour les activer : GitHub - teritorio/openmaptiles-gl-language: Switch language of your MapLibre GL JS style based on OpenMapTiles

Merci pour ta réponse super rapide et les liens vers les fichiers de config !

Juste un point que je ne comprends pas très bien : il me semblait que pmtiles avait un schéma différent de openmaptiles.

Si jamais sur mon ordi je fais appel à une configuration modifiée de openmaptile, où j’ajoute « liv » à la liste, pour générer le mbtiles, ça veut dire que le mbtiles contiendra name:liv, et ça c’est bien. Mais mon mbtiles sera dans le schéma de openmaptile non ? Est-ce que je pourrai encore le convertir en pmtiles ?

Et si la réponse est non, ça veut dire que je dois pouvoir mettre la main sur des fichiers équivalents côté planetiler et côté pmtiles pour faire en gros la même manip ?

(ma plus grosse difficulté c’est de comprendre la relation exacte entre openmaptiles, pmtiles et mbtiles, une fois que j’aurai compris où ça coince, je devrais réussir à trouver les bons fichiers à modifier)

pmtiles et mbtiles sont deux conteneurs, c’est comme un zip, peut importe ce qu’il y a de dans. Dedans toi tu mets des tuiles vecteurs, ça pourrait être des tuiles raster par ex.

Les tuiles vecteurs utilisent un schéma (une convention de nommage et de classification de la donnée) : openmaptiles, tu pourrais le schéma mapbox ou le nouveau de geofabrik.

Dans un premier temps quand même je te conseille de sauter l’étape PMTiles. Le résultat sera le même. PMTiles n’est utilise que pour améliorer les perf du serveur (donc quand tu as beaucoup de requêtes).

Ok merci beaucoup pour les clarifications ! Je vais essayer de 1) Tester avec des mbtiles (j’aimais bien les pmtiles pour l’hébergement simplifié dans un bucket) 2) Bricoler le profil openmaptiles pour faire mon truc.

Si j’ai des soucis j’en reparlerai ici :slight_smile:

Point d’étape :

  • :white_check_mark: Forker la définition du profil OpenMapTiles
  • :white_check_mark: Regénérer le profil planetiler-OpenMapTiles à partir du fork
  • :white_check_mark: Générer le .mbtiles avec planetiler
  • :white_check_mark: Inspecter le .mbtiles grâce à tileserver-gl

Ça, ça a marché.

Seul souci… Ajouter les tags name:liv sur les layers qui m’intéressent va manifestement me demander un petit peu plus d’effort qu’attendu. Ajouter liv dans la liste des langues prises en charge n’est pas suffisant, ou en tout cas, à l’arrivée, ça n’apparaît pas forcément pour les villages.

Prochaine étape : inspecter de plus près la gestion des name et leur provenance dans les différents fichiers, je soupçonne que la liste de langues sert surtout à l’import des noms depuis wikidata.

Il se peut que j’aie à intégrer mes langues « en dur », dans la définition des layers : ce sera pour le week-end prochain !

En fin de compte, ajouter « liv » a la liste des langues a bien intégré le name:liv des données OSM, et pas uniquement les tags wikidata (le Readme.md de planetiler était peu clair sur ce point). C’est juste l’inspecteur de .mbtiles intégré à TileServer qui ne m’affichait pas toutes les propriétés des objets…

Je travaille sur un rendu distinguant les langues disponibles, on voit bien les villages avec un name:liv (noir) VS ceux qui n’en ont pas (magenta).

Merci à @frodrigo, le dossier est clos, jusqu’à nouvel ordre. La doc de maplibre devrait maintenant me permettre de bricoler mon rendu.