Makina Blog

Le blog Makina-corpus

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

Image
Encart Journée PRNSN 2024
20/11/2024

Nouvelle Jour­née Tech­nique du PRNSN : le numé­rique dans les pratiques spor­tives de nature

Le 27 novembre 2024, Mont­pel­lier accueille la 18e Jour­née tech­nique du réseau natio­nal des sports de nature, orga­ni­sée par le PRNSN.

Voir l'article
Image
Guide ODbL
15/11/2024

Mini-guide à l’usage des collec­ti­vi­tés : l’Open Data, entre néces­sité et oppor­tu­nité

Tout ce que vous avez toujours voulu savoir sur l’Open Data. Petit guide à desti­na­tion des collec­ti­vi­tés pour l’ap­pré­hen­der et se l’ap­pro­prier.

Voir l'article
Image
Encart Capitole Du Libre 24
07/11/2024

Makina Corpus, spon­sor et confé­ren­cier au Capi­tole du Libre 2024

Les 16 et 17 novembre à Toulouse, Makina Corpus s’en­gage aux côtés de la commu­nauté du logi­ciel libre en spon­so­ri­sant le Capi­tole du Libre. Ne manquez pas la confé­rence de notre expert Drupal, Simon George.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus