L’utilisateur de KartoMNT : vous-même
Construire un MNT à partir d’une carte de randonnée
Détecter les lignes de niveaux d’une carte
Détermination manuelle des altitudes des lignes et correction
Ré échantillonner – Retailler un MNT
Quelques bugs et améliorations à venir...>
KartoMNT est une application dont le but est de générer un MNT à partir carte géographique munie de lignes de niveaux.
Un MNT est une sorte de carte des altitudes. Il est réalisé en détectant les lignes de niveaux de la carte, en déterminant leur altitude, puis en estimant l’altitude de tous les autres points par interpolation.
La détection des lignes de niveaux n’est pas complètement automatique, elle sollicite fortement l’utilisateur qui doit régler un certain nombre de paramètres, et rectifier les erreurs de détection. Le temps et la minutie qu’il y consacre déterminent fortement la qualité du MNT généré.
L’utilisateur de KartoMNT : vous-même
KartoMNT s’adresse évidemment à un utilisateur ayant besoin de disposer d’un MNT. Cela présuppose des connaissances des systèmes d’informations géographiques, et notamment savoir lire une carte munie de lignes de niveaux.
En outre vous devrez investir du temps à faciliter la détection des lignes de niveaux, processus qui n’est pas complètement automatisé.
KartoMNT est une application Java. Cela signifie qu’il fonctionne sous n’importe quel système d’exploitation (bien qu’on ne l’ait testé que sous Windows et Linux), sous réserve qu’une JVM, c’est-à-dire un environnement d’exécution Java, y soit installée, sous version 1.4 ou supérieure.
Si vous ne disposez pas d’une JVM, vous pouvez en télécharger une à cette adresse : http://java.sun.com/j2se/1.4/.
Des versions de KartoMNT sont distribuées avec une JVM intégrée, et ne nécessitent donc aucune configuration préalable.
KartoMNT utilise Java3D pour son visualisateur. L'affichage nécessite donc une configuration graphique minimale pour un bon confort d'utilisation. Il est donc préférable d'être équipé d'une carte graphique 3D optimisée pour OpenGL (ou DirectX)
Sans utiliser le visualisateur 3D, en revanche, un ordinateur doté d'un processeur P2 333MHz, et d'une Mémoire RAM de 128 Mo peut assurer le bon fonctionnement du logiciel (cela dépend bien sûr de la taille et de la résolution des images que vous utiliserez).
Pour lancer KartoMNT, vous pouvez simplement exécuter KartoMNT.bat si vous utilisez Windows, ou KartoMNT.sh sous Unix. Dans le deuxième cas, une modification de ce fichier, due à l’administration de votre système, peut être nécessaire. Vous devrez en modifier l’en-tête, qui doit ressembler à ceci :
#!/usr/bin/sh
Modifiez donc la première ligne de manière à ce qu’elle indique le chemin absolu pour accéder à l’exécutable sh, précédé du préfixe " #! ". En outre, assurez-vous que vous avez le droit d’exécuter KartoMNT.sh (la commande chmod 755 KartoMNT.sh devrait le permettre).
Si vous utilisez une autre plate-forme, à vous de vous arranger pour lancer une commande java similaire à celle-ci, depuis le répertoire où se trouve KartoMNT :
java –classpath exportclass -jar lib/KartoMNT.jar
C’est-à-dire que vous devez lancer Java de manière à exécuter le fichier KartoMNT.jar se trouvant dans le répertoire lib, et que la variable classpath doit être réglée de manière à inclure le répertoire exportclass (i.e. détecter les fichier .class se trouvant à l’intérieur).
Vous trouverez vraisemblablement les détails nécessaires dans la documentation de votre JVM, ou en lançant java sans option.
Construire un MNT à partir d’une carte de randonnée
Pour générer un MNT à partir d’une carte de randonnée, il faut effectuer les étapes suivantes :
KartoMNT permet de travailler sur une carte munie de lignes de niveaux. A moins que vous ne disposiez d’une carte déjà numérisée, il est plus probable que vous ayez à scanner une carte de papier. Ce scan peut se faire avec une résolution plus ou moins importante, mais gardez à l’esprit le fait que plus une carte est grande, plus elle demandera de mémoire et de temps d’exécution, mais en revanche elle peut permettre des résultats plus précis si vous vous appliquez lors de la détection des lignes de niveaux.
On verra plus tard que la détection des lignes de niveaux se fait par reconnaissance de couleurs. Pour une plus grande précision, on peut avoir intérêt à travailler la carte avec un logiciel de dessin ou plutôt de traitement d’image (comme par exemple Adobe Photoshop) pour faire ressortir les lignes de niveaux. Les opérations à effectuer dépendent évidemment de la carte, et de la couleur des lignes de niveaux.
Dans cet exemple on effectue une simple correction gamma :
Image d’origine |
Image modifiée |
On peut observer que les lignes de niveaux sont bien plus nettes dans l’image de droite. On a pu vérifier que la détection de lignes de niveaux se faisait plus facilement pour une image ainsi modifiée.
Dans la mesure où les traitements à effectuer dépendent fortement de la carte et de ses couleurs, on ne peut pas vraiment donner de règle pour choisir un tel pré-traitement. Il est de toute manière facultatif, mais peut faire gagner du temps plus tard.
Précisons bien que KartoMNT ne fournit pas les outils pour effectuer une telle opération.
Une petite astuce : Il peut etre interressant (et plus rapide) de décalquer les lignes de niveau à la main sur un calque et de scanner ce calque. La carte des lignes sera ainsi débarrassée des écrirtures, zones ombrées, etc., qui faussent la détection, et celle-ci sera par conséquent nettement plus efficace.
Détecter les lignes de niveaux d’une carte
La détection des lignes de niveaux d’une carte se fait selon leur couleur. Elle se fait en ouvrant la boite de dialogue de détection des lignes de niveaux, dans le menu " Lignes de Niveaux > Détection des lignes de niveaux ".
Boite de dialogue pour la détection de lignes de niveaux
Sélection d’une couleur de référence :
Puisque la couleur des lignes de niveaux dépend de la carte (et des conventions du dessinateur) c’est à vous d’indiquer à KartoMNT la couleur approximative d’une ligne de niveaux.
En ouvrant la boite de dialogue, votre curseur a du prendre la forme d’une pipette. Dans le cas contraire, cliquez sur le bouton indiquant une pipette en haut à gauche de la boite de dialogue de détection.
Cliquez ensuite sur une ligne de niveaux. La couleur que vous avez choisie s’affiche dans un carré en haut de la boite de dialogue.
Il est possible que cette couleur soit assez mal choisie. En effet vous avez peut-être cliqué à côté de la ligne (problème qui peut être facilement évité en effectuant un zoom, grâce au menu du même nom), et de plus les lignes de niveaux n’ont pas vraiment une couleur homogène, comme on peut le voir dans ces deux images :
Image d’origine |
Image grossie 8 fois |
Assurez-vous donc que le point que vous sélectionnez est bien d’une couleur suffisamment typique. La barre d’état, barre située en bas de la fenêtre principale, indique la couleur du point situé sous la souris, ce qui permet de la choisir correctement.
Choix du système de colorimétrie et des tolérances :
Une fois la couleur de référence choisie, il faut déterminer un critère qui va permettre d’affirmer qu’un point de la carte a une couleur suffisamment semblable à celle du point sélectionné, pour déterminer si ce point appartient lui aussi à une ligne de niveaux.
Revoyons cette boite de dialogue :
Dialogue de détection de lignes de niveaux
Les trois composantes de la couleur de référence sélectionnée sont indiquées selon deux systèmes de colorimétrie : RGB et YUV.
Le système RGB est très connu, et correspond à des niveaux de rouge, vert, et bleu. S’il permet assez bien de représenter une image, il est difficile de le manipuler pour effectuer des comparaisons entre deux couleurs.
Le système YUV, en revanche, présente l’avantage que la composante Y correspond à la luminance, tandis que les composantes U et V correspondent à la teinte, en quelque sorte.
Autrement dit, deux points d’une ligne de niveaux ont sans doute des valeurs proches pour les composantes U et V, tandis que la composante Y est bien plus variable selon que la ligne de niveaux se trouve ou non dans une zone d’ombre (par exemple un versant Sud).
Il est donc recommandé d’effectuer les comparaisons de couleurs en YUV et non pas en RGB. Cela se détermine en sélectionnant " Détection en YUV " ou " Détection en RGB ", en bas de la boite de dialogue.
Quel que soit le choix, il faut aussi régler les trois niveaux de tolérance. Ils représentent la différence maximale, pour une composante de couleur, entre la couleur d’un point et la couleur de référence.
Si cette différence est plus grande que la tolérance, alors le point n’est pas considéré, lors de la détection, comme faisant partie d’une ligne de niveaux. Si elle est plus petite ou égale, et selon les trois composantes, alors le point est considéré comme faisant partie d’une ligne de niveaux.
Dans l’exemple visible plus haut, avec une couleur de référence de (154, 112, 174) en YUV et une tolérance de (60, 30, 30), on va détecter les lignes de niveaux en considérant que chaque point de la carte fait partie d’une ligne de niveaux si sa composante Y est comprise entre 94 et 214, si sa composante U est comprise entre 82 et 142, et si sa composante V est comprise entre 144 et 204.
Notons que les trois composantes ont forcément des valeurs entre 0 et 255. Lorsqu’une tolérance est trop forte, on détecte trop de points, c’est-à-dire des points qui ne sont pourtant pas sur une ligne de niveaux. Si la tolérance est trop faible, de nombreux points des lignes de niveaux ne sont pas détectés, et elles sont fragmentées.
On recommande d’effectuer la détection suivant le système YUV, en prévoyant une tolérance assez grande selon Y, et des tolérances assez strictes (entre 20 et 40) pour les composantes U et V.
Il est parfois judicieux de modifier la composante Y de référence à la valeur 128 (valeur moyenne), pour une tolérance de 80 environ. Ainsi la sélection se fait surtout sur les composantes U et V, en rejetant également le noir et le blanc (les points beaucoup trop clairs ou trop foncés).
Il faudra sans doute tâtonner, et il est très improbable que vous trouviez le meilleur réglage du premier coup. Notez qu’il est peut-être intéressant de faire plusieurs tentatives, car vous gagnerez ainsi beaucoup de temps ou de précision dans la suite.
Détection en plusieurs étapes :
Pour plus de commodité, il est possible de détecter les lignes de niveau en plusieurs fois, c'est à dire effectuer une première détection avec une couleur, puis une ou plusieurs autres avec d'autres couleurs. Ceci peur d'avérer utile quand les lignes sont de plusieurs couleurs, par exemple, et peut permettre de fixer des niveaux de tolérances plus faibles afin de détecter moins de lignes parasites.
Il est conseillé de sauvegarder les lignes de niveaux de temps en temps car une fois une détection lancée, il est impossible de revenir en arrière : les nouvelles lignes sont indissociables de celles anciennement détectées.
Réinitialiser les lignes de niveaux :
Il est possible de réinitialiser les lignes de niveaux en sélectionnant le menu Lignes de Niveaux > Réinitialiser les lignes de niveau. Cette opération effacera toutes les lignes détectées.
Affiner les lignes de niveaux et supprimer les points isolés :
Deux fonctions peuvent vous faire gagner du temps dans la suite.
Affiner les lignes de niveaux :
Cette fonction permet d’affiner les lignes de niveaux de manière à ce qu’elles n’aient qu’une épaisseur de un pixel. Elle est accessible dans le menu " Lignes de niveaux > Affiner les lignes de niveaux ". Nous vous conseillons de l’utiliser immédiatement après la détection des lignes de niveaux, et encore une fois ensuite, lorsque vous serez intervenu manuellement (notamment pour affiner les pâtés que vous aurez fait au pinceau).
Voici une exemple d’utilisation de cette fonction :
|
|
Lignes de niveaux affinées
Supprimer les points isolés :
Cette fonction permet de supprimer tous les points de l’ensemble des lignes de niveaux qui se trouvent isolés. Cela permet d’avoir moins de points à effacer, car un point isolé est généralement un artefact, et apporte peu d’information dans le cas contraire. Elle s’effectue en sélectionnant " Lignes de niveaux > Supprimer les lignes de niveaux ".
Détermination manuelle des altitudes des lignes et correction :
Cette opération est assez fastidieuse, et le temps que vous y passerez déterminera fortement la qualité du MNT qui sera plus tard généré.
D’une part la détection a déterminé, pour chaque point, s’il appartient ou non à une ligne de niveaux, mais pas son altitude. Tous les points des lignes de niveaux sont considérés comme ayant une altitude indéterminée, jusqu’à ce que vous leur en donniez une. Ils apparaissent en bleu foncé sur le calque des lignes de niveaux.
D’autre part la détection a été imparfaite : des trous morcellent les lignes de niveaux, et des points isolés, parasites ont été à tort considérés comme faisant partie d’une ligne de niveaux.
Voici l’allure de nos lignes de niveaux, dans l’exemple précédent. La carte d’origine apparaît légèrement, avec une faible opacité :
Lignes de niveaux brutes
C’est maintenant que vont servir la plupart des boutons situés en haut de la fenêtre. Ils sont également présents dans le menu " Outils " :
menu " Outils "
Les deux premiers outils servent lors de la calibration, nous en reparlerons dans un chapitre consacré à la calibration.
Bien que vous puissiez choisir d’adopter une autre méthode, on recommande de commencer par placer les sommets (qui n'ont sans doute pas été détectés, pour peu qu’ils ne soient pas de la même couleur que les lignes de niveaux), puis de fixer l’altitude de quelques lignes de niveaux.
Pour placer un sommet, cliquez sur le bouton correspondant, sélectionnez la taille du point qui le représentera, son altitude, puis cliquez à son emplacement. Il apparaît en bleu clair, la couleur des lignes de niveaux d’altitude déterminée.
Dans cet exemple on choisit une taille de 6, une altitude de 1228 mètres, et on clique à l’emplacement du sommet correspondant :
Sommet placé
Déterminer l’altitude d’une ligne de niveau :
Pour déterminer l’altitude d’une ligne de niveaux – on verra plus tard que ce n’est pas la manière de procéder la plus rapide – cliquez sur le bouton correspondant.
Fixez une taille de curseur (la taille du curseur permettant de sélectionner la ligne) et l’altitude de la ligne que vous sélectionnerez, puis cliquez dessus.
Déterminer les altitudes de plusieurs lignes de niveaux :
Cette opération permet d’aller bien plus vite que la précédente. Elle consiste à tracer une ligne droite traversant plusieurs lignes en précisant l’altitude de la première, et la différence de hauteur entre deux lignes de niveaux successives.
Notons qu’il ne faut surtout pas que cette droite traverse une même ligne deux fois (par exemple en un coude), ni à travers un trou. Dans les cas précédents, le compte des lignes traversées serait faussé.
Détermination des altitudes de plusieurs lignes
On peut remarquer que les lignes de niveaux n’ont pas vu leur altitude déterminée sur toute leur longueur : des coupures des lignes, qui subsistent après la détection, parce que la tolérance était trop faible ou parce qu’une route ou du texte traversait la ligne, empêchent la propagation de l’altitude des lignes.
Cette technique est a favoriser car elle est la plus rapide.
Nous vous recommandons de vérifier l’altitude des lignes de niveaux, par exemple la dernière croisée par la flèche, au moyen de la fonction " Estimer l’altitude en un point ", décrite un peu plus loin.
Joindre deux lignes :
Pour que les altitudes se propagent correctement, il faut combler les trous qui les séparent. Cela se peut faire au moyen du pinceau, ou des fonctions ligne ou lignes brisée. Sans oublier de régler la taille du curseur de ces fonctions, vous pouvez les utiliser pour joindre deux partie d’une même ligne de niveaux, ou en tracer une nouvelle.
Notez que si vous joignez une section de ligne d’altitude déterminée à une autre section, l’altitude se propage. Cela peut permettre de fixer rapidement l’altitude des segments isolés, après avoir fixé celles de nombreux segments par la méthode précédente.
Dans cet exemple on joint de lignes au moyen du pinceau, réglé sur une épaisseur de trois pixels :
|
|
Jonction de deux lignes de niveaux au pinceau
Pour commencer, cliquez sur la ligne d’altitude déterminée, que vous souhaitez prolonger. Notez que cela entraîne sa sélection, et qu’elle apparaît en violet. Puis sans relâcher la souris, on trace un trait pour joindre les deux lignes de niveaux. Lorsque le trait atteint la seconde ligne, elle apparaît elle aussi en violet, et prend l’altitude de la première.
Jonction semi-automatique des lignes :
Les lignes peuvent être jointes de manière semi automatique grêce à l'outil , accessible depuis la barre d'outils ou depuis le menu Outils > Rabouteur semi-automatique des lignes de niveaux. Ce nouvel outil, disponible depuis la version 2.0 de KartoMNT, permet de selectionner une ligne, dont il détecte l'extremité, et de se dirriger avec la souris vers une autre ligne, dont il détecte également l'extremité pour la joindre à la précédente. Attention : il faut avoir affiné les lignes de niveaux au préalable (voir partie affinage des lignes de niveau).
Utilisez le bouton gauche de la souris pour sélectionner une ligne, puis pour valider la jonction, et utilisez le bouton droit pour annuler.
Voici un exemple d'utilisation (les lignes de niveau détectées sont en bleu clair) :
Déctection de l'extremité d'une lignepointée par le curseur. |
Détection de l'extremité de l'autre ligne et raboutage. |
La gomme permet d’effacer des points isolés ou des portions de ligne de niveaux. Cela peut servir pour tous les parasites : points isolés, lignes pointillées à mi-altitude, flèches et autres indications d’altitude qui ne sont pas des lignes de niveaux.
Estimer l’altitude en un point :
Cette fonction permet d’obtenir une estimation de l’altitude d’un point sur lequel on clique, afin de s’assurer que les lignes de niveaux n’ont pas pris de valeur erronée.
Il suffit de cliquer en un point pour obtenir une estimation de son altitude. Si les lignes de niveaux alentour ont encore une altitude indéterminée (et sont donc marquées en bleu foncé) cette estimation sera bien sur faussée.
Remarque concernant les codes de couleurs :
On utilise trois couleurs différentes pour représenter les lignes de niveaux, comme on peut le voir dans cet exemple :
Trois couleurs des lignes de niveaux
Bleu foncé : En bleu foncé apparaissent les lignes de niveaux d’altitude indéterminée. Elle le resteront jusqu’à ce vous leur donniez une altitude, que ce soit directement, à l’aide du bouton " déterminer l’altitude de plusieurs lignes de niveaux ", ou en prolongeant des lignes de niveaux d’altitude connue.
Bleu clair : Les lignes de niveaux (et les sommets) d’altitude connue apparaissent en bleu clair. Sauf bien sûr celle qui est sélectionnée.
Violet : le Violet est la couleur de la ligne de niveaux sélectionnée. Elle a notamment pu être sélectionnée pour être prolongée, comme dans cette exemple où le pinceau est en cours d’utilisation.
Tant qu’une carte n’est pas calibrée, les pixels qui la composent ne peuvent être mis en correspondance avec des coordonnées géographiques réelles. Il faut donc que vous interveniez pour indiquer la position de plusieurs points de repère appelés points de calibration, pour que KartoMNT puisse ensuite estimer les coordonnées de chaque point dans le monde réel.
Placer un point de calibration
Pour placer un point de calibration, sélectionnez la fonction correspondante dans le menu Outils > Créer un point de calibration ou cliquez sur l’icône en forme de croix en haut à gauche.
Cliquez ensuite sur le point de la carte dont vous voulez faire un point de calibration.
Création d’un point de calibration
Ensuite indiquez les coordonnées du point sur le terrain, dans la barre de dialogue disponible en bas de la fenêtre, ou dans la sous fenêtre consacrée aux points de calibration, à droite.
Dans cet exemple nous donnons des coordonnées terrain totalement fantaisistes.
Déplacer les points de calibration
Pour obtenir une calibration précise, nous vous recommandons de placer les points de calibration avec précision.
Une fonction, disponible dans le menu " Outils > Déplacer un point de calibration " ou par le bouton de gauche de la barre des outils, permet de sélectionner et déplacer un point.
Cela peut notamment permettre de le placer avec une grande précision, dans le cas où la carte comporterait, comme ici, des points de repère géographiques.
Déplacement d’un point de calibration
Dans cet exemple on souhaite refaire une calibration en plaçant les points de calibration plus précisément : on effectue un zoom, et place le point de calibration bien au milieu du repère sur la carte.
Notez que dans cette opération, on modifie les coordonnées du point sur la carte, mais pas sur le terrain.
Effectuer la calibration
Lorsque assez de point de calibration ont été placés, lancez la calibration. Il faut au moins trois points de calibration, non alignés. Vous pouvez notamment le faire au moyen du bouton " calibrer la carte ", dans la sous-fenêtre consacrée aux points de calibration, à droite.
Des lignes de carroyage vont apparaître. Il peut y en avoir un nombre gênant, mais vous pouvez régler leur fréquence d’apparition dans le sous-menu " Option > Options carroyage ". Dans cet exemple, on a choisi d’afficher une ligne de carroyage par kilomètre.
Carte calibrée
Les lignes de carroyage permettent notamment de se rendre compte si la calibration a été correctement effectuée. En principe vous devez obtenir des lignes droite parallèles et orthogonales.
Si les lignes de carroyages n’ont pas du tout ces attributs, vérifiez que vous avez correctement saisi les coordonnées terrain de vos points de calibration.
De légères anomalies peuvent en revanche être dues à une mauvaise qualité de votre carte, peut-être apparue lors de sa numérisation.
Une fois la carte calibrée, et les lignes de niveaux détectées (et leur altitude déterminée), vous pouvez générer le MNT.
Ouvrez la boîte de dialogue correspondante, dans le menu " MNT > Génération du MNT ".
Génération d’un MNT
La première chose à faire est de sélectionner, à la souris ou avec les champs des coordonnées, le contours de la zone sur laquelle le MNT va être généré. En effet celui-ci ne peut être généré que sur un rectangle dont les côtés sont parallèles aux lignes de carroyage.
Ensuite choisissez le pas en x et y du MNT, c’est-à-dire la distance entre deux points consécutifs du MNT. Ce pas doit être exprimé dans la même unité que les coordonnées terrain des points de calibration.
Le bouton " voir les points d’échantillonnage " permet de voir les positions des points que représentera le MNT.
Paramètres de l’interpolation :
Les points du MNT sont évidemment déterminés par interpolation, à moins de se trouver sur une ligne de niveaux.
Ces interpolations se font par la méthode dite de diffusion. Vous pouvez modifier ces deux paramètres. Le nombre maximal d’itérations détermine fortement le temps de calcul, de même que le résidu maximal.
Le résidu maximal détermine une condition d’arrêt de l’algorithme qui effectue les interpolation. C’est-à-dire que les calculs s’arrêtent lorsqu’une condition déterminée par ce paramètre est remplie.
Le nombre maximal d’itérations permet à l’algorithme de s’arrêter si le critère précédent n’est jamais atteint : idéalement le nombre maximal d’itérations ne doit pas être atteint, il permet juste d’éviter une boucle infinie.
En augmentant le nombre maximal d’itérations et en réduisant le résidu maximal, vous augmentez le temps de calcul, en améliorant la qualité des interpolations.
Toutefois ces interpolations sont imparfaites, et il est inutile d’entrer des valeurs extravagantes pour ces paramètres. Modifiez les au plus d’un facteur dix.
Valeurs suggérées : entre 1000 et 10000 pour le nombre maximal d’interpolations, et entre 0.01 et 0.1 pour le résidu maximal.
Visualiser le MNT généré
Le MNT est visualisé en couleurs selon une palette prédéfinie en fonction des altitudes.
Vous pouvez si vous le souhaitez affiner cette palette, globalement ou sur certaines altitudes, en y ajoutant et déplaçant des repères. En cliquant au bas de l’axe des couleurs, vous rajoutez un curseur auquel vous pouvez assigner une couleur (clic droit sur ce curseur), et que vous pouvez déplacer.
En vous déplaçant sur le MNT avec la souris sur le MNT, les coordonnées et l’altitude des points sur les quels vous passez vous sont indiqué en bas de la fenêtre.
Il est possible de visualiser le MNT (tout comme la carte et les lignes de niveaux) en zoom avec ou sans interpolation. L'interpolation lisse l'image et offre un meilleur rendu visuel mais il est parfois souhaitable de voir le MNT pixel par pixel. Par défaut l'interpolation est active, mais il est possible de la désactiver et réactiver avec "Options > Interpoler lors du zoom".
zoom avec interpolation |
zoom sans interpolation |
Vérifier la génération
Il est possible, après la génération, de superposer les lignes de niveaux qui ont servi à la génération au MNT généré. Pour cela, sélectionner le menu " MNT > Superposer les lignes de niveau ".
Ceci vous permettra de vérifier rapidement si le MNT correspond aux lignes de la carte d'origine.
Cette opération est possible immédiatement après la génération du MNT mais ne peut pas être reproduite lors de l'ouverture d'un MNT.
Il est possible à tout moment de sauvegarder son travail, par sécurité simplement, ou pour le reprendre plus tard. Pour cela, allez dans le menu "Fichier > Enregistrer sous.." (ou simplement Enregistrer si le fichier a déjà été sauvé au paravent). Les documents sont enregistrés au format ".karto".
L'image de la carte est simplement référencée dans le document karto est n'est donc pas contenue dans le fichier *.karto que vous avez enregistrer. Veillez donc à la garder disponible si vous voulez reprendre le travail par la suite. Il est possible de charger manuellement l'image avec "Fichier > Importer image". Vous pourrez ainsi modifier l'image (la carte) avec d'autres outils (voir chapitre Préparer la carte) et la réimporter sans avoir a refaire le travail sur les lignes de niveau.
Les lignes de niveau aussi peuvent être importées et exportées séparément (avec "Fichier > Sauvegarder les lignes de niveaux seulement" et "Fichier > Importer les lignes de niveaux seulement").
Les Modèles Numériques de Terrains peuvent être manipulés (visualisation, modification, fusion) sous différents formats.
KartoMNT gère les formats ".mnt" (MNT binaire) et ".sur" (modèle de surface). Ces formats peuvent être sélectionnés lors de la sauvegarde et le chargement de MNT.
Il est désormais possible de rajouter dans KartoMNT ses propres formats de MNT, que cela soit en import, en export ou bien les deux. Cela demande quelques connaissances de programmation Java.
Pour cela vous devez :
javac –classpath kartoMNT.jar kartoMNT/MntFormat*.java
Une aide détaillée sur l'ajout de fortmats de MNT est fornie dans le kit KartoMNT, dans le répertoire format_help.
Implantation d'une calsse de format :
L’interface MntFormat contient les fonctions suivantes (qui sont donc à implanter dans votre classe de format) :
Cette fonction doit retourner l’extension de fichier que gère le format. Comme KartoMNT choisit parmi sa liste de MntFormat différents en fonction de l’extension du fichier de MNT, il est essentiel que l’extension soit différente pour chaque format. Si jamais vous voulez permettre l’importation ou l’exportation de formats différents ayant une extension identique, il est obligatoire de gérer les différents formats dans une même classe et de demander à l’utilisateur quel format il désire utiliser (en espérant qu’il ne se trompera pas). Pour ce faire, vous pouvez parfaitement créer vous même une boîte de dialogue ou bien utiliser la classe JOptionPane de Swing.
Doit retourner une courte description du format. Celle-ci apparaîtra dans les boîtes dialogues d’ouverture et de sauvegarde de MNT.
Permet de spécifier si la classe de format gère l’importation de MNT, l’exportation de MNT ou bien les deux. Cette fonction doit retourner, respectivement, MntFormat.IMPORT, MntFormat.EXPORT, ou bien MntFormat.IMPORT +MntFormat.EXPORT selon le cas. Si vous définissez un format d’importation seule, vous n'avez pas à implanter la fonction d’exportation de MNT et, inversement, si vous définissez un format d’exportation seule, vous n’avez pas à implanter la fonction d’importation de MNT. Cependant, vous devez toujours définir les fonctions (interface oblige) mais vous pouvez laisser la fonction vide.
Si jamais vous désirez rajouter la fonction d’import à une classe déjà existante d’export seule, (ou inversement), n’oubliez surtout pas de modifier cette fonction, sinon KartoMNT ne tiendra pas compte de votre modification.
- public void exportMNT (MNT mnt, String filename) throws IOException
Ceci est la fonction gérant l’exportation du MNT. Elle prend en paramètre le MNT à exporter et le nom du fichier où doit s’effectuer la sauvegarde. Elle envoie une exception IOException si jamais l’écriture du fichier fonctionne mal.
Généralement, cette fonction doit :
Attention : si vous écrivez en format binaire, sachez que Java écrit par défaut les fichiers en Big Endian. Si jamais vous désirez écrire en Little Endian, vous pouvez utilisez la classe LittleEndianOutputStream du package kartoMNT. Vous pouvez trouver un exemple de son utilisation dans la classe MntFormatLeveller.
- les tailles du MNT en X et en Y accessibles avec mnt.getXMax() et mnt.getYMax().
- les pas en X et Y accessibles avec mnt.getPasX() et mnt.getPasY().
- la calibration si vous le désirez avec mnt.getX1(), mnt.getY1(),
mnt.getX2(), mnt.getY2()
- les données du MNT accessibles avec mnt.getValue(x, y)
Cette fonction doit demeurer vide si le format ne gère que l’import.
- public MNT importMNT(String filename) throws IOException
Ceci est la fonction gérant l’importation du MNT. Elle prend en paramètre le nom du fichier où se trouve le MNT et retourne le MNT lu. Elle envoie une exception IOException si jamais la lecture du fichier fonctionne mal.
Généralement, cette fonction doit :
- les tailles en X et Y du MNT
- les pas en X et Y
- la calibration (ici, c’est obligatoire)
modificateur)
Si jamais le format de fichier que vous charger ne contient pas de données de calibration, soit inventez les, soit demandez les à l’utilisateur à l’aide d’une boîte de dialogue.
Cette fonction doit demeurer vide si le format ne gère que l’export.
Il fort probable que vous ayez à un moment donné, besoin de fusionner plusieurs MNT. En effet, on travaillera souvent par partie des petits MNT (on a vu que cela demandait un certain temps). La fusion de MNT permettra donc de regrouper différents MNT créées à différents moments ou par différentes personnes afin d'obtenir des MNTs de taille plus conséquentes.
De plus, on est limité par la capacité des outils de numérisation (la taille d'un scanner normal ne permet évidement pas de numériser d'un seul trait toute une carte de randonnée), et par les capacités des machines (une carte entière à traiter impliquerait des coûts de calculs importants lors de la détection des lignes et surtout de l'interpolation pour la détermination des altitudes).
Pour fusionner plusieurs MNT, sélectionnez le menu "MNT > Modification/Fusion de MNT".
Sélection des MNT :
Tout d'abord, vous devez sélectionner les MNT que vous souhaitez fusionner. Le bouton Ajouter vous permet d'aller rechercher les fichiers correspondants.
Une liste montre tous les MNTs chargés. En cliquant sur un de ceux-ci, vous pourrez voir ses caractéristiques (coordonnées, pas d'échantillonnage) sur la partie droite du dialogue. Sur la partie haute sont dessinés les rectangles correspondant à tous les MNTs chargés (ajustez la taille de l'affichage avec les boutons de zoom "+" et "-"). Le MNT sélectionné dans la liste y est dessiné en rouge. Vous pouvez supprimer le MNT sélectionné avec le bouton Supprimer.
La superposition de parties des MNT ne pose pas de problème lors de la fusion. Les données du premier sur la liste des MNT "en conflit" seront utilisées lors de la fusion. Par contre, il est préférable de ne pas laisser de trous, à moins de les combler par la suite avec une autre fusion. Les "trous" se verront affecter une altitude nulle qui faussera la représentation du MNT.
Les différents MNT pourront également avoir des pas d’échantillonnage différents.
Détermination du nouveau MNT :
Vous pouvez ensuite (c’est facultatif) spécifier les caractéristiques du MNT que vous voulez générer.
Dimensions :
Dans les champs Xo, Yo, Xm, Ym, entrez les dimensions du MNT que vous souhaitez obtenir. Vous pouvez vous aider pour cela des informations affichées lorsque vous sélectionnez un MNT dans la liste des MNT chargés. Un rectangle vert dans le panneau du haut vous indique la dimension de votre nouveau MNT.
Si vous laissez ces champs libres, les dimensions du MNT seront les dimensions du rectangle englobant tous les MNT que vous avez chargés. (Attention : si des zones ne sont dans aucun MNT, elles se verront affecter une altitude nulle..)
Echantillonnage :
L’échantillonnage est la distance séparant deux points du MNT. Il peut être différent dans les deux dimensions x et y. Lors de la fusion de MNT, il est possible de déterminer ceux-ci :
Ces deux paramètres étant évidemment étroitement liés.
Si ces champ ne sont pas remplis, on prendra par défaut le pas d’échantillonnage du premier MNT de la liste des MNT chargés.
Ré échantillonner – Retailler un MNT
Il est possible de modifier un MNT sans avoir à repasser par l’interpolation des altitudes des lignes de niveaux.
On peut vouloir retailler un MNT, c’est à dire lui données certaines dimensions particulières, ou en extraire une partie.
On peut aussi vouloir le ré échantillonner, c’est à dire augmenter ou diminuer le nombre de points, pour l’adaptation à d’autres applications, pour le rendre moins important en terme de mémoire (sous échantillonnage).
Pour cela, ouvrir le menu "MNT > Modification/Fusion de MNT". On procèdera de la même manière que pour la fusion de MNT, mais en ne chargeant qu’un seul MNT (celui que l’on souhaite modifier).
Le bouton Ajouter vous permet d'aller rechercher le MNT dans vos fichiers.
En fonction des modifications que vous souhaitez apportées, remplissez uniquement les champs correspondants dans la partie "Nouveau MNT". Les autres seront par défaut ceux d'origine de votre MNT.
Appuyez sur générer le MNT pour obtenir le nouveau MNT. N'oubliez pas de le sauvegarder : il s'agit d'un nouveau MNT et l'ancien n'a pas été écrasé.
La visualisation 3D de MNT peut être lancée à partir de l'item Visualisation 3D de MNT se trouvant dans le menu MNT.
Une fenêtre de dialogue s'ouvre alors permettant de configurer la visualisation 3D.
Etudions ensemble les différentes parties de ce dialogue :
La partie MNT :
C'est ici que l'on choisit le MNT que l'on désire voir s'afficher. Généralement, on le charge à partir d'un fichier. Celui-ci peut être sélectionné grâce à une fenêtre de dialogue accessible à l'aide du bouton "...". Cependant, si le visualisateur est démarré à partir d'un document MNT, un deuxième radio-bouton apparaît pour proposer la visualisation du MNT courant.
La partie Texture de MNT :
On détermine ici la texture qui sera appliquée sur le MNT. Vous avez plusieurs plusieurs choix possibles : soit vous ne sélectionnez aucune texture, auquel cas, le MNT sera tout blanc, soit une texture calibrée, soit un fichier de texture. La différence entre une texture normale et une texture calibrée est que la normale sera plaquée sur l'ensemble du MNT alors que la calibrée tient compte des données de calibration de la texture et du MNT afin de placer la texture au bon endroit et à la bonne échelle. Une texture calibrée est tout simplement un fichier .karto dans lequel on a réalisé la calibration de l'image. Si jamais l'image du .karto n'était pas encore calibrée, l'image serait appliquée sur l'ensemble du MNT comme pour un fichier de texture normale. Dans le cas où l'utilisateur a lancé le visualisateur depuis un document Karto, un nouveau radio-bouton offre la possibilité de choisir la texture calibrée courante sur laquelle on travaillait.
Attention, il se peut que votre texture ne se charge pas. Ceci est dû à des problèmes de fonctionnement du TextureLoader de Java3D . Si jamais cela vous arrivait, suivez ces quelques conseils :
La partie Texture Background :
Elle permet à l'utilisateur d'afficher d'une texture en fond. Si celui-ci ne le désire pas, le fond sera complètement noir.
La partie Paramètres :
Cette partie vous donne l'alternative de modifier quelques paramètres cruciaux de l'application.
Si c'est le radio-bouton Automatique (conseillé) qui est sélectionné, KartoMNT choisit seul les paramètres de manière optimale.
Si, par contre, c'est le radio-bouton Manuel (pour expert) pour lequel vous avez opté, il aura le loisir de modifier 6 paramètres (Attention, il doit les modifier tous les 6) :
Attention cependant : ces deux paramètres dépendent de la taille du MNT. Ainsi, 2 élevé à la puissance la somme des deux paramètres ne doit pas dépasser la taille minimale des tailles en X et Y du MNT, sinon la visualisation du MNT ne fonctionnera pas.
Exemple : vous choisissez un LODDepth de 2, donc le MNT est divisé par 2 deux fois. Il est donc divisé en 4 sous parties. Si vous choisissez alors un LODLevel de 2, vous voulez que chaque sous partie puisse être représentée par 3 niveaux de précision. Chaque sous partie doit donc avoir un côté de taille 4 au minimum (et sera alors représentée par un carré en basse précision, par quatre niveau intermédiaire, ou par 16 en haute précision). Faisons le calcul : 4 subdivisions de 4 points minimums chacune = 16 points minimum pour le coté d'un MNT).
Enfin, trois boutons terminent cette fenêtre de dialogue. Un bouton "Annuler" si finalement vous avez décidé de ne pas lancer la visualisation 3D, un bouton "Enregistrer" pour pouvoir retrouver l'ensemble des configurations, paramètres et nom de fichier à la prochaine utilisation du visualisateur (ce qui est bien pratique) et, pour terminer, un bouton OK confirmant l'ensemble de vos choix. Si jamais vous aviez commis la moindre erreur (fichier n'existant pas, mauvais paramètre), une petite fenêtre de dialogue s'affiche par erreur commise et la validation est avortée.
Si vous utilisez une texture calibrée pour texturer le MNT et que celle-ci ne recouvre pas entièrement le MNT, une boîte de dialogue apparaît signalant le problème. Celle-ci vous propose alors de sélectionner soit une couleur, soit une texture pour boucher les trous. La couleur et le choix du fichier de texture s'effectue à l'aide d'une boîte de dialogue dédiée à chaque tâche. Si jamais la texture est trop petite, celle-ci est répétée autant de fois que nécessaire pour combler le trou. Vous pouvez peut enregistrer vos choix à l'aide du bouton Enregistrer et les valider en utilisant le bouton OK.
Ensuite, KartoMNT affiche une prévisualisation de la texture calibrée qu'il a réussi à générer. La fenêtre de dialogue ouverte permet de sauvegarder la texture à l'aide du bouton Enregistrer, cela afin de pouvoir la modifier si vous le désirez. Un appui sur la touche OK lancera le logiciel de visualisation 3D. Une barre de progression indiquant l'avancement de la création du Terrain 3D se manifeste.
Après un petit moment de chargement, l'interface du visualisateur apparaît enfin. Elle est composée de 3 grandes parties, plus le bouton de titre :
La partie Visualisation
C'est l'endroit où est affiché le MNT en 3D que l'on désire visualiser. A part le MNT, on voit :
Dans le visualisateur KartoMNT, l'ensemble des rotations de la caméra peuvent s'effectuer à l'aide de la souris. Lorsque vous cliquez sur un bouton de la souris dans le panel de visualisation, et que vous maintenez ce bouton enfoncé en déplaçant la souris, la caméra effectue une rotation afin de suivre le curseur de la souris. La direction du suivi s'effectue selon un vecteur partant du centre de l'écran (de la croix verte) et allant en direction du curseur de la souris. L'amplitude du mouvement est fonction de la norme de ce vecteur. Lorsque vous relâchez le bouton, le mouvement rotationnel s'arrête. Vous pouvez également lancer une rotation continue en effectuant les étapes précédentes assez rapidement. La rotation s'arrête alors par un simple clic de la souris.
Le repère orthonormé vous offre la possibilité de connaître à tout moment votre orientation de manière visuelle. Normalement, la flèche rouge pointe vers l'Est, la flèche verte vers le Nord et la flèche bleu vers le ciel. Dans le cas où vous ne vous souviendriez plus de la correspondance des couleurs, rappelez-vous ce moyen mnémotechnique :
RGB => XYZ.
Le socle est un autre moyen de se repérer dans l'espace. Sa base se trouve à l'altitude 0 et ses bords remontent jusqu'aux coins du MNT.
L'affichage du repère et du socle peut être désactivé.
La partie Capture
Trois boutons différents permettent de réaliser des captures de la visualisation 3D.
Le premier bouton représentant un appareil photo permet de réaliser des captures d'écran.
Deux types de captures d'écran existent :
Une fenêtre de dialogue vous permet de choisir entre les deux. La sauvegarde peut s'effectuer aux format GIF et JPEG à partir d'une fenêtre de dialogue. Les fichiers GIF prennent bien moins de place que les JPEG mais sont de plus piètre qualité (les GIF comportent 256 couleurs alors que les JPEG en offrent 16 millions). Les JPEG ne sont pas compressés (a vous, si vous le souhaitez, de réaliser cette compression avec l'outil de votre choix...). Le nom de la sauvegarde peut être réalisé de manière automatique (auquel cas, celle-ci sera placée dans le répertoire de capture et nommée selon le format captN.[gif,jpg] où N est un numéro) ou bien laissé au choix de l'utilisateur par une fenêtre de dialogue. Notons que la capture "grande qualité" semble ne pas fonctionner correctement sous Linux, ceci est dû à un bug de la version de Java3D sous Linux qui sera certainement bientôt réparé.
Le deuxième bouton illustré par une caméra à gauche d'un ensemble de fichier sera utile si vous voulez prendre plusieurs captures d'écran d'affilées. Au clic sur ce bouton, une fenêtre de dialogue s'ouvre vous demandant de rentrer le nombre de millisecondes que vous désirez qu'il s'écoule entre chaque saisie. La saisie démarre après avoir validé votre réponse. Le Start du bouton se transforme en Stop vous signifiant qu'il faut cliquer dessus lorsque vous voulez que la saisie s'arrête. Une fois cela fait, vous pouvez choisir de sauvegarder votre séquence d'images au format GIF ou JPEG de manière manuelle ou automatique (les noms automatiques sont de la forme : sequS-N.[gif,jpg] où S est le numéro de la séquence et N le numéro de l'image dans la séquence). Attention à avoir assez de mémoire vive avant de lancer la saisie,...
Le troisième bouton ressemble au deuxième mais possède à droite un gros point rouge. Il permet la saisie de "film" sous format de gifs animés selon le même mécanisme que celui de la saisie de séquence d'images (le dénomination automatique est alors filmN.gif).
La partie du Panel de commande
Le panel de commande est séparé en 3 onglets:
C'est l'onglet le plus important aussi est-il affiché en premier par défaut. Il contient l'ensemble des commandes permettant la navigation dans le monde 3D.
Tout d'abord, est affichée la position de la caméra dans le monde. Les coordonnées sont définies en fonction des données de calibration se trouvant dans le MNT. Le bouton Change Position vous autorise à entrer une nouvelle position. La caméra se trouvera alors "télétransportée" à la nouvelle position.
Ensuite, est indiquée l'orientation de la caméra (direction du regard). Les angles sont exprimés en degré selon les angles d'Euler, c'est-à-dire par l'azimut (A), la pente (P) et le roulis (R).
L'azimut correspond à un angle sur le plan horizontal, la pente, à un angle sur le plan vertical à la caméra, le roulis, à un angle sur le plan frontal de la caméra. Comme pour les positions, il est possible de modifier l'orientation de la caméra en appuyant cette fois-ci sur le bouton Change Angles. Lorsque vous changez d'orientation de cette façon, il peut arriver que les angles s'affichant ne soient pas ceux que vous avez rentré. Cela est tout à fait normal. En effet, les angles d'Euler ne sont pas univoques car, pour une même orientation, il existe deux angles d'Euler différents. Ainsi, si vous rentrer l'orientation A : 0, P : 0 et R : 0 ne soyez pas étonnés si l'application vous retourne que votre orientation est A : 180, P : 180 et R : 180. Il s'agit exactement de la même orientation !
La position et la rotation sont réactualisées toutes les secondes par l'application.
Enfin, l'onglet contient un ensemble de boutons facilitant la navigation de la caméra. Les fonctionnalités de la plupart de ceux-ci sont également accessible au clavier. Seulement, alors que le mouvement des boutons est continu, celui des touches de clavier s'effectue par pas. Voici un descriptif de l'ensemble des boutons :
La rotation sera à gauche si vous cliquez sur le bouton , à droite si vous cliquez sur le bouton
.
Le bouton vous éloignera du centre du MNT alors que le bouton
vous avancera.
Les boutons et
donneront un angle de vue plus haut ou plus bas du MNT. Veillez toujours à ne pas trop vous approcher du centre et à ne jamais aller trop haut ou trop bas lorsque vous évoluez dans ce mode si vous voulez éviter les mauvaises surprises.
Les boutons ,
et
deviennent inopérationnels dans le mode rotationnel.
Celui-ci est composé de trois régions :
Le bouton à glissière vous offre la possibilité d'altérer ou d'améliorer la qualité du MNT affiché. La qualité va crescendo avec l'indice présent sur le slider. Elle est par défaut à 5. Modifier la qualité change en fait l'étalonnage des distances d'affichage des différentes qualité de LOD. Ainsi, augmenter la qualité fera en sorte que le MNT s'affiche mieux plus loin. Il est donc inutile d'augmenter la qualité si vous vous trouvez déjà assez près du MNT pour qu'il s'affiche avec sa qualité optimale.
Baisser la qualité diminue le nombre de triangles utilisés pour l'affichage du MNT et augmente ainsi grandement la vitesse d'affichage. Il peut être intéressant de baisser la qualité lors des déplacement de la caméra pour ensuite la réaugmenter lorsque vous vous trouvez à l'endroit de votre choix pour prendre une capture d'écran, par exemple. Vous l'avez sans doute remarqué, baisser la qualité peut provoquer l'apparition de trous dans le MNT. Ceux-ci apparaissent aux frontières entre deux zones du MNT ayant des niveaux de détails différents. Ce ne sont pas des artefacts et ils sont tout à fait normaux dans l'optique du programme puisqu'il est impossible d'approcher correctement deux carrés avec un seul ! Si vous voulez les voir disparaître, augmentez la qualité !
Le bouton présent dans cette zone offre l'opportunité de visualiser le MNT en mode de rendu fil de fer. Cela permet de mieux apprécier la finesse du maillage du MNT ou au contraire de bien visionner l'intérêt et le fonctionnement des niveaux de détails (LOD). Un nouveau clic sur le bouton permet de retourner au mode texturé. Cette fonctionnalité peut également être accédée par la touche T.
Active ou désactive les aides présentes à la navigation affichées par le visualisateur, à savoir, le cockpit ou bien le socle.
Cet onglet permet de modifier les différentes vitesses de navigation de la caméra.
Celles-ci sont de quatre sortes :
KartoMNT est capable de supporter et de s'adapter à différentes langues.
La langue est déterminée dans le fichier karto.ini. Pour la changer, il suffit de modifier dans ce fichier l'identificateur de langue ("language=...")en remplaçant ce dernier par le code de la langue souhaitée au format ISO Language Code (ex: "fr"="français", "en"="anglais", etc.). Ces codes peuvent être trouvés à l'adresse http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt.
S'il n'existe pas déjà, il faudra aussi ajouter le "dictionnaire" correspondant à ceux déjà présents.
Pour ce faire:
Si vous avez modifié correctement le fichier karto.ini, kartoMNT démarrera à présent dans la nouvelle langue.
Les dictionnaires français, anglais, et espagnol sont initialement disponibles.
Si kartoMNT ne trouve pas le dictionnaire spécifié dans karto.ini, il cherchera celui de la langue par défaut du système, puis, s'il ne le trouve pas non plus, utilisera le fichier par défaut kartoMNTResources.properties (qui est en français).
Nul n'est parfait…
Vous trouverez ci-dessous une liste des bugs détectés, et des améliorations à apporter à KartoMNT (dans des versions à venir) :
Partie Karto :
Partie MNT: