Page : appli00a.htm
Auteur : Jean HENRI
Création : 18 nov 2003
Mise à jour : 02 déc 2003

Projet SIG_2004
Système d'Information Géographique
Application(s) 0 : Étude des informations vectorielles

Application 0.1 : Test sur les coordonnées géographiques

À partir du fichier archive GEOFLA-dep-L93-MM.zip, étudier la structure des fichiers dep_france_dom.MID et dep_france_dom.MIF.

La documentation associé au fichier archive (GEOFLA_MM.pdf) nous fournit les renseignements sur la structure des fichiers. Le fichier principal est le fichier qui porte l'extension MIF. Dans l'entête du fichier la zone qui commence par le mot-clé COLUMNS décrit la strcture du fichier portant l'extension MID.

Le fichier MID est structuré de la manière suivante :

La documentation décrit la signification de chaque champ, sachant que les notions de centroïdes ne nous préoccupent pas pour notre application.

Le fichier MIF contient ensuite la description des contours des départements, et ce selon l'ordre dans lequel ils sont décrits dans le fichier MID : Les 2 départements de la Corse sont situés entre le département du Finistère (29) et le Gard (30).

Chaque description de département commence par le mot-clé REGION suivi, sur la même ligne, du nombre de polygones qui composent le tracé. Ensuite viennent, pour chacun des polygones, le nombre de points définis et pour chaque point ses coordonnées.

Comment dessiner un département à partir des informations contenues dans ces fichiers ?

Dégager un algorithme de principe pour tracer le département n°??

Pour tracer le département de code NumDep :
compter dans le fichier MID les lignes jusqu'à trouver celle contenant le code NumDep -> NumLigne

Parcourir le fichier MIF jusqu'à trouver le mot REGION pour la NumLigne fois
Récupérer le nombre de polygones -> NbPoly

Pour chacun des polygones, parcourir les points pour déterminer les valeurs extrèmes de chacune des composantes -> XminDep, XmaxDep, YminDep, YmaxDep

Connaissant les dimensions utiles de l'image à créer (LargeurImg, HauteurImg) on peut calculer les facteurs d'échelle suivants :

EchelleX <-- (XmaxDep - XminDep) / LargeurImg
EchelleY <-- (YmaxDep - YminDep) / HauteurImg

Pour éviter un tracé déformé, on doit conserver le facteur d'échelle le plus grand :

Echelle <-- max (EchelleX, EchelleY)

On doit ensuite décider de la position du repère lors du tracé : Xorigine, Yorigine

Il est alors possible de placer chaque point du contour (en parcourant à nouveau pour chaque polygone les points) :

Ximage <-- (Xdep - XminDep) / Echelle + Xorigine
Yimage <-- (Ydep - YminDep) / Echelle + Yorigine

Écrire les algorithmes de conversion

Les données globales à retenir sont :

XminDep, XmaxDep, YminDep, YmaxDep sont réels
LargeurImg, HauteurImg sont entiers
OrigineAbscisse, OrigineOrdonnee sont entiers
InversionAbscisse, InversionOrdonnee sont booléens
FichierDept est un fichier texte

Les algorithmes à rédiger sont :

procédure TrouverDepartement (E : NumRegion est un entier; S : NbZones est un entier)

procédure ExtraireCoordonnees (E : Ligne est une chaine de car; S : ValeurX, ValeurY sont réels)

procédure TrouverCoordonneesExtremes (S : Xmin, Xmax, Ymin, Ymax sont réels)

fonction CalculerEchelle (E : Xmin, Xmax, Ymin, Ymax sont réels; Largeur, Hauteur sont entiers) retourne un réel

procédure CalculerPositionPoint (E : PositionX, PositionY sont réels; S : Abscisse, Ordonnee sont entiers)

Proposition d'algorithmes : voir la page en ligne


fin de la page appli00a.htm