Traitement des cartes numérisées

Afin de traiter une carte numérisée, vous devez l'importer au préalable, probablement avec r.in.gdal, dans un emplacement en x-y, préparé selon les calculs éffectués dans the chapter called Plannifier et construire une base de données GRASS. Vous pouvez, par la suite, le rectifier pour obtenir des données géocodées .

N'oubliez pas d'utiliser g.region pour vous assurer que votre carte sera correctement affichée et traitée : g.region rast=NomDeVotreCarteRaster.

Dans cette section la rectification d'une carte numérisée vers sa référence topographique sera expliquée. Pour un entendement plus clair vous devriez lire the Section called Definition générale d'un Périmetre de Projet lors de l'utilisation de cartes numérisée in the chapter called Plannifier et construire une base de données GRASS.

Souvent, de tels fichiers sont stockés en TIFF, PNG ou autres formats. Le nombre de lignes et de colonnes peut être défini dans le logiciel de numérisation utilisé, ou obtenu à travers la commande ImageMagick identify.

Lancez GRASS avec un emplacement en xy qui aura été définit selon la taille de la carte numérisée, et importez la tel que décrit plus tôt. La carte numérisée ne sera pas modifiée par une transformation affine (avec le module i.rectify [1] La transformation affine effectue des rotations, élongations et "jolted", et peut être utilisée pour des données raster, pour lesquels l'orientation interne doit être préservée.

Geocodage de cartes numérisées

Maintenant la "rectification" de la carte brute, par exemple sa transformation pour le géocodage, va être réalisée. Le process décrit ici n'est valable que pour des données numérisées, non référencées. Nous utiliserons les modules i.rectify, i.points, et i.target.

Si vous avez des données digitales, déjà géocodées et souhaitez changer leur projection, merci de vous référer à m.proj et r.proj pour les transformation automatisées de cartes.

Après l'import de la carte, Le processus est le suivant : La carte doit être ajoutée à un "groupe d'images" ("image group"). Ceci est simplement une liste de fichier de données raster à traiter, toutes les images doivent avoir le même type de géocodage. Subséquament une cible de transformation est affectée, et sera un emplacement additionel. Par exemple un emplacement UTM. Maintenant les références géographiques doivent être définies pour "informer" le module de transformation des nouvelles coordonnées de chaque pixel dans le nouvel emplacement UTM. C'est pourquoi les coordonnées des quatre coins dans l'emplacement en xy sont affectés de coordonnées géographiques. Ceux-ci sont évidement les coins géographiques, et non des coins de la carte papier ! S'il n y a pas de bords lisible à la carte, par exemple : vous n'avez numérisez qu'une partie de la carte complète. Vous pouvez utiliser les points de croisement des repères imprimés. Ceux-ci devraient être choisis aussi proche que possible des coins "réels" de la carte. Ces points doivent encadrer une zone rectangulaire, puisque le morceau de carte sera tourné, étiré dans la transformation affine suivante.

Si aucun repère n'est imprimé, vous pouvez soit, utiliser des éléments facilement identifiables du paysage, tel que des carrefours. Une fois les références géographiques assignées, la transformation de la carte brute en emplacement UTM est réalisée. La démarche détailée est la suivante :

  1. Promptez le nom du nouveau groupe d'image à définir : $ i.group

    • Nommez ce groupe, par exemple : "map1".

    • Marquez la carte à importer avec un "x".

    • Quittez le module i.group avec la touche de "retour".

  2. Indiquez l'emplacement cible et le jeu de cartes (dans lequel l'emplacement UTM location devrait être transformé) dans : $ i.target

  3. Lancez une console GRASS : $ d.mon x0

  4. Assignez les coordonnées UTM aux quatres coins de l'image à transformer : $ i.points

    • Promptez le groupe d'image à transformer (ne contient que la carte), dans cet exemple "map1".

    • Basculez vers la console GRASS. Là affichez la carte importée.

    • A l'aide de la souris, selectionnez aussi précisément que possible le premier repère de référence (premier coin de l'image à transformer). Saisissez les coordonnées UTM correspondantes en lignes de commandes (les azimutes est et nord correspondant, tel que relevés sur la carte imprimée), délimités par des blancs. La fonction "ZOOM" est assez utile pour cela, puisqu'elle permet de trouver les points correspondants plus facilement.

      Avec l'aide du composant "Analyze" vous pouvez vérifier les "erreurs rms" ("rms error").[2] Celles-ci ne devraient pas être supérieures à la GRILLE DE RESOLUTION de l'emplacement UTM. Toutes erreurs partielles (une pour chaque couple de points correspondant) sont sommées dans une erreure globale. Que cette dernière soit trop élevée, vous pouvez l'ajuster avec la redéfinition (resetting) et le reassignement (reassigning) de point correspondants isolés. Dans la fenêtre de "Analyzes" double cliquez sur le point concerné pour le supprimer. Ensuite reassignez le pour réduire les "erreurs rms". Que les quatre points soient assignés avec suffisament de précision, quittez $ i.points , toutes les assignations seront sauvegardés automatiquement.

  5. Maintenant démarréz le module de transformation : $i.rectify avec un polynome du premier degré (en tant qu'ordre de transformation ("order of transformation")). Ceci réalisera la transformation linéaire.

    Tout d'abords, le groupe d'image (image group) qui doit être transformé (dans ce cas : "map1") et le nom du(des) nouveau(x) fichier(s) sont indiqués. Maintenant choisissez "1" en tant qu' "ordre de transformation" ("order of transformation"). Finalement vous devrez dire si voulez que la transformation se fasse

    1. vers l'emplacement courant ou

    2. la "région minnimale ("minimal region").

    Là vous devez choisir le point (1.) du menu, qui est équivalent à l'emplacement UTM complèt. Sinon seule les parties courament active de l'emplacement UTM seront transformées, ce qui pourrait ne correspondre qu'à une portion de la zone complète.

    Le temps de calcule pour une carte au format A4 (21x29,7cm) numérisée à 300dpi est, sur une station SUN SPARC/25 proche de cinq minutes. Un PC sous Linux (au delà de 200MHz) travail plus rapidement.

Puisqu'UNIX est capable de travailler en multi-tâche, vous pouvez continuer votre travail sous GRASS, ou le quitter, pendant que les calcules se poursuivent en tâche de fond. Quand la transformation est terminée (i.rectify envoi alors un e-mail), le succès de l'opération doit être vérifié dans l'emplacement cible (Si vous ne l'avez pas encore fait, quitez et relancés GRASS : quittez l'emplacement en x-y et relancez à nouveau GRASS dans l'emplacement UTM). Après avoir démarré une console GRASS la carte transformée peut être affichée avec d.rast.

Le module d.what.rast permet, en combinaison avec l'agrandissement de zones de cartes simples (cf the chapter called Zoom et pan)), de vérifier les coordonnées du repère de référence. Ceux-ci devraient, évidement, être en coorélation avec ceux qui leurs correspondent sur la carte imprimée. Sinon, les "erreurs rms" ("rms error") étaient sans doute trop importantes. La correction est possible à travers la réassignation de point isolés dans l'emplacement en x-y. Dans ce cas la carte transformée dans l'emplacement UTM devrait être supprimée (avec r.remove)), puisqu'elle sera recréé dans la nouvelle transformation. Subséquamant, éffectuez la transformation avec i.rectify comme décrit plus haut. Le résultat devrait être vérifié à nouveau. Si la transformation est un succès, l'emplacement en x-y, qui n'est désormais plus utile, peut être détruit (voir the chapter called Administrer vos données pour voir comment faire ces modifications).

Géocadage GAP gratuit de cartes multiples, adjacentes numérisées

La transformation décrite dans la section précédente peut être utilisée pour l'import de plusieurs cartes numérisées adjacentes, sans lacunes. L'accès à des scanneurs à tambours n'existera que dans de rares cas, mais des cartes normales sont trop grandes pour un scanneur ordinaire.

Une solution viable est la numérisation de cartes en plusieurs morceaux. Cette solution demande quelques efforts supplémentaires, mais permet l'économie d'un scanneur plus couteux (scanneur à grande échelle). Il est indispensable de numériser en prévoyant des zones de recouvrement sur les limites des morceaux de cartes numérisés, puisque cela améliore la fixation de points concordants.

Comme décrit plus haut, un emplacement cible doit être défini dans le système de coordonnées cible, suffisament large pour couvrir la zone complète à numériser. La résolution doit être choisie suffisament haute pour afficher le plus petit signe conventionel.

Toutes les cartes brutes numérisées sont importées subséquament dans l'emplacement en x-y. Veillez bien à ce que l'étendue de l'emplacement en x-y soit bien égale à l'étendue de la zone complète à numériser.

Maintenant ouvrez un groupe d'images pour chaque carte importée (même s'il ne contient qu'une carte), et ajustez la cible de transformation pour toutes es cartes vers l'emplacement UTM (modules i.group et i.target)). Le process est le suivant :

Chaqu'un des quatre couple de coordonnées des quatres coins de la carte brute à transformer est assigné à un couple de coordonnées UTM i.points), (Voir la section précédente). Ces points doivent encadrer une zone rectangulaire, puisque cette zone sera pivotée et redimensionner avec la transformation affine. Avec i.rectify (en tant que polynome du premier degré) la carte correspondante sera transformée en un système UTM.

Faites en de même avec toutes les autres cartes dans l'emplacement en x-y.

Une fois que toute les cartes numérisées ont été transformée, le résultat peut être vérifié dans l'emplacement UTM (pour cela il faudra quitter l'emplacement en x-y). Relancez GRASS et choisissez le perimetre de projet UTM. Maintenant toutes les cartes individuelles devront être vérifiées pour s'assurer de leur positionnement et de leur orientation correct (précision de base). Ouvrez une console GRASS et placez la région au maximum (valeur par defaut) : g.region -d

Puis il est absolument nécessaire de lancer d.erase, pour informer le sous-système graphique des modifications de coordonnées. En lancant d.rast sans parametres (mode interactif) vous avez la possibilité (après avoir choisi le fichier à afficher) de superposer des images raster (mode overlay : "yes" ou flag "-o"). De cette façon chaque fichier est affiché à tour de rôle, et les cartes devraient reposer les unes à côté des autres. avec d.zoom vous pouvez maintenant vérifier s'il y a des lacunes entre les cartes (le re-affichage avec d.rast est nécessaire). Idéalement aucune lacune ne devrait apparaître.

Si les cartes montrent des bords non souhaités, ceux-ci peuvent aisément être supprimées. Pour cela, zoomez dans la carte avec d.zoom et ajustez les nouvelles coordonnées avec g.region par petit pas afin d'atteindre des valeurs arrondies "confortables". Là vous pouvezégalement utiliser l'option "-a" en combinaison avec le parametre "res=" de g.region pour aligner les limites de la cartes en respectant la résolution souhaitée. Pour sauvegarder la carte avec ses nouvelles dimensions, générez une "self copy" de la portion de carte affichée avec r.mapcalc:

mapcalc> new_map = old_map

Notes

[1]

La transformation affine est une transformation linéaire, dont les parametres sont calculés par analyse régressive. La méthode d'rééchantillonage du "plus proche voisin" ("nearest neighbor resampling") est utilisée par i.rectify pendant la transformation.

[2]

les erreurs "rms error" représentent la distance au point correspondant, si l'on considère des points correspondant idéalement placés. Elles sont calculées comme suit : rms = ((x-x orig )^2 + (y-y orig ))^(1/2)