Makina Blog

Le blog Makina-corpus

Construire un MBTiles le long d'un itinéraire


Avec Landez, la zone couverte d'un fichier MBTiles peut suivre une ligne!

Lorsque l'on crée un fichier MBTiles, avec Tilemill par exemple, la zone couverte est rectangulaire (bounding box).

Dans cet article, nous allons utiliser Landez pour construire un MBTiles dont la zone couverte suit un itinéraire de randonnée.

Initialement, `Landez a été développé pour construire des fonds de carte à la demande, avec pour objectif de permettre à des touristes d'avoir un carnet de voyage disponible hors connexion. Il s'agissait donc de couvrir la zone autour de chaque escale.

Pour un itinéraire, nous pouvons procéder de la même façon ! Pour chaque point de l'itinéraire, nous allons ajouter une zone de couverture large pour les niveaux de zoom faibles, et réduite pour les niveaux de zoom élevés.

from landez import MBTilesBuilder

# Un rayon pour les zooms faibles, l'autre # pour les zooms élevés. RADIUS_LARGE = 0.01 #  1 km RADIUS_SMALL = 0.05 #  500 m

# Niveaux de zooms pour le monde entier GLOBAL_ZOOMS = range(8) # Niveaux de zooms pour les rayons larges LOW_ZOOMS = range(8, 13) # Niveaux de zooms pour les rayons réduits HIGH_ZOOMS = range(13, 17)

mbtiles = MBTilesBuilder()

# On couvre le monde entier aux zooms faibles mbtiles.add_coverage(bbox=(-180, -90, 180, 90), zoomlevels=GLOBAL_ZOOMS)

# Itère sur les coordonnées qui consistuent # l'itinéraire coords = Trek.geometry.coords

for (lng, lat) in coords: # Construit les emprises à partir des rayons large = (lng - RADIUS_LARGE, lat - RADIUS_LARGE, lng + RADIUS_LARGE, lat + RADIUS_LARGE) small = (lng - RADIUS_SMALL, lat - RADIUS_SMALL, lng + RADIUS_SMALL, lat + RADIUS_SMALL)

# Ajoute ces emprises au MBTiles à construire mbtiles.add_coverage(bbox=large, zoomlevels=LOW_ZOOMS) mbtiles.add_coverage(bbox=small, zoomlevels=HIGH_ZOOMS)

# Télécharger et packager ! mbtiles.run()

Aussi simple que ça !

Nous allons mettre ce fonctionnement en place pour le développement de l'application mobile de Geotrek qui permettra de consulter les itinéraires et les fonds en mode déconnecté.

Actualités en lien

Geotrek et OpenS­treet­Map : Mise en place d’une passe­relle pour une connais­sance du terri­toire enri­chie

08/09/2025

Dans l’uni­vers des logi­ciels open-source, les plus belles inno­va­tions naissent souvent de la rencontre entre des commu­nau­tés qui partagent les mêmes valeurs. Aujour­d’hui, nous célé­brons une avan­cée majeure pour Geotrek : la créa­tion d’une passe­relle avec OpenS­treet­Map (OSM), la plus grande base de données carto­gra­phique colla­bo­ra­tive au monde. Plus qu’une simple fonc­tion­na­lité, ce projet est le fruit d’un travail d’in­gé­nie­rie et de recherche appro­fondi.
Voir l'article
Image
Logo d'illustration pour la passerelle entre OSM et Geotrek

Instal­ler Geotrek : avec ou sans segmen­ta­tion dyna­mique ?

08/09/2025

Geotrek-admin propose deux modes de fonc­tion­ne­ment pour gérer les objets liés aux tronçons : avec ou sans segmen­ta­tion dyna­mique. Ce choix a un impact impor­tant sur la manière dont sont stockées et gérées les données, et sur les possi­bi­li­tés d’édi­tion, de cohé­rence topo­lo­gique et d’in­ter­opé­ra­bi­lité avec d’autres systèmes. Dans cet article, on vous explique ce qu’est la segmen­ta­tion dyna­mique ainsi que le réfé­ren­ce­ment linéaire, ses avan­tages, ses limites, et dans quels cas il est perti­nent (ou non) de les utili­ser.
Voir l'article
Image
Réseau de tronçons dans Geotrek

Geotrek-Mobile, zones sensibles désor­mais acces­sibles

17/07/2025

Une nouvelle fonc­tion­na­lité vient enri­chir l’ap­pli­ca­tion Geotrek-Mobile : l’af­fi­chage des zones sensibles direc­te­ment sur la carte, le long des itiné­raires.
Voir l'article
Image
Geotrek-Mobile contenus outdoor

Inscription à la newsletter

Nous vous avons convaincus