Réaliser des cartes BSB (.kap) à partir d’images scannées (cartes ou photos)
Généralités
- Une carte électronique, c’est le rassemblement de données graphiques et de leur géo-référencement : à un point de l’image peut être associé ses coordonnées géographiques. Les données graphiques peuvent êtres de simples images (cartes « raster » ) ou calculées (cartes vectorielles) et les coordonnées de chaque point sont déterminées par calcul en fonction des paramètres de la carte.
La plupart des cartes électroniques sont protégées de la copie par cryptages des données ou (et) par un format propriétaire. Cependant, il existe quelques formats dont les spécifications sont publiques. Par exemple le format S57 pour les cartes vectorielles. Certains pays fournissent d’ailleurs gratuitement les cartes de leur côtes dans l’un ou l’autre de ces formats.
Ces cartes sont lisibles par quelques programmes de navigation et, comme leur format est connu, de nombreux programmeurs ont créé des outils qui permettent d’en réaliser à partir de fichiers graphiques.
- Le format BSB
BSB Electronic Charts LLC est le nom de l’entreprise qui a élaboré le format BSB. L’abréviation « BSB » provient des initiales des fondateurs de l’entreprise. Maptech a racheté BSB Electronic Charts LLC en 1997. Ce format ne devrait donc pas être vraiment public, mais ses spécifications sont connues, au moins jusqu’à la version 2. De ce fait, quelques programmeurs ont créé des outils, gratuits ou payants, qui permettent de créer des cartes à partir de fichiers image et d’autres qui permettent de les lire.
Le format BSB est un format de carte « raster ». Le logiciel OpenCPN sait lire les carte BSB version 1 et 2. Les cartes BSB commercialisées par la société Maptech sont actuellement de version 4 ou 5.
MaxSea lit en principe les cartes BSB version 1 et 2 mais, pour une raison qui m’est inconnue, ne le fait pas pour les cartes réalisées suivant la méthode décrite ici … Peut-être est-ce une question d’orientation : « … Maxsea est compatible avec tous type de carte BSB, tant qu’elles ne sont pas orientées nord. » peut-on lire dans l’aide.
La suite de l’article traite de la réalisation sous Windows de cartes BSB lisibles par OpenCPN et Seaclear.
Réalisation de la carte
- Pour faire une carte, il faut :
- Un fichier image au format TIFF type couleurs indexées (palette), 127 couleurs utilisées au maximum ;
- Les coordonnées géographique de trois points non alignés de l’image (en théorie 2 points suffisent pour peu qu’ils ne soient ni sur la même latitude, ni sur la même longitude et si on connaît les paramètre de projection)
- Un certain nombre de petit programmes.
- Les étapes de la conversion
- Convertir le fichier image dans le format requis Tiff et BMP. Plutôt que d’utiliser un logiciel de retouche d’image, on fait appel à l’un ou l’autre des deux programmes suivant : nconvert (Pierre-E Gougelet) ou convert (ImageMagick). Ce sont des commandes assez semblables et très puissantes qui existent sous Windows et Linux. On obtient les fichiers images au format TIFF et BMP. Par exemple : à partir de Ma-carte.jpg, on obtient Ma-carte.tif et Ma-carte.bmp
- Calibrer l’image : On utilise le logiciel MapCal2 fourni avec SeaClear (Il en existe d’autres, mais celui-ci est assez facile d’utilisation). On obtient le fichier de calibrage CHARTCAL.DIR.
- Créer le fichier de calibration de la carte. On utilise le programme mc2bsbh.exe qui, à partir du fichier CHARTCAL.DIR va créer le ficher d’entête (header) de la carte. A partir de CHARTCAL.DIR on obtient le fichier Ma-carte.hdr
- Créer la carte On utilise le programme tif2bsb.exe qui, à partir du fichier image au format TIFF et du fichier d’entête va créer la carte au format BSB (.kap) . A partir de Ma-carte.tif et de Ma-carte.hdr on obtient le fichier Ma-carte.kap
….. Ouf !
Les bons outils
Evidement, plutôt que de taper des lignes de commandes où la moindre erreur de frappe est fatale, on va se doter des outils qui vont permettre de faire tout cela en deux coups de souris sans se poser de questions. Pour cela, on va se servir de scripts exécutables (les fichiers « xxx.bat » sous MS-DOS et Windows)
- D’abord, on construit une arborescence qui permet d’organiser le travail.
- On créer le répertoire KAP-Maker où le travail sera effectué.
- Dans ce répertoire, on crée les sous-répertoires
- Images dans lequel on mettra les images à partir desquelles on veut créer les cartes (scannes ou photos). Le format graphique de ces images n’a pas d’importance.
- BMP dans lequel se trouveront les fichier images transformé au format bmp
- TIF dans lequel se trouveront les fichier images transformé au format tiff
- Programmes dans lequel on mettra toutes les programmes décrits précédemment.
- KAP dans lequel se trouveront les cartes créées.
Et, accessoirement,
- Calibration dans lequel une sauvegarde du fichier de calibration CHARTCAL.DIR généré par MapCal2 sera automatiquement mise.
- HDR dans lequel seront mises les sauvegardes des fichier header des cartes.
- Si on ne les a pas encore, on se procure sur Internet les programmes requis :
- nconvert.exe
- tif2bsb.exe
- MapCal2
- mc2bsbh.exe
- Puis, avec un éditeur de texte (WordPad) on écrit les petits scripts :
- 1-Traitement-Images.bat,
- 2-Genere-Kap.bat
- 2-Traitement-images_127.bat qui sont donnés en annexe (on peut faire des « copier-coller », c’est même conseillé). On les place dans le répertoire KAP-Maker
Une fois tout installé, on peut faire les cartes.
Pour ceux qui ont la flemme de créer les répertoires, de chercher les programmes sur Internet et de taper les scripts, j’ai mis une archive « self-extracting » à l’adresse suivante : http://www.plaisance-pratique.com/I...
Il suffit de l’exécuter là où on veut mettre le répertoire KAP-Maker et tout sera en place, programmes compris.
- Pour faire des cartes :
- Mettre les fichiers images dans le répertoire Image (quel que soit leur format).
- Double-cliquer sur 1-Traitement-Images.bat
- Ouvrir, avec MapCal2, les fichiers xxx.bmp générés dans le répertoire BMP et les calibrer.
- Quand tout est calibré, double-cliquer sur « 2-Genere-Kap.bat »
C’est fini : les cartes se trouveront dans le répertoire KAP.
- Remarques :
- En théorie, pour un meilleur rendu des couleurs à partir de photos, on peut utiliser la commande « 1-Traitement-images_127.bat », mais il y a un risque que des raies noires apparaissent sur les cartes dans OpenCPN. Dans la pratique, on ne voit pas beaucoup de différence.
- Le programme Mapcal2 implémente le fichier de calibration CHARTCAL.DIR à chaque fois que l’on calibre une image : on peut donc calibrer plusieurs images avant de créer les cartes correspondantes. La commande 2-Génère-Kap.bat créera en une seule fois toutes les cartes dont les images ont été référencées. Si tous les fichiers images n’ont pas été référencés (pas d’entrée dans CHARTCAL.DIR), elle créera des fichiers KAP vide pour ces derniers.
- En théorie, pour un meilleur rendu des couleurs à partir de photos, on peut utiliser la commande « 1-Traitement-images_127.bat », mais il y a un risque que des raies noires apparaissent sur les cartes dans OpenCPN. Dans la pratique, on ne voit pas beaucoup de différence.
Cartes à partir de photos Google Earth
Ces cartes peuvent être intéressantes si l’on ne dispose pas de cartes précises et fiables du lieu ou l’on souhaite aller. Le cas typique, c’est un lagon, pas ou mal cartographié où l’on souhaite s’aventurer entre les « patates » Il faut évidemment disposer d’une bonne résolution, ce qui suppose des photos aériennes du lieu, car les images satellites ne suffisent pas car toutes les îles de Polynésie ne sont pas couvertes à des résolutions suffisantes.
- Pour réaliser une carte, il suffit d’enregistrer l’image Google Earth, de la traiter comme décrit précédemment et de la géo-référencer avec MapCal2.
Cependant, un programmeur génial du nom de Paul Higgins a conçu un outil magique qui fait tout le travail en un clic ! Nom du programme : GE2KAP.rex.
- GE2KAP
Le programme a été écrit en langage ooREXX qui est un langage de programmation interprété, comme le vénérable Basic ou l’excellent Python. Il faut donc d’abord installer l’interpréteur ooRexx sur l’ordinateur avant d’utiliser GE2KAP.
En suite, c’est simple comme bonjour. Le programme ouvre une unique fenêtre, puis démarre Google Earth. Bien entendu il faut être connecté à Internet. Il suffit alors de zoomer sur la zone qui nous intéresse jusqu’à obtenir le niveau de détail souhaité. Puis dans la fenêtre du programme, il faut entrer le nom que l’on veut donner à la carte et cliquer sur le bouton « Create Chart ». C’est tout ! - Remarques :
- Pas besoin d’aligner l’image sur le nord : le programme le fait lui-même.
- On peut laisser Google Earth en fenêtre réduite : le programme le met lui-même en plein écran au moment où il prend les données graphiques.
- Le programme fait une copie de la fenêtre Google Earth : il faut désactiver la grille et les outils de navigation dans Google Earth si on ne veut pas les voir sur la carte.
- Si on veut une couverture d’une zone plus grande que l’écran, il faut faire plusieurs cartes qui se chevauchent légèrement. OpenCPN gèrera la mosaïque sans problème
- Si on coche la case correspondante, le programme fournit également l’image au format BMP et le fichier CHARTCAL.DIR qui permet de refaire une carte selon la méthode décrite. (il faut mettre le fichier bmp dans Images et le fichier CHARCAL.DIR dans BMP, lancer la commande 1-Traitement-images.bat puis, dans la foulée, la commande 2-Genere-Kap.bat)
- Un « plugin » d’OpenCPN permet également de créer directement la carte correspondant à la zone d’OpenCPN affiché sur l’écran en overlay. Je n’ai pas expérimenté cette fonction. Voir article : http://www.plaisance-pratique.com/o...
- MSVD
Le programme GE2KAP présente l’inconvénient de limiter la carte à la taille de l’écran : si on veut couvrir une zone plus grande en une seule carte tout en conservant le même niveau de détail, il faut assembler plusieurs images Google Earth en une seule et la calibrer avec MapCal2. Mais réaliser un assemblage propre des images est délicat.
Pour régler ce problème, il existe un programme très intéressant : MSVD (Microsoft VirtualEarth Satellite Downloader) Ce programme est payant si on veut accéder aux définitions qui nous intéressent car la version gratuite est bridée en zoom. Son utilisation est simple : on lui donne une zone par sa latitude supérieure, sa latitude inférieure, sa longitude gauche, sa longitude droite et le zoom souhaité. A partir de ces informations, le programme télécharge les données graphiques de la zone au format JPG. Les données graphiques téléchargées sont constituées d’un patchwork de petits fichiers jpeg de 10 k chacun environ. Il faut les assembler pour obtenir l’image finale. Le programme comporte heureusement un outil qui fait cela et fournit l’image au format BMP. Il suffit en suite de la calibrer avec MapCal2 pour obtenir une carte. - Remarques :
- Les cartes ainsi obtenues sont exemptes des annotations supplémentaires que Google Earth rajoute.
- Même s’il est tentant de réaliser des images et des cartes détaillées de grande surface, il ne faut pas perdre de vue que les fichiers correspondants sont eux aussi de grande taille. Les ordinateurs de faible puissance ou qui n’ont pas énormément de mémoire vive auront du mal à exploiter de trop grandes cartes. (je pense aux ordinateurs portables)
- Attention : toutes les zones de la Terre ne sont pas couvertes avec la même résolution. Si on fixe un zoom trop élevé pour la zone que l’on veut télécharger, les images seront vides.
- La saisie des limites de la zone se fait en degré décimal, au format numérique US. Le programme fournit un outil de conversion, mais celui-ci fait appel aux variables d’environnement du système : sur un Windows français, il met une virgule au résultat car, en France, le séparateur décimal est la virgule alors qu’aux USA c’est le point. Si on fait un « copier-coller » à partir du champ de conversion, il faut remplacer la virgule par un point. Une autre solution est de définir le point comme séparateur décimal du système (Panneau de configuration/Option régionales/Personnaliser../ Symbole décimal)
- Les latitudes sud et les longitudes ouest sont indiquées par le signe ‘–‘ Par exemple 32° 41’ W = -32.6833343505859
- En haute résolution, le nombre de fichiers JPEG téléchargés est vite important et la taille de l’image finale aussi : dans l’exemple d’Akamaru donné ci-après, la zone couverte fait environ 3x3 milles et le zoom a été réglé à 18, le maximum étant 19. Le nombre de petits fichiers JPEG téléchargés est de 1485 (heureusement que le programme fournit l’outil qui permet de les assembler automatiquement !) et la taille du fichier image BMP générée est de 190 Mo.
J’ai mis un exemple d’image obtenu avec MSVD à l’adresse : http://www.plaisance-pratique.com/I... (archive self-extracting). J’ai inclus le fichier de calibration CHARTCAL.DIR, ce qui permet de faire la carte BSB. Akamaru, est dans les Gambier.
Liens divers :
- Mapcal2 (Seaclear) : www.sping.com/seaclear/
- OoRexx : http://www.oorexx.org/download.html
- GE2KAP : http://www.gdayii.ca/index.php?p=1_...
- MSVD : http://www.allallsoft.com/mvsd/
Annexe : Scripts de commande
Les lignes précédées de REM sont facultatives.
Fichier : Traitement-Images_127.bat
REM transforme tous les fichiers images du répertoire Images en BMP
REM et en TIF 128 couleurs
REM Les fichiers BMP sont placés dans le répertoire BMP et les fichiers TIF dans le
REM répertoire TIF
REM Transforme les fichiers images en BMP
cd Images
..\Programmes\nconvert -out bmp *.*
move *.bmp ../BMP
cd ..
REM Transforme les fichiers BMP en fichiers TIF 127 couleurs utilisées
REM Passage par format GIF pour forcer la création par la suite d’un fichier TIFF
REM de type couleurs indexées (palette)
cd BMP
..\Programmes\nconvert -colors 127 -floyd -out gif *.bmp
..\Programmes\nconvert -c 3 -colors 127 -out tiff *.gif
del *.gif
move *.tif ../TIF
cd ..
Fichier : Traitement-Images.bat
REM transforme tous les fichiers images du répertoire Images en BMP
REM et en TIF 64 couleurs
REM Les fichiers BMP sont placés dans le répertoire BMP et les fichiers TIF dans le
REM répertoire TIF
REM Transforme les fichiers images en BMP
cd Images
..\Programmes\nconvert -out bmp *.*
move *.bmp ../BMP
cd ..
REM Transforme les fichiers BMP en fichiet TIF 64 couleurs utilisées
REM Passage par format GIF pour forcer la création par la suite d’un fichier TIFF
REM de type couleurs indexées (palette)
cd BMP
..\Programmes\nconvert -colors 64 -floyd -out gif *.bmp
..\Programmes\nconvert -c 3 -colors 64 -out tiff *.gif
del *.gif
move *.tif ../TIF
cd ..
Fichier : Genere-KAP.bat
ECHO OFF
cd BMP
..\Programmes\mc2bsbh CHARTCAL.DIR
copy CHARTCAL.DIR ..\Calibration
move *.hdr ../TIF
cd ..\TIF
SETLOCAL ENABLEdelayedExpansion
SETLOCAL ENABLEextensions
for %%A in (*.tif) do (
..\Programmes\tif2bsb -c 127 %% nA.hdr %% nA.tif %% nA.kap
)
ENDLOCAL
move *.kap ..\KAP
move *.hdr ..\HDR
cd ..
Ces trois fichiers *.bat doivent se trouver dans le répertoire KAP-Maker.