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 Tue 12 June 2012 17:55

Lebon henry
Participant occasionnel
Lieu: Avignon
Date d'inscription: 23 Sep 2007
Messages: 12

ListBrokenDataSources sous arcgis10

Bonjour,

J'ai testé le code de l'aide arcgis qui doit normalement renvoyer une liste de liens cassés dans les mxd d'un dossier mais j'ai le message d'erreur suivant : Runtime error <type 'exceptions.NameError'>: name 'mxd' is not defined

Code:

import arcpy, os
path = r"C:\Project"
for fileName in os.listdir(path):
    fullPath = os.path.join(path, fileName)
    if os.path.isfile(fullPath):
        basename, extension = os.path.splitext(fullPath)
        if extension == ".mxd":
            mxd = arcpy.mapping.MapDocument(fullPath)
            print "MXD: " + fileName
            brknList = arcpy.mapping.ListBrokenDataSources(mxd)
            for brknItem in brknList:
                print "\t" + brknItem.name
del mxd

Quelqu'un sait comment on utilise ce code correctement ?

Merci d'avance.

(Je ne connais pas bien arcpy).

Hors ligne

 

#2 Wed 13 June 2012 08:02

Nicolas Granier
Participant assidu
Date d'inscription: 19 Apr 2007
Messages: 271

Re: ListBrokenDataSources sous arcgis10

Bonjour,

Ce code va chercher dans le répertoire "C:\Project" tous les fichiers mxd et les traite un à un.
Il vous faut modifier la variable path à la ligne 2  en indiquant le répertoire qui contient votre mxd par exemple

Code:

path = r"C:\dossier1\dossier2"

Le message d'erreur est du à la dernière ligne du code

Code:

del mxd

Le programme ne trouve pas de fichier ".mxd" et demande à la fin de supprimer la variable mxd alors qu'il ne l'a pas créée.

A+

Dernière modification par Nicolas Granier (Wed 13 June 2012 08:02)

Hors ligne

 

#3 Wed 13 June 2012 10:52

Lebon henry
Participant occasionnel
Lieu: Avignon
Date d'inscription: 23 Sep 2007
Messages: 12

Re: ListBrokenDataSources sous arcgis10

Salut,
Merci de la réponse mais j'ai résolu mon problème.
En fait le script d'esri ne cherche pas dans les sous-dossiers comme je le voulez.

Cette version que j'ai fait le fait.

Code:

import arcpy 
import glob 
import os 
 
for pathname, directories, filenames in os.walk(r"C:\Dossier"): 
    for filename in filenames: 
        if filename.lower().endswith(".mxd"): 
            mxd = arcpy.mapping.MapDocument(os.path.join(pathname, filename)) 
            filename, ext = os.path.splitext(os.path.join(pathname, filename))
            brknList = arcpy.mapping.ListBrokenDataSources(mxd)
            for brknItem in brknList:
                print mxd.filePath + ";" + brknItem.name + ";" + brknItem.dataSource

Hors ligne

 

Pied de page des forums

Powered by FluxBB