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 article DrupalCamp 2024
06/03/2024

Makina Corpus, parte­naire du Drupal­Camp 2024

Nous sommes fiers d’an­non­cer que Makina Corpus est le spon­sor du Drupal­Camp à Rennes. Notre expert vous y propose une confé­rence « migrer de Drupal 7 à Drupal 10 ».

Voir l'article
Image
AFUP Meet-up DBToolsBundle
15/02/2024

Meetup AFUP Nantes de février : parlons anony­mi­sa­tion avec le DbTools­Bundle Symfony

Notre expert Symfony/PHP prend la parole au Meet-up de l’AFUP pour présen­ter le nouveau bundle Symfony déve­loppé par Makina Corpus : le DbTools­Bundle !

Voir l'article
Image
Encart référence Prospective
10/01/2024

Connaissez-vous la "Prospective" ?

Lors de l'Assemblée Générale du réseau MFQM au mois de juin dernier, nous avons eu la chance d'assister à une intervention de Pamela Bellier et Emmanuel Turbé sur la définition même de la Prospective et de ses enjeux.

Voir l'article

Inscription à la newsletter

Nous vous avons convaincus