Академический Документы
Профессиональный Документы
Культура Документы
0
- Guide d’utilisation –
Introduction ......................................................................................................................... 2
Description du logiciel ...................................................................................................... 2
L’utilisateur de KartoMNT : vous-même.......................................................................... 2
Mise en place ..................................................................................................................... 2
Lancement ............................................................................................................................ 3
Langues............................................................................................................................... 40
1
Introduction
Description du logiciel
KartoMNT est une application dont le but est de générer un MNT à partir d’une simple
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é.
Mise en place
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)
2
Lancement
Pour lancer KartoMNT, vous pouvez simplement exécuter KartoMNT.bat si vous utilisez
Windows, ou runKartoMNT.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 runKartoMNT.sh (la commande chmod 755 runKartoMNT.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;jarsJAVA3D;lib/kartoMNT.jar kartoMNT.Main
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) et
avoir l’ensemble des jars de la librairie JAVA3D.
Vous trouverez vraisemblablement les détails nécessaires dans la documentation de votre
JVM, ou en lançant java sans option.
3
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 :
- Préparer la carte
- Détecter les lignes de niveaux
- Déterminer les altitudes
- Calibrer la carte
- Générer le MNT
Préparer la carte
Pré-traitement :
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 l'exemple suivant, on effectue une simple correction gamma :
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ègles 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 être intéressant (et plus rapide) de décalquer les lignes de
niveaux à la main sur un calque et de scanner ce calque. La carte des lignes sera ainsi
débarrassée des écritures, zones ombrées, etc., qui faussent la détection, et celle-ci sera par
conséquent nettement plus efficace.
4
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 ".
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 :
5
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 :
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.
6
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.
Pour plus de commodité, il est possible de détecter les lignes de niveaux 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.
7
8
Affiner les lignes de niveaux et supprimer les points isolés :
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).
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 ".
9
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é :
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 " :
10
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.
Placer un sommet :
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é
11
Déterminer l’altitude d’une ligne de niveaux :
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.
12
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é.
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 à 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.
13
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 les lignes au moyen du pinceau, réglé sur une épaisseur de
trois pixels :
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.
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
sélectionner une ligne, dont il détecte l'extremité, et de se diriger avec la souris vers une autre
ligne, dont il détecte également l'extrémité 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 niveaux).
Pour sélectionner une ligne et confirmer la jonction utilisez le bouton gauche de la souris et
utilisez le bouton droit pour annuler.
Voici un exemple d'utilisation (les lignes de niveaux détectées sont en bleu clair) :
Détection de l'extrémité d'une ligne pointée par le Détection de l'extrémité de l'autre ligne et
curseur. raboutage.
14
Gomme :
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.
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.
On utilise trois couleurs différentes pour représenter les lignes de niveaux, comme on peut
le voir dans cet exemple :
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.
15
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.
Calibrer la carte
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.
16
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.
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.
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.
17
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
18
Génération du MNT
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 ".
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.
19
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.
20
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 lesquels 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".
21
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
niveaux ".
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.
22
Sauvegardes et importations
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 niveaux.
Les lignes de niveaux 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").
Formats 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.
- Implanter votre propre classe de format. Son nom doit absolument commencer par
« MntFormat ». Elle doit appartenir au package kartoMNT et implémenter l’interface
MntFormat.
- Une fois cela fait, placez votre classe dans le répertoire kartoMNT. Vous pouvez alors,
si vous êtes sous Windows, double-cliquer sur compileFormat.bat ou bien, si vous êtes
sous Linux, exécuter le script compileFormat.sh. Dans le cas où ces fichiers ne
fonctionneraient pas ou seraient absents, la commande de compilation est :
Une aide détaillée sur l'ajout de fortmats de MNT est fournie dans le kit KartoMNT,
dans le répertoire format_help.
23
Implantation d'une classe 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.
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.
24
- 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.
- ouvrir le fichier de nom filename en écriture selon que le format soit ascii ou binaire.
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.
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.
- ouvrir le fichier de nom filename en lecture selon que le format soit ascii ou binaire.
- extraire du fichier :
- les tailles en X et Y du MNT
- les pas en X et Y
- la calibration (ici, c’est obligatoire)
- créer un objet MNT et lui fournir les données ci-dessus (par constructeur ou
modificateur)
- créer un tableau de float de taille en X du MNT * taille en Y du MNT
- extraire les données altimétriques du fichier dans le tableau
- utiliser mnt.setFloatData(data) pour placer le tableau dans le MNT.
- retourner le MNT.
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.
25
Fusionner plusieurs MNT
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).
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.
26
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.
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 :
- soit en les spécifiant directement (sélectionner le mode Pas d’échantillonnage et
remplir les champs Pas X et Pas Y),
- soit en donnant le nombre d’échantillons que l’on souhaite dans le MNT (sélectionner
le mode Nombre d’échantillons et remplir les champs Nb X et Nb Y).
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.
27
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 donner 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).
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é.
28
Visualiser un MNT en 3D
Partie MNT
Partie Texture
Partie Background
Partie Paramètres
29
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.
On détermine ici la texture qui sera appliquée sur le MNT. Vous avez 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 :
- Les textures carrés fonctionnent en général mieux que les rectangulaires. Evitez les
textures dont la longueur est plus de deux fois plus grande que la largeur.
- TextureLoader semble ne pas fonctionner avec tous les GIF, convertissez donc votre
image en JPEG.
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.
30
La partie Paramètres :
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) :
31
Lancement
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.
L'Interface
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 :
Partie capture
Partie
visualisation
Panel de
commandes
32
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 :
- le cockpit : celui-ci est composé de la croix verte centrale et du repère de direction.
- le socle du MNT
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.
33
La partie Capture
Le premier bouton représentant un appareil photo permet de réaliser des captures d'écran.
- la première réalise une capture de la taille du panel de visualisation, il est ainsi possible
de réduire ou d'agrandir la taille de la capture en modifiant la taille de la fenêtre.Veillez
toujours, lorsque vous utilisez cette méthode de capture à ce qu'il n'y ait pas de fenêtre
devant le panel de visualisation où bien la capture d'écran sera altérée.
- la deuxième effectue une capture de qualité supérieure qui aura d'une taille prédéfinie.
Par défaut celle-ci est de 1600x1600. Si jamais cette taille ne vous convenez pas, vous
pouvez toujours la changer en modifiant les valeurs des variables qualCaptW et
qualCaptH dans le fichier de configuration Donnee.ini.
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 souhaiter de réalioser la 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).
34
La partie du Panel de commande
- L'onglet Navigation
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.
35
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 :
- : dans le plan frontal, la caméra se déplace vers le haut. Touche Page Haute
- : dans le plan frontal, la caméra se déplace vers le bas. Touche Page Basse.
- : si à force de tourner dans tous les sens, vous vous êtes complètement perdu,
ce bouton vous sauvera en ramenant l'orientation de la caméra de telle façon qu'elle
pointe sur le centre du MNT. Touche R.
36
La rotation sera à gauche si vous cliquez sur le bouton , à droite si vous cliquez
sur le bouton .
37
- l'onglet MNT
- Qualité
- Mode de rendu
- Aide
38
- L'onglet Vitesses
- vitesse de mouvement latéral : change la vitesse des déplacement sur le plan frontal de
la caméra, soit les mouvements haut, bas, gauche, droite.
- la vitesse de rotation : change la vitesse des rotations s'effectuant à la souris sur le panel
de visualisation.
39
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:
- Faites une copie du fichier kartoMNTResources.properties;
- Modifiez dans votre nouveau fichier toutes les définitions pour les traduire dans la
langue de votre choix;
- Rebaptisez votre fichier en kartoMNTResources_XX.properties, ou XX est le code
(ISO Language Code) de la langue;
- Veillez a ce que votre fichier soit bien avec les autres fichiers *.properties.
Si vous avez modifié correctement le fichier karto.ini, kartoMNT démarrera à présent dans
la nouvelle langue.
40
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 :
- Chargement d'un fichier .karto : Les fichiers karto se réfèrent à une image (celle de
la carte), qui est identifiée par un chemin absolu sur l'ordinateur. Un fichier karto
déplacé ne retrouvera donc pas toujours sa carte… Heureusement, il est possible de
charger une carte manuellement dans un fichier karto orphelin, mais cela peut poser
des problèmes si l'on ouvre le fichier karto pour les textures calibrées du visualisateur
3D, car celui-ci considère que l'image est présente. Dans ce cas, il faut ouvrir le fichier
dans KartoMNT, aller rechercher l'image manuellement (voir la partie Sauvegardes et
importations), enregistrer le fichier karto ainsi modifié, puis relancer le visualisateur
en appelant le nouveau fichier karto qui aura retrouvé sa carte…
- KartoMNT ne possède pas de fonction undo, qui pourrait être bien utile dans le
traitement des lignes de niveaux.
Partie MNT:
- Il faudrait gérer le cas ou les MNT que l'on recolle avec la fusion de MNT (voir la
partie Fusion de plusieurs MNT) ne sont pas exactement au même niveau. En effet
cela risque d'être le cas si les MNT ont été générés par différentes personnes ou à
partir de différentes cartes. On verrait alors apparaître des "marches" qu'il est
envisageable de lisser afin de les rendre les plus discrètes possible.
- Comme on l'a vu (partie Visualiser un MNT en 3D), certaines images, de part leur
taille ou leurs proportions, se prêtent mal au texturage sur le MNT. C'est un bug qui
est dû à la gestion des images par le système graphique de Java3D, semble-t-il. Il
serait intéressant d'en connaître exactement les limites pour intégrer un test avant le
chargement.
41
- Lorsque l'on affiche le MNT sans textures, il arrive qu'au lieu d'une couleur blanche,
on obtienne des mosaïques de couleurs plus ou moins fantaisistes. Ceci est
probablement dû aux configurations des machines. Certaines n'acceptent pas du tout le
texturage.
- …
42