Page : appli00a.htm |
Projet SIG_2004
|
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.
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 -> NumLigneParcourir le fichier MIF jusqu'à trouver le mot REGION pour la NumLigne fois
Récupérer le nombre de polygones -> NbPolyPour 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) / HauteurImgPour é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
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