[*] up [*] contents
suivant: Traitement des données monter: Chargement et traitement de précédent: Chargement et traitement de   Table des matières

Sous-sections

Chargement des données

Format des données

La base de données se présente sous la forme de deux fichiers, l'un portant l'extension .MIF et l'autre .MID6.1. Ce format est le format d'échange de MapInfo [5], logiciel utilisé par le S.I.G. de la D.D.E.6.2 de la Loire.

La base de données est donc scindée en deux fichiers : les données graphiques sont regroupées dans le fichier MIF et les données tabulaires dans le fichier MID.

Format du fichier MIF

Le fichier MIF contient l'ensemble des données graphiques, c'est-à-dire les points définissant les différents contours présents dans la carte. Il est constitué d'un en-tête fournissant différents informations sur les données (cf. par exemple la figure B.1) :

FIGURE B.1: Exemple d'en-tête de fichier MIF
\begin{figure}
\begin{verbatim}Version 300
Charset ''WindowsLatin1''
Delimiter '...
... Integer
POP_90 Float
Tx_vacance Decimal(10, 1)
Data\end{verbatim}\end{figure}

Pour des questions de facilité de lecture, l'en-tête du fichier MIF été supprimé mais son analyse semblerait indispensable si l'on voulait traiter d'autres bases de données.

Une section de données, introduite par le paramètre DATA seul sur une ligne, suit l'en-tête. Elle contient l'ensemble de primitive graphique, chaque objet étant associé à une ligne du fichier MID. Les différents objets graphiques sont les suivants :
  • point ;
  • polyligne ;
  • arc de cercle ;
  • rectangle ;
  • ellipse.
  • ligne ;
  • polygone ;
  • texte ;
  • rectangle arrondi ;

Dans notre cas, la carte est uniquement défini par des polygones. Un objet de type polygone peut comporter un ou plusieurs polygones, chaque polygone étant défini par une suite de coordonnées selon la syntaxe décrite à la figure B.2.

FIGURE B.2: Structure des données d'un fichier MIF
\begin{figure}
\begin{verbatim}Region nb_poly
nb_pts_1
x1 y1
x2 y2
:
nb_pts...
...leur de premier plan, couleur de fond)]
[ Center x y]\end{verbatim}\end{figure}

Le paramètre nb_poly définit pour le polygone le nombre de régions qu'ils comportent. Ensuite, pour chaque région, le paramètre nb_pts spécifie le nombre de points qui la définissent. Enfin, les paramètres optionnels (entre crochets) permettent d'indiquer le style de l'objet6.3. On bénéficie de plus des coordonnées du centroïde de l'objet par le paramètre CENTER : il nous sera utile pour placer la « masse » de la région avant le déplacement.

Format du fichier MID

Les données tabulaires sont des données avec séparateur, chaque enregistrement occupant une ligne avec comme séparateur un retour chariot et/ou une marque de fin de ligne. Sur chaque ligne, les données relatifs à une commune sont séparées par une virgule.

Pour une commune, les données se présentent (cf. par exemple la figure B.3) sous la forme de :

FIGURE B.3: Exemple d'entrée d'un fichier MID
\begin{figure}
\begin{verbatim}42218,''SAINT-ETIENNE'',2,199528,14.1\end{verbatim}\end{figure}

Lecture des données

La lecture des données est grandement facilité par l'utilisation des flux (stream) de CAML. Étant donné que les fichiers MID et MIF possèdent une structure bien définie, il suffit de transformer les deux fichiers en flux et de lire séquentiellement chaque entrée du fichier MID et de les associer aux objets graphiques idoines du fichier MIF. Ceci est réalisé par le programme B.1.
PROGRAMME B.1: Lecture des fichiers de données
\begin{table}
\begin{verbatim}let lecture fichier =
let canal1=open_in (fichier...
...e flux1 in (close_in canal1; close_in canal2; result);;\end{verbatim}\end{table}

Les deux fichiers sont d'abord ouverts en lecture puis transformer en flux. On utilise alors le module d'analyse lexicale de CAML pour rendre les choses plus lisibles. Ensuite, chaque ligne du fichier MID est lue et analysée pour en extraire les données utiles. On associe ensuite les contours définissant la commune ainsi que les coordonnées du centroïde. Le résultat est une liste de commune, le type commune ayant été défini préalablement par le programme 1.4.

PROGRAMME B.2: Le type commune
\begin{table}\begin{verbatim}type commune =
{ Nom : string;
Population : int;
...
...table Contour : (point list list);
Centre : point
};;\end{verbatim}\end{table}

Notons aussi que le modèle « physique » de transformation nécessite aussi la frontière extérieure du département. Cette frontière se présente sous la forme d'un fichier MIF contenant uniquement une liste de coordonnées que l'on chargera grâce au programme 1.4.

PROGRAMME B.3: Lecture du fichier définissant la frontière
\begin{table}\begin{verbatim}let rec lie_frontiere fichier =
let canal=open_in ...
...stream_of_channel canal)) in (close_in canal; result);;\end{verbatim}\end{table}


[*] up [*] contents
suivant: Traitement des données monter: Chargement et traitement de précédent: Chargement et traitement de   Table des matières

1999-10-28