banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Wed 27 February 2013 10:22

Etienne72
Participant occasionnel
Lieu: Morlaix
Date d'inscription: 26 Jun 2009
Messages: 20

Lister des couches dans un MXD

Bonjour,

je souhaiterai savoir si quelqu'un possède un outil permettant de lister les couches appelées dans un mxd et ensuite de les retranscrire dans un fichier texte contenant le nom du mxd, ainsi que le chemin de chaque couche appelée. Je connais l'outil ArcCrawler pour la version 9.3 d'arcgis, mais je suis en version ArcGIS Desktop 10 service Pack 5 et cet outil ne fonctionne plus.

Merci pour vos réponses.

Hors ligne

 

#2 Wed 27 February 2013 11:32

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Lister des couches dans un MXD

Bonjour,

Je n'ai pas encore pratiqué mais c'est faisable via Python.

Voir pun exemple ici : http://www.forumsig.org/showthread.php?t=36053

Le code serait le suivant (source : http://www.forumsig.org/showpost.php?p= … ostcount=6) :

import os
import arcpy
import glob
malistedemxd = glob.glob('O:/mxd/*.mxd')
for elt in malistedemxd:
    print elt
    mxd  = arcpy.mapping.MapDocument(elt)
    dfs = arcpy.mapping.ListDataFrames(mxd, "")
    for df in dfs:
        ListedeCouche = arcpy.mapping.ListLayers(mxd, "", df)
        for couche in ListedeCouche:
            if couche.isFeatureLayer :
                print couche.dataSource

Hors ligne

 

#3 Wed 27 February 2013 11:38

Etienne72
Participant occasionnel
Lieu: Morlaix
Date d'inscription: 26 Jun 2009
Messages: 20

Re: Lister des couches dans un MXD

Merci pour ton aide, mais est-ce que c'est possible de générer un fichier texte ou excel pour chaque MXD ?

Hors ligne

 

#4 Wed 27 February 2013 12:14

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Lister des couches dans un MXD

Bonjour,

Pour écrire dans un fichier texte, il suffirait de compléter le code de Robin en utilisant les méthode d'écrite de fichier de Python : pour chaque MXD, vous ouvrez un fichier texte avec la méthode f = open("file.txt", "w"), puis inscrivez un ligne pour chaque couche.

Voici un lien intéressant pour lire ou écrire en Python http://snipplr.com/view/6630/.

Si vous n'arrivez pas à vous en sortir, j'essaierai de me pencher dessus ce soir.

Cordialement,
Kevin.

Hors ligne

 

#5 Wed 27 February 2013 13:03

Etienne72
Participant occasionnel
Lieu: Morlaix
Date d'inscription: 26 Jun 2009
Messages: 20

Re: Lister des couches dans un MXD

Merci pour ce lien, j'ai regardé les fonctions pour écrire un fichier, mais étant novice en Python je n'arrive pas à m'en sortir.

Cordialement

Etienne

Hors ligne

 

#6 Wed 27 February 2013 19:47

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Lister des couches dans un MXD

Vous trouverez en pièce jointe une boite à outils qui devrait répondre à votre besoin.

L'outil génère un fichier texte par MXD à la racine du dossier spécifié. Voici un exemple du contenu de ce fichier :

Emplacement du MXD : C:\temp\Sans nom.mxd
BLOC DE DONNEES;TYPE;NOM DE LA COUCHE;SOURCE DE DONNEES
Couches;FeatureLayer;RUE;Connexions aux bases de données\xxx.sde\RUE
Couches;FeatureLayer;COMMUNES poajzofj&àéç= *;C:\FDP_ORGANISATION.gdb\COMMUNES
Couches;FeatureLayer;COMMUNES_INI;C:\FDP_ORGANISATION.gdb\COMMUNES_INI


Une remarque : si un MXD contient des sources de données SDE invalides, le traitement prendra beaucoup de temps. C'est propre au mécanisme d'ouverture du MXD et je n'ai pas cherché à y remédier.

Cordialement,
Kevin


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#7 Thu 28 February 2013 08:42

Etienne72
Participant occasionnel
Lieu: Morlaix
Date d'inscription: 26 Jun 2009
Messages: 20

Re: Lister des couches dans un MXD

Merci beaucoup, ça fonctionne super bien !!!!

Cordialement

Etienne

Hors ligne

 

#8 Thu 28 February 2013 09:47

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Lister des couches dans un MXD

Tant mieux, et merci pour le retour smile.

Kevin

Hors ligne

 

#9 Thu 14 March 2013 12:11

Robin
GeoRezo forever
Lieu: France
Date d'inscription: 31 Aug 2005
Messages: 13614
Site web

Re: Lister des couches dans un MXD

Bonjour,

Je viens de tester sur un ensemble de cartes pour envoyer à un client qui nous demandait le détail des cartes produites, l'outil est rapide et donne un résultat pratique à mon sens (import sous excel notamment).

Merci encore Kevin pour tes scripts bien pratiques.

Hors ligne

 

#10 Thu 14 March 2013 16:03

Franck B
Membre
Lieu: PACA
Date d'inscription: 6 Sep 2005
Messages: 1382
Site web

Re: Lister des couches dans un MXD

Bonjour,

Pour documenter un document ArcMap, j'aime bien l'addin X-Ray for ArcMap (il existe aussi pour la version 10.1).

L'outil permet de générer plusieurs fichiers Excel et aussi des pages HTML.

A+

Franck

Hors ligne

 

#11 Fri 15 March 2013 06:55

Kevin Jousseaume
Participant assidu
Lieu: Nanterre, région parisienne
Date d'inscription: 20 Mar 2006
Messages: 217

Re: Lister des couches dans un MXD

@Robin : de rien, c'est toujours un plaisir de se sentir utile smile

J'ai apporté une petite amélioration à cet outil : il permet désormais de lister les tables autonomes présentes dans le document ArcMap (mais pas les tables utilisées dans les jointures ou relations).

@Franck : merci pour le rappel de l'existence de cet AddIn. Je vais profiter de mes vacances pour prendre le temps de me l'approprier un peu plus.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#12 Fri 05 May 2017 15:32

romain.paoli
Juste Inscrit !
Date d'inscription: 30 Dec 2013
Messages: 1

Re: Lister des couches dans un MXD

Merci pour cet outil fort utile, et bravo.

Hors ligne

 

Pied de page des forums

Powered by FluxBB