Conversion et géoréférencement de cartes pour ttMaps

Avertissement

Avant d'utiliser une carte avec ttMaps, assurez vous que vous en avez le droit ! Certains éditeurs de cartes papier interdisent de les scanner, et des vendeurs de cartes sur CDROM imposent des licences très restrictives, comme par exemple l'interdiction d'utiliser les cartes avec d'autres logiciels que celui fourni par le vendeur.

Format des cartes

Le format qui a été choisi pour ttMaps est le format ECW, développé à l'origine par la société Er Mapper, qui a été rachetée par ERDAS. Pourquoi un tel choix ? Ce format présente de nombreux avantages pour les applications cartographiques :

C'est un des formats choisis par l'IGN pour livrer ses cartes et ses photos aériennes. Il est donc possible d'utiliser directement les fichiers de l'IGN. Voir par exemple les copies d'écran dont certaines ont été réalisées avec des échantillons de fichiers de l'IGN.

Calibrage des cartes

Avant de convertir des cartes au format ECW, il faut vérifier qu'elles sont calibrées, c'est-à-dire que vous connaissez :

En général, le datum et la projection sont indiqués dans le cartouche des cartes papier. Si vous n'avez pas l'étendue géographique, vous devez commencer par calibrer la carte. Je ne vais pas expliquer ici en détail comment effectuer cette opération, car il existe de nombreux programmes utilisables, comme par exemple :

Outils de conversion au format ECW

Les principaux outils utilisables sont :

Conversion de cartes avec GDAL

Voici trois exemples d'utilisation de GDAL pour convertir des cartes au format ECW.

Cartes géoréférencées

Certains formats de fichier, comme le GeoTIFF, incluent les informations de géoréférencement.

Téléchargez par exemple le fichier Sample GeoTiff . Après décompactage de l'archive, vous pourrez utiliser la commande gdalinfo pour afficher des informations sur le fichier :

gdalinfo sample_geotiff.tif

Coordinate System is:
PROJCS["WGS 84 / UTM zone 10N",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.2572235630016,
                AUTHORITY["EPSG","7030"]],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",-123],
    PARAMETER["scale_factor",0.9996],
    PARAMETER["false_easting",500000],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AUTHORITY["EPSG","32610"]]
Origin = (563460.782789624412544,4180651.692221448291093)
Pixel Size = (14.250000000000000,-14.250000000000000)

Ces informations nous permettent de connaître le système de référence (ici le WGS84) et la projection utilisée (ici, UTM zone 10 Nord). Malheureusement, Er Mapper utilise des noms particuliers pour désigner les systèmes de référence et les projections. Avant d'effectuer la conversion, il faut donc trouver ces noms.

Pour l'image ci-dessus, le datum est WGS84 et la projection est NUTM10. La commande à utiliser pour convertir le fichier au format ECW est :

gdal_translate -of ECW -co "TARGET=90" -co "DATUM=WGS84" -co "PROJ=NUTM10" sample_geotiff.tif sample.ecw

Le paramètre TARGET=90 indique qu'on souhaite obtenir un taux de compression de l'image de 90% (Faites varier ce taux en fonction du type d'image à comprimer).

Remarque : Evitez d'utiliser le même nom de base pour le fichier d'entrée et le fichier de sortie, sinon cela peut causer des problèmes avec la version actuelle de gdal_translate.

Pour visualiser le résultat, je vous suggère d'utiliser ER Viewer ou QGIS.

Conversion de cartes accompagnées d'un fichier world file

Certains fichiers, par exemple TIFF, JPG ou PNG peuvent être accompagnés d'un fichier world file contenant l'étendue géographique. Ces fichiers ont pour extensions respectives .TFW, .JGW et .PGW .

C'est le cas de la carte SCAN 1000 de l'IGN, disponible gratuitement sur le site de l'IGN.

Téléchargez par exemple SCAN 1000 Corse (Version Lambert II étendu) et dézippez l'archive. Les fichiers utiles sont COR_0000.TIF (image TIFF) et COR_0000.TFW, qui contient les coordonnées et la taille des pixels. La commande gdalinfo permet d'apprendre que ce fichier utilise une palette de couleurs :

Band 1 Block=1200x25 Type=Byte, ColorInterp=Palette
  Color Table (RGB with 256 entries)

La commande gdal_translate n'est pas capable de convertir un fichier basé sur une palette de couleurs vers un fichier en 16 millions de couleurs. Heureusement, un utilitaire de conversion (pct2rgb.py) est livré dans le paquetage GDAL. Il faut donc commencer par effectuer cette conversion :

pct2rgb.py COR_0000.TIF CORSE.TIF

Le site web de l'IGN nous apprend que cette carte utilise le système de référence NTF (Nouvelle Triangulation Française), avec la projection Lambert II étendu. La commande de conversion sera donc la suivante :

gdal_translate -of ECW -co "TARGET=88" -co "DATUM=NTF"  -co "PROJ=LM2FRANC" CORSE.TIF CORSE.ecw

Cependant, on remarque que la carte est entourée d'une bordure blanche inutile. Il est possible de ne convertir qu'une partie de la carte, en utilisant l'option -srcwin de la commande gdal_translate :

gdal_translate -of ECW -co "TARGET=88" -co "DATUM=NTF"  -co "PROJ=LM2FRANC" -srcwin 63 84 980 1930 CORSE.TIF CORSE.ecw

Pour les utilisateurs de Linux (ou de Windows avec CygWin), voici un script de conversion complète de la carte SCAN1000.

Conversion d'une carte sans fichier de géoréférencement

Téléchargez par exemple cette image BlueMarble. Les coordonnées du coin supérieur gauche sont -180°, 90° et celles du coin inférieur droit sont 180°, -90° . Le système cartographique est WGS84, et la projection utilisée est GEODETIC.

La commande à utiliser pour la conversion est celle-ci:

gdal_translate -of ECW -co "TARGET=94" -co "DATUM=WGS84" -co "PROJ=GEODETIC" -a_ullr -180 90 180 -90 land_shallow_topo_2048.jpg BlueMarble.ecw

Géoréférencement d'un fichier ECW

Si vous disposez d'un fichier au format ECW ne contenant pas les informations de géoréférencement complètes (datum, projection et position), il est possible d'ajouter ces informations sans avoir à décomprimer/recomprimer le fichier avec gdal_translate. Pour cela, il faut utiliser l'outil gratuit ECW Header Editor, téléchargeable sur le site de ERDAS.

Pour géoréférencer l'image, il faut procéder comme suit :

Il est aussi possible d'utiliser gdal_edit , qui a l'avantage de fonctionner aussi sur MacOS et Linux.

Conversion d'un fichier calibré pour OziExplorer

Les cartes pour OziExplorer sont très courantes. Nous allons donc examiner pas à pas, sur trois cas pratiques, comment convertir vos cartes.

Comment vérifier si le fichier de calibrage est correct

Il arrive fréquemment que les fichiers de calibrage d'Oziexplorer ne contiennent pas les informations correctes sur la projection et le datum. Ceci est dû au fait que certaines personnes utilisent OziExplorer sans connaissances suffisantes, parfois sans même prendre le temps d'essayer de comprendre ce que sont les datums et les projections.

Il existe un test simple à effectuer sur un fichier de calibrage. Le principe est de vérifier que les bords de la carte sont bien parallèles aux axes de la projection.

Pour commencer, afficher le contenu du fichier .map (c'est du texte). En général, le fichier contient les coordonnées de quatre points de référence, le plus souvent les quatre coins de la carte. Pour que la carte soit alignée avec les axes de projection, il suffit de vérifier que :

Exemple 1

Point Abscisse Ordonnées
Coordonnées du coin supérieur gauche 0 2700000
Coordonnées du coin supérieur droit 1100000 2700000
Coordonnées du coin inférieur droit 1100000 1600000
Coordonnées du coin inférieur gauche 0 1600000

Dans ce premier exemple, nous voyons que la carte est bien positionnée. En effet :

Exemple 2

Point Abscisse Ordonnées
Coordonnées du coin supérieur gauche 4.269040 45.882684
Coordonnées du coin supérieur droit 4.912734 45.870023
Coordonnées du coin inférieur droit 4.891744 45.422152
Coordonnées du coin inférieur gauche 4.253713 45.434813

Dans ce second exemple, nous voyons que la carte n'est pas alignée. En effet :

Note : Cette méthode simple permet de prouver que la projection indiquée dans le fichier .map est incorrecte. Elle ne permet pas de vérifier que la projection, le datum et le calibrage sont corrects, cela devra être fait en affichant des points de référence connus dans ttMaps.

Tutoriel n° 1 : Conversion d'une carte française accompagnée d'un fichier de calibrage correct

Voici un exemple, d'après un fichier .map trouvé sur un forum :

Ligne du fichier .map Description
Map Datum,NTF France Datum
Map Projection,(II) France Zone II,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No Projection
Image Width,44000 Largeur de l'image, en pixels
Image Height,44000 Hauteur de l'image, en pixels
Point01,xy, 0, 0,in, deg, , ,N, , ,E, grid, , 0, 2700000,N Coordonnées du coin supérieur gauche (en mètres)
Point02,xy,44000, 0,in, deg, , ,N, , ,E, grid, , 1100000, 2700000,N Coordonnées du coin supérieur droit (en mètres)
Point03,xy,44000,44000,in, deg, , ,N, , ,E, grid, , 1100000, 1600000,N Coordonnées du coin inférieur droit (en mètres)
Point04,xy, 0,44000,in, deg, , ,N, , ,E, grid, , 0, 1600000,N Coordonnées du coin inférieur gauche (en mètres)

Nous avons dans ce tableau toutes les informations nécessaires pour créer une carte calibrée au format ECW.

Le plus simple pour effectuer la conversion est d'utiliser GDAL :

gdal_translate -of ECW -co "TARGET=94" -co "DATUM=NTF" -co "PROJ=LM2FRANC" -co "LARGE_OK=YES" -a_ullr 0 2700000 1100000 1600000 carte.png carte.ecw

Note : L'option LARGE_OK=YES est ici indispensable, car la taille de la carte (44000 x 44000 x 3 = 5808000000 octets) dépasse 500 Mo.

Tutoriel n° 2 : Conversion d'une carte française accompagnée d'un fichier de calibrage incorrect

Voici un second exemple :

Ligne du fichier .map Description
WGS 84,WGS 84, 0.0000, 0.0000,WGS 84 Datum
Map Projection,Latitude/Longitude,PolyCal,No,AutoCalOnly,No,BSBUseWPX,Yes Projection
Image Width,5000 Largeur de l'image, en pixels
Image Height,5000 Hauteur de l'image, en pixels
Point01,xy, 0, 0,in, deg, 45, 52.96104,N, 4, 16.1424,E, grid, , , ,N Coordonnées du coin supérieur gauche (en degrés+minutes décimales)
Point02,xy, 5000, 0,in, deg, 45, 52.20138,N, 4, 54.76404,E, grid, , , ,N Coordonnées du coin supérieur droit (en degrés+minutes décimales)
Point03,xy, 5000, 5000,in, deg, 45, 25.32912,N, 4, 53.50464,E, grid, , , ,N Coordonnées du coin inférieur droit (en degrés+minutes décimales)
Point04,xy, 0, 5000,in, deg, 45, 26.08878,N, 4, 15.22278,E, grid, , , ,N Coordonnées du coin inférieur gauche (en degrés+minutes décimales)

Nous voyons immédiatement que la carte n'est pas alignée avec la projection WGS84. La principale difficulté va être de trouver la bonne projection et le bon datum.

Comme il s'agit d'une carte française, ce n'est pas très difficile : la plupart des cartes actuelles utilisent le datum NTF et la projection Lambert II étendue (sauf certaines cartes de Corse qui utilisent la projection Lambert IV).

Nous allons le vérifier en convertissant les coordonnées des quatre coins de la carte en NTF/Lambert II étendu. Pour cela, il existe de nombreux logiciels de conversion de coordonnées, utilisez celui que vous préférez.

Points Longitude (WGS84) Latitude (WGS84) X (Lambert IIe) Y (Lambert IIe)
Coin supérieur gauche 4.269040 45.882684 750000.06 2099889.00
Coin supérieur droit 4.912734 45.870023 799993.98 2099915.04
Coin inférieur droit 4.891744 45.422152 799982.76 2050105.46
Coin inférieur gauche 4.253713 45.434813 750024.37 2050092.08

Cette carte a probablement été calibrée manuellement, et il y a des erreurs de quelques dizaines de mètres. En arrondissant les résultats, on obtient :

Points X (Lambert IIe) Y (Lambert IIe)
Coin supérieur gauche 750000 2100000
Coin supérieur droit 800000 2100000
Coin inférieur droit 800000 2050000
Coin inférieur gauche 750000 2050000

Nous voyons donc que la carte est bien alignée par rapport aux axes de la projection NTF/Lambert II étendu, et nous pouvons maintenant la convertir :

gdal_translate -of ECW -co "TARGET=94" -co "DATUM=NTF" -co "PROJ=LM2FRANC" -a_ullr 750000 2100000 800000 2050000 carte.png carte.ecw

Note : L'option LARGE_OK=YES n'est pas utile, car la taille de la carte (5000 x 5000 x 3 = 75000000 octets) ne dépasse pas 500 Mo.

Tutoriel n° 3 : Conversion d'une carte anglaise accompagnée d'un fichier de calibrage correct

Pour comprendre cet exemple, il est nécessaire de connaître le système de référence utilisé au Royaume-Uni. Lisez par exemple http://en.wikipedia.org/wiki/British_national_grid_reference_system .

Ligne du fichier .map Description
Ord Srvy Grt Britn,WGS 84, 0.0000, 0.0000,WGS 84 Datum
Map Projection,(BNG) British National Grid,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No Projection
IWH,Map Image Width/Height,32704,32576 Taille de l'image, en pixels
Point01,xy, 200, 128,in, deg, , ,N, , ,W, grid, HV, 01000, 00000,N
Point02,xy,32400, 128,in, deg, , ,N, , ,W, grid, HW, 62000, 00000,N
Point03,xy,32400,32328,in, deg, , ,N, , ,W, grid, NG, 62000, 39000,N
Point04,xy, 200,32328,in, deg, , ,N, , ,W, grid, NF, 01000, 39000,N

Cette conversion est plus complexe que les précédentes :

Nous allons commencer par convertir les coordonnées lettres+chiffres en coordonnées entièrement numériques. Pour cela, il suffit de savoir que les carrés mesurent 100km de côté et que la référence est le coin sud-ouest du carré SV (voir carte Wikipédia). Nous en déduisons le tableau suivant :

Carré Décalage X Décalage Y
HV 0 1000 km
HW 100 km 1000 km
NG 100 km 800 km
NF 0 km 800 km

ce qui nous permet de calculer les coordonnées numériques des quatre points de référence :

Point de référence Coordonnée X Coordonnée Y
Point01 1000 1000000
Point02 162000 1000000
Point03 162000 839000
Point04 1000 839000

Nous constatons au passage que la carte est bien alignée par rapport aux axes de la projection.

Calculons maintenant les coordonnées des coins supérieur gauche et inférieur droit de la carte.

Il ne reste plus qu'à convertir la carte :

gdal_translate -of ECW -co "TARGET=90" -co "DATUM=OSGB36" -co "PROJ=TMOSGB" -co "LARGE_OK=YES" -a_ullr 0 1000640 163520 837760 carte.png carte.ecw

Cette page a été mise à jour le 19/02/2014