APRSdroid Créer des cartes MapsForge V3

 

Introduction

Pour générer les cartes Mapsforge V3 un outils nommé Osmosis et le plugin Mapsforge-writer seront utilisés
Osmosis est un outil permettant de manipuler les données Openstreetmap Nous n'allons pas utiliser la dernière version du plugin Mapsforge car celui-ci génère des cartes V5 qui ne fonctionnerai pas avec APRSdroid. Le plugin ne fonctionnant que sur les versions pour lesquelles il a été créé il faudra aussi utiliser une vieille version d’Osmosis.
La procédure de création des cartes à été réalisé sur un système Linux mais vous pouvez l’adapter à un système MacOs ou MSWindows. Les moteurs de recherche vous indiquerons la procédure à utiliser pour ces plateformes
.

Installation de la machine virtuelle JAVA


Osmisis nécessite l’installation d’une machine virtuelle Java. Si elle n’est pas déjà installée ouvrez un terminal et saisissez la commande suivante

sudo apt install -y default-jdk

Cette commande sur une distribution Debain 12 installera OpenJDK 17 LTS et OpenJRE 17 les version open-source de Java
Pour vérifier que l’opération s’est bien déroulée et que la machine virtuelle est opérationnelle saisissez la commande


java -version

le résultat de la commande renvoie le texte suivant :

Openjdk version "17.0.15" 2025-04-15
OpenJDK Runtime Environment (build 17.0.15+6-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.15+6-Debian-1deb12u1, mixed mode, sharing

Installation d’Osmosis


dans un terminal, saisissez les commandes suivantes
cd ~
mkdir osmosis & cd osmosis
wget https://bretth.dev.openstreetmap.org/osmosis-build/osmosis-0.40.1.tgz

tar xvfz osmosis-0.40.1.tgz
rm osmosis-0.40.1.tgz

chmod a+x ~/osmosis/osmosis-0.40.1/bin/osmosis

La première commande vous place à la racine de votre dossier personnel.
La deuxième crée un dossier nommé « osmosis » Et vous place dans ce dossier.

La troisième commande va charger l’archive compressée d’Osmosis 0.40.1, dernière version permettant de générer des carte Mapsforge V3
La quatrième va extraire l’archive compressée téléchargée
La cinquième va supprimer l’archive devenue inutile

La sixième va rendre exécutable le fichier osmosis
en saisisssant la commande suivante dans le dossier « osmosis »

osmosis-0.40.1/bin/osmosis

vous devriez voir le texte de d’aide d’osmosis qui s’affiche dans le terminal.

Installation du plugin Mapsforge V3

dans un terminal executer les commandes suivantes

cd ~/
wget https://????/mapsforge-writer-V3.tar.gz
tar xzvf mapsforge-writer-V3.tar.gz
rm mapsforge-writer-V3.tar.gz


la première commande vous place à la racine de votre dossier personnel.
la deuxième télécharge l'archive compressée du plugin Mapsforge V3.
la troisième extrait le plugins dans le dossier caché à la racine de votre dossier personnel « .openstreetmap/osmosis/plugins »

la quatrième supprime l'archive devenue inutile.
avec la commande

ls ~/.openstreetmap/osmosis/plugins/

vous devriez voir le nom du fichier plugin qui s'affiche dans le terminal

mapsforge-map-writer-0.3.0-jar-with-dependencies.jar

Téléchargement des données Openstreetmap (OSM)

les données OSM seront téléchargées depuis le site Geofabrik. (site en Anglais) Ce site génère très régulièrement, environ toutes les 24h00, des sources de données à partir des dernières données OSM permettant d'avoir des cartes constament à jour
Les données téléchargeables vont de la planète entière en passant par le continent, le pays, la région

Nous allons télécharger les données par région au formats « PBF » pour la France elles sont accessibles à l’adresse https://download.geofabrik.de/europe/france.html.

Sélectionnez donc le fichier « .pbf » correspondant à la région désirée et sauvegarder le dans un emplacement de votre dossier personnel par exemple dans le dossier « osmosis » créé plus haut.
Pour la suite de notre opérations nous allons supposer que nous avons télécharger le fichier « auvergne-latest.osm.pbf» et que nous l’avons sauvegardé dans le dossier « osmosis ».

Ouvrez un terminal si ce n’est déjà fait et placez vous dans le dossier « osmosis ». à l’aide de la commande suivante

cd ~/osmosis

vérifiez que votre fichier est bien présent dans le dossier en saisissant la commande
ls

le nom du fichier « auvergne-latest.osm.pbf » devrai apparaître dans la sortie de la commande.

Création de la carte

la création de la carte se fait à l’aide d’une seule commandes

~/osmosis/osmosis-0.40.1/bin/osmosis --rb file=auvergne-latest.osm.pbf --mw file=auvergne.map

Cette commande appelle l’exécutable « osmosis » et lui indiquant que le fichier d’entrée est au format « .pbf » (option -- rb ) son nom est « auvergne-latest.osm.pbf »
l’option « -- mw » demande à « osmosis » d’utiliser le plugin « Mapsforge-writer » et de diriger les données en sortie vers le fichier « auvergne.map »

L'exécution de la commande va prendre un certain temps et afficher plusieurs lignes d’informations sur l’état d’avancement de la tâche. La dernière ligne à s’afficher indiquera le temps passé à génerer la carte

INFOS: Total execution time: 367881 milliseconds.

Sur un portable déjà ancien équipé d’un disque SSD, de 16Go de RAM et d'un processeur Intel Core I5, la génération de la carte « auvergne.map » necessite environ 6mn.

la commande 

ls 

affichera la liste des fichiers contenu dans le dossier courant (« osmosis » dans notre cas) et vous devriez voir le fichier « auvergne.map »

vous pourrez utiliser cette carte sur votre périphérique Android en suivant les instructions de la page APRSDROID utilisation de cartes hors ligne

Fusion de plusieurs sources de données pour générer une carte unique

Osmosis permet de fusionner les données de plusieurs fichiers source de données OSM.
Télécharger les fichiers des régions à fusionner et enregistrez les dans un emplacement de votre dossier personnel par exemple le dossier « osmosis »
dans notre exemple nous allons créer un fichier de données fusionnant la région Auvergne et la région Limousin les fichiers de données se trouvant dans le dossier « osmosis »

la fusion des deux régions se fait à l’aide de la commande

~/osmosis/osmosis-0.40.1/bin/osmosis --rb auvergne-latest.osm.pbf --rb limousin-latest.osm.pbf --merge --wb file=auvergne-limousin-latest.osm.pbf

l’exécution de la commande va prendre un certain temps en affichant plusieurs lignes d’information dans le terminal
la fin de la tâche sera signalé par une dernière ligne

INFOS: Total execution time: 67308 milliseconds.

Sur un portable déjà ancien équipé d’un disque SSD, de 16Go de RAM et d'un processeur Intel Core I5, la génération des données fusionées nécessite environ 1mn

la commande

ls

permettra de vérifier que le fichier « auvergne-limousin-latest.osm.pbf » a bien été généré.

Il ne vous reste plus qu’à générer la carte des deux régions selon la procédure décrite ci-dessus avec la commande

~/osmosis/osmosis-0.40.1/bin/osmosis --rb file=auvergne-limousin-latest.osm.pbf --mw file=auvergne-limousin.map

Vous pouvez fusionner plus de deux régions. Dans notre exemple, pour fusionner l’Auvergne, le Limousin et Rhône-Alpes la commande deviendra
~/osmosis/osmosis-0.40.1/bin/osmosis --rb auvergne-latest.osm.pbf --rb limousin-latest.osm.pbf --rb rhone-alpes-latest.osm.pbf --merge --merge --wb file=auvergne-limousin-rhone-alpes-latest.osm.pbf
dans les paramètres de la commande, il faudra ajouter une option « --merge » par fichier source supplémentaire. Pour 3 fichiers source il faudra ajouter deux fois l'option et pour quatre, l'option apparaitra trois fois et ainsi de suite.
la carte sera générée par la commande habituelle


~/osmosis/osmosis-0.40.1/bin/osmosis --rb file=auvergne-limousin-rhone-alpes-latest.osm.pbf --mw file=auvergne-limousin-rhone-alpes-latest.map

plus la taille du fichier source sera importante, plus les besoins en ressources machines augmenterons. Si la génération de la carte échoue avec l'erreur d'execution suivante

GRAVE: Thread for task 1-rb failed
java.lang.OutOfMemoryError: Java heap space
    at org.mapsforge.map.writer.util.OSMUtils.extractSpecialFields(OSMUtils.java:114)
    at org.mapsforge.map.writer.model.TDNode.fromNode(TDNode.java:53)
    at org.mapsforge.map.writer.RAMTileBasedDataProcessor.addNode(RAMTileBasedDataProcessor.java:100)
    at org.mapsforge.map.writer.osmosis.MapFileWriterTask.process(MapFileWriterTask.java:162)
    at crosby.binary.osmosis.OsmosisBinaryParser.parseDense(OsmosisBinaryParser.java:139)
    at crosby.binary.BinaryParser.parse(BinaryParser.java:124)
    at crosby.binary.BinaryParser.handleBlock(BinaryParser.java:68)
    at crosby.binary.file.FileBlock.process(FileBlock.java:135)
    at crosby.binary.file.BlockInputStream.process(BlockInputStream.java:34)
    at crosby.binary.osmosis.OsmosisReader.run(OsmosisReader.java:37)
    at java.base/java.lang.Thread.run(Thread.java:840)
 

c'est que la  taille mémoire maximale attribué par défaut  à la pile d’exécution de machine virtuelle JAVA (JVM) a été atteinte. On peux esayer d'augmenter la taille de la pile en exécutant la commande

JAVACMD_OPTIONS="-Xmx8G"

avant la commande de génération de la carte. 8G que 8 Gigaoctets de mémoire seront attribué à la pile d’exécution à la JVM. Cette taille est à adapper à la capacité mémoire de votre ordiateur et ne devrai pas dépasser la moitié de celle-ci. Cet ajustement ne suffit pas toujours et il est plus efficace de passer l'option « type=hd » à la ligne de commande générant la carte qui deviendra

Cette option demandera a Osmosis d'utiliser le disque dur pour stocker les données temporaires et non la mémoire. Le temps d’exécution de la tâche en sera beaucoup augmenté mais elle pourra s'effectuer jusqu'au bout sans échouer.

la génération de la carte "auvergne à l'aide de la commande

~/osmosis/osmosis-0.40.1/bin/osmosis --rb file=auvergne-limousin-rhone-alpes-latest.osm.pbf --mw file=auvergne-limousin-rhone-alpes-latest.map type=hd

s'est terminée avec le message

INFOS: Total execution time: 11293194 milliseconds.

Sur un portable déjà ancien équipé d’un disque SSD, de 16Go de RAM et d'un processeur Intel Core I5, le temps d'exécution de la tâche à été de plus de trois heures pour un fichier sources de 699 Mo. La carte générée atteignant la taille de 434,4 Mo 

Visualisation des cartes Mapsforge sur ordinateur

Vous pouvez visualiser les cartes générées sans avoir à les charger sur votre périphérique Android à l’aide d’un outil nommé Cruiser. Cet outil existe en deux déclinaison une version Android et une version pour ordinateur.avec système d’exploitation Linyx, MacOs et Windows.
Cruiser nécessite une machine virtuelle JAVA pour pouvoir fonctionner
Pour installer Cruiser exécutez successivement les commandes suivantes dans un terminal

cd ~/
wget https://github.com/devemux86/cruiser/releases/download/5.6.2/cruiser-5.6.2.zip
unzip cruiser-5.6.2.zip
rm cruiser-5.6.2.zip
chmod a+x cruiser/cruiser.sh

la première commande vous placera à la racine de votre dossier personnel
la deuxième va télécharger l’archive compressée de Cruiser
la troisième va extraire l’archives dans un dossier nommé « cruiser »
la quatrième va supprimer l’archive devenue inutile
la cinquième va rendre excitable le script de démarrage de Cruiser.
Vous pouvez ouvrir maintenant Cruiser avec la commande

~/cruiser/cruiser.sh

Pour chargez les cartes utilisez le menu « Carte » → « Ouvrir les cartes » et allez sélectionner la carte à afficher.