IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ODS et reporting Discussion :

Création d'une carte avec la proc gmap à partir de fichiers mif mid


Sujet :

ODS et reporting

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 31
    Points : 38
    Points
    38
    Par défaut Création d'une carte avec la proc gmap à partir de fichiers mif mid
    Bonjour,

    J'esseye de créer une carte de france des communes à partir d'un fond de carte de mapinfo, c'est-à-dire en important les fichiers mif et mid.
    L'importation marche, néanmoins lors de la création de la carte (proc gmap) la carte est totalement déformée, elle est scindée en deux avec le sud de la france se retrouve au nord et le nord au sud. (J'ai suivi la procédure d'Olivier Decourt).

    Auriez-vous des idées pour régler ce problème?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 31
    Points : 38
    Points
    38
    Par défaut
    En fait, j'ai résolu mon problème il semble qu'il y ait une petite erreur dans le code que j'ai utilisé.

    Le code d'Olivier Decourt pour l'importation du mif est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    filename mif  "..../dep_france_dom.mif" ;
    data work.mif ;
        infile mif dlm = " " scanover 
        firstobs = 19 ; 
        input @"Region  "   
        nbSegments @ ;
        ident+1 ;
        do segment = 1 to nbSegments ;
           input / @3 
           nbPoints @ ;
              do i = 1 to nbPoints ;
                  input / x +1 y @ ; 
                  output ;
              end ;
        end ;
      input ;
    run ;
    En enlevant le plus ("+") à la ligne : input / x +1 y @ ; le code marche très bien.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Je suis tombé sur ce vieux topic correspondant à mes préoccupations du moment, et je rebondi sur ce fil...

    Ne disposant pas de SAS/GIS je ne peux importer/exporter des cartes SAS vers MIF/MID facilement (et vice versa dans l'autre sens).
    J'aurais pu me servir de ce bout de code, mais il ne semble pas tout à fait convenir à mes données, effectivement j'ai des contour avec des vides à l'intérieur. Ces cas ne semblent pas traités dans ce code.

    Quelqu'un aurait il un code plus complet ?

    Pour expliquer en deux mots le problème des vides dans les contours.

    SAS (enfin à ce que j'ai compris) utilise une observation avec x=. et y=. pour expliquer que les lignes suivantes (suivant l'observation x=. y=.) décrivent une frontière intérieure de la courbe.
    Les points étant dans tous les cas décris dans l'ordre horaire.
    Qu'en est il du codage si il y a un trou dans le trou ? (i.e. en langage imagé une flaque d'eau sur l'ile de l'étang de l'ile...? )

    Dans les formats MIF/MID (à ce que j'ai compris), un contour extérieur est décris par un contour dans l'ordre horaire, et un contour intérieur dans l'ordre anti-horaire, et là cela semble plus simple pour la flaque d'eau...(enfin au premier abord, car il faut savoir reconnaitre l'ordre de rotation horaire ou anti horaire.... et l'inverser si le problème se présente).

    Je vais examiner le problème, mais si quelqu'un aurait déjà un bout de code faisant cette conversion MIF/MID-->SAS et SAS-->MIF/MID dans ces cas complexes je suis preneur...

  4. #4
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    et en passant par les SVG ?
    http://fr.wikipedia.org/wiki/Aide:SVG

    Je rebondis aussi là dessus car je suis entrain d'écrire un article sur ce format qui apparaît être très utilisée en cartographie.
    Ce n'est que du vectoriel donc universel, peut être que tu pourrais passer par là.

    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  5. #5
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut


    la GMAP peut créer du SVG je pense effectivement, et vice-versa ?

    Cependant j'ai besoin de MIF/MID pour travailler sur mapinfo qui ne sais pas lire du SVG à ce que je crois, a moins de convertir ensuite le SVG en GML ?
    ou en repassant par SAS ?

    J'ai regardé la structure d'un fichier SVG ça n'a pas l'air simple.

    Je m'oriente plutôt vers l'écriture de macro SAS de conversion directe....

    Bien on se remonte les manches et on code..

  6. #6
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Bonjour Jérôme.
    Ça fait bien longtemps que je n'ai plus importé ou exporté de MIF/MID (une dizaine d'années environ). Je ne sais pas si le format a beaucoup changé. A l'époque c'était de simples fichiers texte qu'il suffisait d'importer avec une étape DATA INFILE/INPUT puis de combiner pour avoir le fond SAS. Il faut dire aussi que les fonds que j'importais/exportais n'étaient pas trop complexes (limites de communes). Donc les îlots dans le lac au centre de l'île, ce n'était pas exactement mon problème.
    Dans SAS, d'ailleurs, ce type de contour emboîté est géré par la variable SEGMENT, qui s'incrémente dès qu'on change de contour fermé, au sein d'un même identifiant géographique. Par exemple : ID=56 (prenons le Morbihan), SEGMENT=1 ce sont les coordonnées de la frontière du département sur la partie continentale, SEGMENT=2 c'est l'île d'Arz, SEGMENT=3 l'île de Gravinis, etc. A chaque observation, un couple X et Y décrit le point, à relier implicitement avec le point précédent et quand on change de SEGMENT ou d'ID, le contour est implicitement fermé.

    Bon courage dans ta comparaison entre cette organisation et celle de Mapinfo pour trouver les passerelles.

    Olivier
    Bon courage.
    Olivier

  7. #7
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    546
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 546
    Points : 241
    Points
    241
    Par défaut
    Pour suivre le fil, quelqu'un pourrait-il m'expliquer comment SAS gère les points.
    Supposons qu'on ai 5 points en forme de W (numérotés 1-2-3-4-5) sur une frontière. Supposons que la frontière ne suive pas la forme du W (1-2-3-4-5) mais suive la forme 1-3-2-4-5.
    Comment dire à SAS que la frontière est 1-3-2-4-5 et non 1-2-3-4-5 ?

  8. #8
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonjour la courbe est décrite dans l'ordre.

    Pour 1-2-3-4-5

    il suffit que les coordonnées de ces points apparaissent dans cet ordre.

    Pour 1-3-2-4-5

    if suffit (donc aussi) que les coordonnées de ces points apparaissent dans cet ordre

    Enfin je ne sais pas trop si j'ai bien compris ta question...

  9. #9
    Membre actif
    Inscrit en
    Novembre 2003
    Messages
    546
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 546
    Points : 241
    Points
    241
    Par défaut
    Non, tu as bien compris.
    Le motif de ma question est bien un problème de tri.
    Je dispose en effet d'une table MIF-MID de communes.
    Lorsque je la lit sous SAS, et que je fais une proc gmap derrière, j'obtiens n'importe quoi.

    En utilisant le programme que tu cites plus haut, on obtient une table avec variables : nbsegments - ident - segment - nbpoints - i - x - y
    Elle est de fait triée par ident, puis segment, puis i.
    Quel est alors le critère de tri pour obtenir le bon résultat, avec une frontière qui serait bien 1-3-2-4-5 et non 1-2-3-4-5.

  10. #10
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonjour, je n'utilise pas ce programme donc je ne pourrais pas t'aider.

    Cependant tout ce que je sais, c'est que normalement l'ordre des points doit être le point dans la table sas que dans le mif/mid.
    Il n'y a donc à priori pas de raison de changer l'ordre.
    A une exception près cependant c'est à dire les cas que je cite avec la présence de contour intérieur (une commune entièrement comprise dans une autre, et il y a quelques cas en france...).
    C'est par exemple le cas de la commune de suzan dans le 09.
    Enfin je ne suis pas strictement persuadé que sas bloque dans le cas de la présence d'un parcours anti-horaire (par contre il ne fait au final pas ce que l'on veut si on ne lui a pas indiqué la présence de contour intérieur par une observation x=. y=. ).

    Essaye pour une commune en particulier et regarde ce que cela donne.
    Tu as un fichier mif/mid en exemple (sur une commune par exemple) ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 28/05/2012, 20h11
  2. carte avec la proc gmap
    Par maverik40 dans le forum ODS et reporting
    Réponses: 14
    Dernier message: 06/05/2009, 17h08
  3. création d'une carte avec navigation du type mappy
    Par BernardT dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 30/10/2005, 01h24
  4. [Débutante] Création d'une image avec un composant
    Par gwendo dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 09/07/2004, 09h58
  5. Création d'une base avec IbConsole
    Par Lucien dans le forum Outils
    Réponses: 3
    Dernier message: 02/03/2004, 18h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo