TaskHeld Guru BitMap - Le Cartographe Retourner à la page d'accueil
Accueil
Fichiers
GeoData
Applications
Liens

 Contact




Fichier des limites administratives du pays

Format :MIF
Fichier : dep_france_dom
Origine :  IGN

ATTENTION Les données contenues dans ce fichier sont mises à disposition pour un usage personnel. Elles sont soumises au Copyright IGN ©IGN-GEOFLA. Fichier/Copyright d'origine : cliquez Page IGN-GEOFLA®.

Ce fichier peut être consulté avec un simple bloc-notes Windows.
Son interprétation peut permettre de dessiner les contours de la carte de France, et de ses départements.
Il contient des séries de coordonnées Lambert 93 de points permettant de tracer des "polylines".

Description par l'exemple
Version 300
Charset "WindowsLatin1"
Delimiter ","
CoordSys Earth Projection 3, 33, (...)
Données d'entête
Entête du fichier MIF
Columns 11
  ID_GEOFLA Integer
  CODE_CHF_L Char(3)
  NOM_CHF_L Char(50)
  X_CHF_LIEU Integer
  Y_CHF_LIEU Integer
  X_CENTROID Integer
  Y_CENTROID Integer
  NOM_DEPT Char(30)
  CODE_REG Char(2)
  NOM_REGION Char(30)
  CODE_DEPT Char(3)
Data
Liste des champs du fichier MID associé
Ce fichier comporte notamment la liste des départements et les coordonnées de leurs chefs-lieux.
Region  1
  498
849460 6524534
848984.9 6525112
849022 6527350
849118 6527714
848929 6528032
848683 6529111
847457 6530435
847501 6530768.1
(...)
Coordonnées des polylines
Chaque ligne composée d'un chiffre suivi d'un espace et d'un autre chiffre représente la coordonnée Lambert 93 d'un point à tracer.
Les autres lignes marquent la séparation entre deux polylines et à ce titre ne sont pas à prendre en compte pour le tracé.

Algorithme pour l'interprétation
Coordonnées les plus petites du fichier MID :
x_base = 55638
y_base = 6049646.9
Coefficient pour dessiner une carte de 500 points sur 500 :
x_echelle = 2373.474
y_echelle = 2373.474
Algorithme :
Pour chaque ligne du fichier dep_france_dom.mif
  Si on a deux numériques séparés par un espace
    x_lu = numérique à gauche de l'espace
    y_lu = numérique à droite de l'espace
    x_dessiné = ( x_lu - x_base ) / x_echelle
    y_dessiné = ( y_lu - y_base ) / y_echelle
    Si x_précédent et y_précédent existent
      tracer une ligne de x_précédent, 500-y_précédent jusqu'à x_dessiné, 500-y_dessiné
    Fin si
    x_précédent = x_dessiné
    y_précédent = y_dessiné
  Sinon
    détruire x_précédent
    détruire y_précédent
  Fin si
Fin pour

Script PHP pour exemple
<?
// Coordonnées les plus petites du fichier MID :
$x_base = 55638;
$y_base = 6049646.9;
// Coefficient pour dessiner une carte de 500 points sur 500 :
$x_echelle = 2373.474;
$y_echelle = 2373.474;
// Initialise l'image à dessiner en 500 points sur 500
header('Pragma: no-cache');
header('Expires: 0');
$im=imagecreate(500,500);
$white=imagecolorallocate($im,255,255,255);
$black=imagecolorallocate($im,0,0,0);
imagefilledrectangle($im,0,0,1023,1023,$white);
// Pour chaque ligne du fichier dep_france_dom.mif
$f=fopen('fichiers/dep_france_dom.mif','rb');
while(!feof($f)){
  $buf=trim(fgets($f));
  // Si on a deux numériques séparés par un espace
  $num=explode(' ',$buf);
  if((count($num)==2)&&is_numeric($num[0])&&is_numeric($num[1])){
    $x_lu = $num[0];
    $y_lu = $num[1];
    $x_dessine = ( $x_lu - $x_base ) / $x_echelle;
    $y_dessine = ( $y_lu - $y_base ) / $y_echelle;
    if(isset($x_precedent)&&isset($y_precedent)){
      imageline($im,$x_precedent,500-$y_precedent,$x_dessine,500-$y_dessine,$black);
    }
    $x_precedent=$x_dessine;
    $y_precedent=$y_dessine;
  }else{
    unset($x_precedent);
    unset($y_precedent);
  }
}
fclose($f);
// Dessine l'image
imagepng($im);
?>
Cliquez ici pour télécharger ce script

Exemple de résultat
Cliquez ici pour télécharger le script PHP qui donne ce résultat

Exemple de résultat en couleur
Cliquez ici pour télécharger le script PHP qui donne ce résultat

Notes
- Le nombre de coordonnées contenues dans le fichier MIF avoisinant les 50000, il faut s'attendre à un temps de calcul allant de quelques secondes à quelques minutes.

Améliorations
- Pour ne tracer que les contours de la France sans les départements, il faudrait pouvoir séparer les polygones servant de bordures de ceux à usages intérieurs.
- Identifier également les délimitations de la Corse et des DOM, dont on a pas forcément l'usage.
- Si vous avez des pistes pour ces améliorations, soyez gentil de me contacter, elles pourraient me servir à améliorer l'information contenue dans ce site Internet.
baptiste@pillot.fr