Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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é ?

Annonce

State Of The Map 2024

#1 Wed 21 May 2014 19:04

Zebulon_29
Juste Inscrit !
Date d'inscription: 21 May 2014
Messages: 6

Recherche mxd

Je cherche un moyen pour automatiser la recherche des mxd utilisant une couche (.lyr). En effet, celle-ci a été changé, je dois donc ensuite remplacer cette couche par la nouvelle couche.
Cette recherche concerne plusieurs lecteurs réseaux.
Merci pour l'aide que vous pourrez m'apporter.

Hors ligne

 

#2 Sat 24 May 2014 08:43

lebon henri
Participant actif
Lieu: Vendée
Date d'inscription: 14 Jan 2008
Messages: 99

Re: Recherche mxd

salut, tu peux essayer le script ci-dessous.

Code:

import arcpy, os

dossier = r"C:\toto"   ## il s'agit là du dossier racine contetant les dossiers contenant les mxd

newlyr = arcpy.mapping.Layer(r"C:\chemin de ton .lyr")

for pathname, directories, filenames in os.walk(dossier):
    for filename in filenames:
        if filename.lower().endswith(".mxd"):
            mxdpath = os.path.join(pathname, filename)
            mxd = arcpy.mapping.MapDocument(mxdpath)
            for df in arcpy.mapping.ListDataFrames(mxd):
                for lyr in arcpy.mapping.ListLayers(mxd, "", df):
                    if lyr.name == newlyr.name:
                        ##on fait la une comparaison par le nom
                        ## donc il faut être sur que les noms sois toujours les mêmes
                        ##si tu as juste un layer simple on peut le faire avec la data source et même donc la vielle datasource pour la comparaison
                        arcpy.mapping.InsertLayer(df, lyr, newlyr, "BEFORE")
                        arcpy.mapping.RemoveLayer(df, lyr)

Hors ligne

 

Pied de page des forums

Powered by FluxBB