Makina Blog
Stocker un MBTiles volumineux sur une carte SD
Dans le cadre du développement d'une application mobile pour le recensement des espèces au sein du Parc National des Écrins, nous avions pour objectif de stocker les fonds de carte SCAN et ORTHO pour un usage en mode déconnecté.
Nous avons choisi de stocker les fonds tuilés au format MBTiles, et de les stocker sur le support amovible du téléphone (Carte SD).
Les niveaux de zooms attendus et la zone du parc à couvrir représentaient environ 22 Go. Or, le système de fichiers par défaut des cartes SD limite la taille des fichiers à 4 Go.
Nous ne pouvions pas changer le système de fichiers (ex: exFat), car ce n'était pas supporté sans rooter les terminaux. Nous avons donc opté pour un découpage des fichiers MBTiles.
Découper un fichier MBTiles
On découpe un gros fichier MBTiles en plusieurs petits. Le client cartographique du téléphone devra être modifié pour lire le fond de carte depuis plusieurs petits fichiers au lieu d'un seul volumineux.
Le découper par zone, comme par secteur ou vallée, pourrait s'avérer relativement complexe, aussi bien pour la préparation que pour la lecture. Quel fichier dois-je lire quand je visualise une étendue qui est à cheval sur deux zones ? De même pour un découpage rectangulaire (nord, sud, est, ouest...).
Nous avons donc choisi de découper le fichier en colonnes.
Non, pas un fichier par colonne, sinon on en aurait des centaines ! La position (x, y) de chaque tuile (celle qu'on voit dans l'url lorsque celle-ci sont téléchargées) détermine le fichier MBTiles qui va la stocker à partir d'une règle toute simple : on prend le premier chiffre de la valeur du y.
Cette méthode idiote découpera le MBTiles en dix fichiers, de 0 à 9, correspondant à des colonnes abstraites. On aurait pu découper en colonnes par bande juxtaposées, mais cela nous aurait obligé à calculer beaucoup de choses, en fonction des y minimum et maximum.
De cette façon, c'est très simple à fabriquer et, côté client, celui qui consomme les tuiles, on sait immédiat dans quel fichier les tuiles doivent être lues :
- z/12/8.png → fichier 1
- z/7/5.png → fichier 7
Comme on découpe en 10 fichiers qui peuvent peser chacun 4 Go maximum, cela nous donne la possibilité de stocker jusqu'à 40 Go de fond carto sur une carte SD !
Le script qui découpe une pyramide en tuiles en 10 fichiers MBTiles distincts est en ligne. Le code client dépend de la bibliothèque mobile que vous utiliserez (Cordova, RouteMe, OSMdroid, Mapbox, ...), n'hésitez pas à nous poser des questions !
Actualités en lien

Makina Corpus sponsorise la DrupalCon 2023 à Lille
La DrupalCon 2023 revient en France du 17 au 20 octobre et notre équipe y participe ! Pour cette nouvelle édition de la DruplaCon Fr, Makina Corpus s'engage auprès de Drupal et sponsorise l'événement 2023 à Lille.

OpenIG : Webinaire GeoRivière le replay
Visualisez le replay du webinaire OpenIG sur l'application de suivi et de gestion des cours d'eau GeoRivière. Découvrez la présentation et le compte-rendu de l'événement.

Makina Corpus sponsorise les 9èmes Rencontres R
Du 21 au 23 juin 2023, Makina Corpus est sponsor argent des 9èmes Rencontres R à l'Université d'Avignon. Retrouvez notre équipe sur notre stand et participez aux conférences de nos experts.