Haben Sie vor, das ArcMap <\/SPAN>Python-Fenster<\/A> auszuprobieren, sind sich aber nicht sicher, wie Sie anfangen sollen? Nun, die fünf Code-Snippets unten sind ein großartiges Werkzeug, um sich mit dem Python-Fenster und dem <\/SPAN>arcpy.mapping-Modul<\/A> vertraut zu machen. Machen Sie eine Kopie einer MXD-Datei und verschieben Sie sie an einen Ort, um diese Snippets auszuprobieren. Sie werden bald sehen, wie nützlich ein paar Python-Tricks für Aufgaben im Kartenmanagement sein können.<\/SPAN><\/P>Jedes Snippet unten funktioniert mit ArcMap 10.x, einem vorhandenen Karten-Dokument (MXD-Datei), dem arcpy.mapping-Modul und Python 2.x.<\/LI><\/UL>Sie müssen keine Python-Syntax kennen, um diese Snippets zu verwenden. Geben Sie einfach den Code in das Python-Fenster ein und sehen Sie sich die Ergebnisse an.<\/P>Snippet 1: Überprüfen von Layer-Definition Queries<\/STRONG><\/SPAN><\/P>Angenommen, Sie müssen überprüfen, ob eine der Layer in Ihrem Kartendokument eine Definition Query angewendet hat, und falls ja, die Definition Queries anzeigen. Das Öffnen des Dialogfelds Layer-Eigenschaften für jeden Layer ist mühsam.<\/P> <\/P>Lösung: Öffnen Sie stattdessen das Python-Fenster und führen Sie den untenstehenden Code aus. Der Name und die Definition Query aller Karten-Layer werden "ausgegeben" (d.h. im Python-Fenster angezeigt).<\/P>
<\/P>Code-Erklärung<\/STRONG><\/SPAN><\/P>Die erste Codezeile erstellt eine Variable namens mxd<\/STRONG><\/SPAN>, die auf das geöffnete Kartendokument verweist und dabei das <\/SPAN>CURRENT-Schlüsselwort<\/A> verwendet.<\/SPAN><\/LI>Die ListLayers<\/A>-Funktion wird verwendet, um eine Liste aller Layer im Kartendokument zu erstellen, und die for<\/STRONG><\/SPAN>-Schleife wird verwendet, um durch jeden Layer in der Karte zu iterieren.<\/LI>Die Layer-Klasse<\/A> verfügt über viele Eigenschaften<\/A>, auf die zugegriffen werden kann, einschließlich der Definition Query für einen Layer. Da nicht alle Layer-Typen alle Eigenschaften unterstützen, wird die supports<\/A>-Methode verwendet, um zu testen, welche Eigenschaften ein Layer unterstützt. <\/SPAN><\/LI>Die letzte Codezeile gibt (zeigt) den Namen jedes Layers und dessen Definition Query aus.
Snippet 2: Defekte Verknüpfungen reparieren
Irgendwann haben Sie wahrscheinlich Kartendaten von einem Arbeitsbereich in einen anderen verschoben. Haben Sie schon einmal die gefürchteten roten Ausrufezeichen gesehen?

Wenn sich der Pfad zu den Karten-Layern geändert hat, können Sie mit nur wenigen Zeilen Code schnell den alten Arbeitsbereichspfad finden und ihn für alle Layer und Tabellen in Ihrem Kartendokument gleichzeitig durch den neuen Arbeitsbereichspfad ersetzen. Führen Sie die folgenden Codezeilen im Python-Fenster aus (stellen Sie sicher, dass Sie die Pfade aktualisieren, um Ihre alten und neuen Arbeitsbereiche widerzuspiegeln).

Code-Erklärung
- Die erste Codezeile ist dieselbe wie im vorherigen Beispiel und erstellt die Variable mxd<\strong>, die auf das geöffnete Kartendokument verweist.
- Die Methode
findAndReplaceWorkspacePaths wird verwendet, um nach Layern zu suchen, die den alten Arbeitsbereich (erster Parameter) haben, und den Arbeitsbereich für alle Layer und Tabellen im Kartendokument auf den neuen Arbeitsbereich (zweiter Parameter) zu aktualisieren.
Die Funktion RefreshActiveView wird verwendet, um die Änderungen im Inhaltsverzeichnis und auf der Karte sichtbar zu machen.
Snippet 3: Identifizieren von Layern mit einer defekten Datenquelle
Sprechen wir von diesen roten Ausrufezeichen: Sie können arcpy.mapping auch verwenden, um die Layer mit defekten Verknüpfungen mit dem untenstehenden Code auszugeben.

Code-Erklärung
- Die erste Codezeile erstellt eine Variable namens
mxd
, die auf das geöffnete Kartendokument verweist – genau wie in den obigen Beispielen.
- Wie im ersten Beispiel erstellt die Funktion
ListLayers
eine Liste aller Layer im Kartendokument.
- Anschließend wird die
for
-Schleife verwendet, um durch jeden Layer in der Karte zu iterieren und dabei den Namen sowie die Eigenschaft isBroken jedes Layers auszugeben.
Snippet 4: Inventarisierung der Datenquellen von Layern
Wenn Sie wissen müssen, welche Datenquelle alle Layer in Ihrer Karte haben, aber nicht für jeden das Dialogfeld „Layer-Eigenschaften“ öffnen möchten, führen Sie einfach die folgenden Codezeilen im Python-Fenster aus, um Namen und Arbeitsbereichspfad der Layer auszugeben.

Code-Erklärung
- Wie bei allen obigen Beispielen erstellt die erste Codezeile die Variable
mxd
, um auf das geöffnete Kartendokument zu verweisen (haben Sie den Dreh raus?).
- Noch einmal erstellt die Funktion
ListLayers
eine Liste aller Layer im Kartendokument, durch die Sie mit der
for
-Schleife iterieren können.
In diesem Beispiel geben Sie für jeden Layer in Ihrer Karte die Eigenschaften name und workspacePath aus. Da nicht alle Layer einen workspacePath haben (z.B. Webdienste), wird die Methode
supports
span class=“strong”>used.
Skripterstellung für Map AutomationPräsenzkurs:
Creating Python Scripts for ArcGIS
Dieser Beitrag wurde von der Esri-Ausbilderin @Brittney White verfasst.