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.
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.
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 :
Les principaux outils utilisables sont :
export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH
Voici trois exemples d'utilisation de GDAL pour convertir des cartes au format ECW.
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.
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.
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
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.
Les cartes pour OziExplorer sont très courantes. Nous allons donc examiner pas à pas, sur trois cas pratiques, comment convertir vos cartes.
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 :
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 :
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.
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.
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.
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