Les cartes hors ligne ne sont pas optionnelles dans les applications tactiques. Les opérateurs dans des environnements contestés ou éloignés ne peuvent pas compter sur des serveurs de tuiles. Le paquet de cartes doit se trouver sur l'appareil, être interrogeable sans accès internet et suffisamment petit pour tenir dans le stockage disponible. Deux formats de packagisation de tuiles dominent l'usage tactique : MBTiles — le standard établi basé sur SQLite — et PMTiles — un format plus récent à fichier unique conçu pour l'accès aléatoire optimisé pour le cloud.

Format MBTiles : structure du conteneur SQLite

MBTiles est une spécification ouverte maintenue par Mapbox qui emballe les tuiles de carte — raster ou vectorielles — dans une base de données SQLite. Le schéma de base de données est minimal : deux tables requises et une optionnelle.

La table tiles stocke les données réelles des tuiles : zoom_level INTEGER, tile_column INTEGER, tile_row INTEGER et tile_data BLOB. Le système de coordonnées utilise la convention TMS (Tile Map Service), où l'axe Y est inversé par rapport à la convention XYZ plus courante : tile_row = (2^zoom - 1) - y. Cette inversion est une source courante de bugs lors de l'intégration de MBTiles avec des bibliothèques de cartes utilisant les coordonnées XYZ.

L'index composé sur (zoom_level, tile_column, tile_row) est l'index de performance critique — sans lui, les recherches de tuiles individuelles dégénèrent en scans complets de table à mesure que la base de données grandit.

PMTiles : format à fichier unique avec accès aléatoire

PMTiles a été développé par Protomaps comme alternative optimisée pour le cloud à MBTiles. Un seul fichier PMTiles contient toutes les tuiles plus un index interne qui permet de localiser n'importe quelle tuile avec au plus deux requêtes HTTP de plage, quelle que soit la taille totale du fichier.

La structure interne de PMTiles consiste en un en-tête fixe de 127 octets, un répertoire racine et des répertoires feuilles. Chaque entrée de répertoire mappe une coordonnée de tuile (encodée comme un index de courbe de Hilbert pour la localité spatiale) à un décalage d'octet et une longueur dans le fichier.

Le compromis : PMTiles est immuable par conception. L'ajout ou le remplacement de tuiles individuelles nécessite de réécrire le fichier. Pour les applications tactiques où le paquet de cartes est remplacé en entier, ce n'est pas un problème.

Génération de tuiles : tippecanoe, MapTiler, GDAL

tippecanoe est l'outil standard pour générer des tuiles vectorielles à partir de données GeoJSON, FlatGeobuf ou GeoPackage. Pour les applications tactiques, les paramètres clés de tippecanoe sont : --maximum-zoom (typiquement 16 pour l'usage d'infanterie, 12–14 pour les opérations de véhicules) et --minimum-zoom (0 pour une vue d'ensemble de la zone, 6–8 pour éviter des fichiers inutilement volumineux).

MapTiler Engine gère la génération de tuiles raster : orthophotos, raster satellite, terrain DTED. Les paramètres clés sont le format des tuiles de sortie (PNG pour les images avec transparence, JPEG pour le raster pur à 75–85 de qualité, WebP pour une taille de fichier réduite).

GDAL fournit des capacités similaires de génération de tuiles raster via le script gdal2tiles.py. Pour les rasters sources de grande taille, le temps de génération est significatif — 8 à 16 heures pour un jeu de tuiles complet d'un pays sur une seule station de travail.

Stratégies de mise à jour partielle

Le remplacement complet du paquet de cartes est coûteux opérationnellement. Les stratégies de mise à jour partielle résolvent cela avec des paquets delta — des fichiers MBTiles ne contenant que les tuiles modifiées. L'opération de fusion sur l'appareil utilise la syntaxe SQLite INSERT OR REPLACE INTO tiles.

Intégration dans Android et iOS

Sur Android, MapLibre GL Native est le renderer de cartes open source standard pour les applications nécessitant un support de tuiles vectorielles hors ligne. Il accepte les sources MBTiles via une implémentation personnalisée LocalTilesSource. Une application tactique peut afficher simultanément une couche raster de base depuis des images satellites MBTiles, une couche vectorielle de superposition depuis des caractéristiques de terrain MBTiles et une couche d'annotation dynamique depuis sa propre base de données SQLite.

Insight clé : La décision de packagisation la plus significative sur le plan opérationnel est la sélection des niveaux de zoom. Packager les niveaux de zoom 0–18 pour un déploiement à l'échelle d'un pays produit des fichiers 10 à 50 fois plus grands que les niveaux 6–16. Pour l'usage d'infanterie, les niveaux 8–17 sont la plage opérationnelle. Ne packagisez jamais plus de niveaux de zoom que l'exigence opérationnelle ne le demande.