Mehr

Aktualisieren der ESRI-mxd-Definitionsabfragevariable über Python?

Aktualisieren der ESRI-mxd-Definitionsabfragevariable über Python?


Wir verwenden Definitionsabfragen, um Daten für Feldbenutzer zu filtern. Wir haben bis zu 40-50 MXDs, die bis auf eine Variable in der Definitionsabfrage identisch sind, die es ermöglicht, dass die Daten für diese MXD eindeutig sind. Beispiel - "DeploymentNumber='AA'" wobei 'AA' die Variable ist. Wenn wir also MXDs aktualisieren, möchten wir ein Python-Skript verwenden, um die Variable - 'AA'-Komponente unserer Definitionsabfrage in jedem Layer zu aktualisieren, ohne jedes MXD öffnen zu müssen, klicken Sie auf jeden Layer und manuell aktualisieren (was in einigen Fällen ein 5-minütiger Vorgang pro MXD ist).


Sie müssen dies für Ihre spezifischen Daten ändern, da es möglicherweise Layer gibt, die Sie nicht ändern möchten / für die keine Def-Abfragen festgelegt sind:

import os import arcpy # Verzeichnis der obersten Ebene, in dem alle Kartendokumente path = r sind"" # das Verzeichnis rekursiv nach .mxd-Dateien durchsuchen def getMXD(path): for dirpath, dirnames, filenames in os.walk(path): for f in filenames: if f.endswith(".mxd"): yield os.path .join(dirpath, f) für mapdoc in getMXD(path): # muss hier möglicherweise Platzhalter ändern mxd = arcpy.mapping.MapDocument(mapdoc) df = arcpy.mapping.ListDataFrames(mxd, "*")[0] for lyr in arcpy.mapping.ListLayers(mxd, "*", df): if lyr.supports("DEFINITIONQUERY"): lyr.definitionQuery = "DeploymentNumber = 'AA'" mxd.save() # or mxd.saveACopy() del mxd, df