Outils pour créer des cartes au format KAP

MdJ publié le 11 septembre 2012 18:57:42 Article en WikiHEO

Suite au très bon article « Créer des cartes .kap lisibles par OpenCPN », j'ai voulu simplifier l'opération en réalisant un petit programme qui génère directement des cartes KAP à partir d'une image TIFF.

Voir d'abord l'article <> : http://www.hisse-et-oh.com/articles/article.php?article=1165

J'ai noté une erreur dans le programme, dans certain cas rares, il ne repère pas que l'image TIFF dépasse 128 couleurs et génère alors une image incorrecte.

Assurez-vous de convertir le tiff en 128 couleurs au plus.
Perso j'utilise GraphicsMagics http://www.graphicsmagick.org/utilities.html
avec la commande gm convert input.tiff -colors 128 output.tiff.

Afin de simplifier la fabrication de carte KAP, j'ai donc fait une petit programme sur la base des open-sources existant libbsb, opencpn et quelques autres en utilisant la librairie libtiff qui permet de générer directement des carte .KAP à partir d'une image TIFF et des coordonnées de l'image.

Ayant constaté quelques problèmes (étape 13 dans l'article cité) j'ai modifié les algorithmes en profondeur de façon à pouvoir utiliser des images de 2 à 128 couleurs, y compris la couleurs noire ou les pixels à 0. De même, le programme corrige légèrement les tailles d'image si nécessaire.

Le programme est une ligne de commande :

tiff2kap input.tif lat0 lon0 lat1 lon1 [output.kap]

Avec les paramètres :

"lat0" et "lon0" sont les coordonnées WGS84 (gps) en haut à gauche de l'image
"lat1" et "lon1", les coordonnées en bas à droite de l'image

Le programme pour Windows est ici Fichier a telecharger :

Le fichier source en C est ici Fichier a telecharger :

Pour le compiler il faut la bibliothèque libtiff, voir ici http://www.libtiff.org/
J'ai utilisé l'IDE Code::Blocks sous Linux Ubuntu et sous windows, voir ici http://www.codeblocks.org/

L'exécutable sous linux ne fait que 13ko car il ne contient pas la librairie libtiff.

Format des coordonnées

Les coordonnées sont dans le format le plus simple en degrés (pas en DMS dd° mm' ss' qu'il faut alors convertir)

Par exemple :

lat= 48.874087 lon= 2.295113 pour la place de l'étoile à Paris.

lat= 47.543591 lon=-2.894887 pour le port du Crouesty (centre du port).

Indication : Vous pouvez trouver facilement sur google map les coordonnées avec click droit de la souris et "Ajouter un repère LatLng"


Compression

La compression prend en compte une palette de 128 couleurs, de 0 à 127, mais elle accepte de 2 couleurs à 128, avec 1,2,3,4,5, 6 et 7 bits en génération dans le fichier KAP. En entré le TIFF peut être composé de même de 2 à 128 couleurs en 1, 2, 4 ou 8 bits.

Géodésique

Un autre point m'a posé problème, les cartes de type google, yahoo... maps satellite, sont dans une géodésique de type sphérique, les satellites voient la terre comme une sphère, par contre les logiciels comme OpenCPN utilisent des cartes alignés sur la géodésique standard WGS84, c'est à dire elliptique (les coordonnées dans google, yahoo... en WGS84 sont correctes, c'est la projection qui est différente). Auto total j'obtenais des décalages très importants :

outils pour creer des cartes au format kap

J'ai donc corrigé le programme. J'avais 2 solutions, réduire l'image en latitude en respectant l'elliptique ou agrandir l'image en longitude, bien sur de façon simpliste, sans réduction avec répartition des points.
La solution choisi est d'agrandir l'image en longitude afin de ne pas perdre de points, un seul point pouvant être important si ce point est par exemple un phare et je n'ai pas voulu risquer l'éliminer.

(La dernière version d'OpenCPN retaille l'image, donc ne nécessiterait pas cette correction)

En finale le programme agrandit l'image en longitude ou latitude suivant les coordonnées fournies et la taille de l'image, cela dans une limite raisonnable de 5% de différences (Les images sphériques ont un décalage de moins de 1%).

Cela donne, par exemple sur le port du Crouesty :

Avec une carte vectorielle :

outils pour creer des cartes au format kap

Avec une image satellite :

outils pour creer des cartes au format kap


Ce programme est libre, vous pouvez réutiliser le code, bien sûr, pour un usage commercial ou en entreprise il serait plus cool de préciser la source.

Si vous trouvez des bugs ou des erreurs, notez les dans le forum ou par mail, je tenterais de vous répondre rapidement.
M'dJ

Les derniers commentaires :

Mikeno_logo_2
Mikeno

Bonjour M'dJ, je viens d'essayer de créer un fichier .kap en ayant préalablement converti l'image en .tiff (128 couleurs) et en employant la commande suivante :
TIFF2KAP 6231.tiff -38.288533 -74.013617 -38.48725 -73.733083 6231.kap
... mais malheureusement ça se plante ou plutôt ça ne se termine jamais et je reçois le message suivant :
"6231.tiff: AdobeDeflate compression support is not configured."
qui s'affiche indéfiniment jusqu'à ce j'arrête la commande avec CTRL C.
Pour info je travaille sous Windows 10.
Merci pour ton aide

samedi 07 juillet 2018 19:29 *** Message modifié par son auteur ***
Double_vision
tiersp
ordre dans commande
Salut,
Je crois avoir vu dans la doc
tiff2kap nom du fichier image puis les coordonnées or tu dis l'inverse plus haut.
lundi 27 septembre 2010 22:55
Double_vision
tiersp
cmd
je pense que tiff2kap.exe se lance en ligne de commande.
Avec cmd ?
Pour le moment il y a du progrès, mais il dit que mes cartes sont trop grandes et pourtant avec mapcal pas de problème.
lundi 27 septembre 2010 00:11
Missing
(Piep)
Tiff2kap sous vista?
Le .exe ne s'exécute pas sous Vista. ou il se referme très vite, ce qui revient au même.
Cordialement
dimanche 26 septembre 2010 03:41
Voir tous les commentaires
Retour