Deutsch

How To: Ändern von Textelementen in mehreren MXDs gleichzeitig mithilfe eines Python-Skriptes

Zusammenfassung

Bei der Arbeit mit Kartendokumenten (MXDs) müssen Textelemente manchmal aufgrund von Datenänderungen oder Revisionen ersetzt oder aktualisiert werden. Mit der Funktion "text.Split()" in Python können Textelemente zeitsparend in mehreren MXDs gleichzeitig ersetzt werden, sodass der Text nicht in jeder MXD einzeln aktualisiert werden muss.

Vorgehensweise

Mit einem Python-Skript in ArcMap können Sie zwei Textlisten mit jeweils den alten und neuen Textelementen der MXDs erstellen und dann jedes Textelement aus der ersten Liste mit dem entsprechenden Textelement in der zweiten Liste ersetzen lassen. Führen Sie dazu die folgenden Schritte aus.

  1. Erstellen Sie ein benutzerdefiniertes Werkzeug anhand der im Dokument Hinzufügen von Skriptwerkzeugen beschriebenen Schritte. Speichern Sie den unten gezeigten Python-Code in einem Texteditor, und fügen Sie die Datei als Skriptdatei hinzu.
import arcpy
from arcpy import env
import os
arcpy.env.overwriteOutput = True

#set path to the relevant folder
arcpy.env.workspace = Input_Workspace = arcpy.GetParameterAsText(0)
Output_Workspace = arcpy.GetParameterAsText(1)
Old_Text = arcpy.GetParameterAsText(2)
oldList = Old_Text.split(', ') #set the comma as separator for multiple inputs
New_Text = arcpy.GetParameterAsText(3)
newList = New_Text.split(', ')

#list the mxds of the workspace folder
for mxdname in arcpy.ListFiles("*.mxd"):    
    arcpy.AddMessage(mxdname)
#set the variable
    mxd = arcpy.mapping.MapDocument(Input_Workspace + "\\" + mxdname)
#replace elements that occur in the map document
    for elm in arcpy.mapping.ListLayoutElements(mxd, "TEXT_ELEMENT"):
        counter = 0
        for text in oldList:
            if text in elm.text:
                elm.text = elm.text.replace(text, newList[counter])
                arcpy.AddMessage('{} changed'.format(elm.text))
                counter = counter + 1
            else:
counter = counter + 1

    mxd.saveACopy(Output_Workspace + "\\" + mxdname)
Der oben gezeigte Python-Code enthält vier GetParameterAsText-Instanzen für die Werkzeugparameter (Input_Workspace, Output_Workspace, Old_Text und New_Text). Verwenden Sie folgendes Beispiel, wenn Sie die Parameter im Dialogfeld Skript hinzufügen festlegen, und klicken Sie auf Fertig stellen.

The parameters of the tool
  1. Doppelklicken Sie im Fenster Katalog auf den Namen des benutzerdefinierten Werkzeugs, um es zu öffnen.
  2. Fügen Sie im Werkzeugfenster den Ordner (Workspace) mit den MXDs hinzu, geben Sie den Ausgabeordner an, und geben Sie den zu ersetzenden Text in das Feld Old_Text und den neuen Text in das Feld New_Text ein. Trennen Sie die Textzeichenfolgen mit Kommas ab (siehe unten).
The parameters of the custom tool
Hinweis:
Das Skript durchläuft die MXDs in alphabetischer Reihenfolge. Beginnen Sie mit dem Aktualisieren der Textelemente beim ersten MXD im Alphabet, sodass die Änderungen wie gewünscht vorgenommen werden.
Hinweis:
Die Textelemente im Feld Old_Text müssen exakt dem zu ersetzenden Text in den jeweiligen MXDs entsprechen. Andernfalls erkennt das Skript den Text nicht, und die Änderungen sind in der Ausgabe-MXD nicht enthalten.
  1. Klicken Sie auf OK, um das Werkzeug auszuführen. Die aktualisierten MXDs werden im angegebenen Ausgabeordner erstellt und gespeichert.

Referenzinformationen