Migrieren von arcpy.mapping zu ArcGIS Pro

Arcpy.mapping-Skripte, die mit ArcGIS Desktop erstellt wurden, müssen geändert werden, bevor sie in ArcGIS Pro ausgeführt werden. Die Änderungen sind einfach und können in der Regel per Suchen und Ersetzen durchgeführt werden. In den nachfolgenden Abschnitten werden viele der signifikanten Änderungen an der arcpy.mp-API und neue Funktionen hervorgehoben.

Python 3

ArcGIS Pro verwendet Python 3. Sie müssen möglicherweise die Standard-Python-Syntax ändern. Weitere Informationen finden Sie unter Python-Migration von 10.x zu ArcGIS Pro.

Arcpy.mapping ist jetzt arcpy.mp

Die mit ArcGIS Pro eingeführten Änderungen waren ausreichend signifikant, um eine Änderung des Namespace des Moduls zu rechtfertigen. Der neue Name bietet mehr Flexibilität im Hinblick auf die arcpy.mp-Funktionen. Neben der Kartenautomatisierung bietet arcpy.mp auch Verwaltung auf Projektebene und die Möglichkeit, Objekte zu erstellen. Das war in arcpy.mapping nicht möglich.

Die ArcGIS Pro-Projektdatei (.aprx)

Die erste und auffälligste Änderung besteht darin, dass arcpy.mp in ArcGIS Pro auf eine Projektdatei (.aprx) statt auf ein Kartendokument (.mxd) verweisen muss. Sie müssen daher arcpy.mapping.MapDocument(mxd_path) durch arcpy.mp.ArcGISProject(aprx_path) ersetzen. Die ArcGISProject-Funktion gibt nun ein ArcGISProject-Objekt zurück, das einen Haupteinstiegspunkt für die meisten Anforderungen an die arcpy.mp-Automatisierung darstellt. Die ArcGISProject-Klasse bietet auch eine importDocument-Methode, mit der das Importieren von Karten- (.mxd), Globe- (.3dd), Szenen- (.sxd) und anderen Dokumentdateien in ein Projekt automatisiert werden kann.

Viele der Listenfunktionen wurden verschoben

Viele der eigenständigen List-Funktionen von arcpy.mapping sind nun Methoden für die entsprechenden Objekte. Dank dieser Design-Änderung muss das Kartendokument nicht mehr jedes Mal als erster Parameter referenziert werden, wodurch die neue Organisation von einem besseren objektorientierten Fluss profitiert. In den folgenden Beispielen wird veranschaulicht, wie die Beschriftungsklassen eines Layers anhand von List-Funktionen referenziert werden. Die Funktionalität ist ähnlich, jedoch müssen an den vorhandenen ArcGIS Desktop-Skripten Änderungen vorgenommen werden.

In diesem Beispiel wird veranschaulicht, wie die Beschriftungsklassen eines Layers mit ArcGIS Desktop referenziert werden.


mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "Yosemite National Park")[0]
for lyr in arcpy.mapping.ListLayers(mxd, df):
    if lyr.supports("SHOWLABLES"):
        lblClasses = lyr.labelClasses

In diesem Beispiel wird veranschaulicht, wie die Beschriftungsklassen eines Layers mit ArcGIS Pro referenziert werden.


p = arcpy.mp.ArcGISProject("CURRENT")
m = p.listMaps("Yosemite National Park")[0]
for lyr in m.listLayers():
    if lyr.supports("SHOWLABELS"):
       lblClasses = lyr.listLabelClasses()

Im folgenden Diagramm werden einige der häufigsten Klassen, die Teil von arcpy.mp sind, sowie der Speicherort und der Name der Funktionen oder Eigenschaften angezeigt, die erforderlich sind, um eine bestimmte Klasse zu referenzieren. Das Diagramm dient nur als Beispiel und enthält keinen vollständigen Objektsatz. Die beiden Haupteinstiegspunkte in Objekte sind die ArcGISProject-Klasse oder die LayerFile-Klasse.

Übersicht über OMD in arcpy.mp

Exportfunktionen wurden verschoben

Die eigenständigen Exportfunktionen sind nun Methoden für die Layout-, MapFrame-, MapSeries- und MapView-Objekte. Durch die Design-Änderung werden die verschiedenen Gruppen von Parametern getrennt, die je nach exportiertem Objekt verfügbar sind. Wenn Sie beispielsweise eine Kartenansicht exportieren, müssen Sie die Breite und Höhe angeben. Mit einem Layout wird die Größe jedoch automatisch berücksichtigt.

Layer-Verwaltungsfunktionen wurden verschoben

Die eigenständigen Layer-Verwaltungsfunktionen sind nun Methoden für die Map- und LayerFile-Objekte. Zur Verfügung stehen unter anderem die Methoden addLayer, addLayerToGroup, insertLayer, moveLayer und removeLayer.

Layer-Dateien wurden geändert

Mit ArcGIS Desktop erstellte Layer-Dateien verfügen über die Erweiterung .lyr, mit ArcGIS Pro erstellte Layer-Dateien über die Erweiterung .lyrx. Es besteht ein wichtiger Unterschied In älteren .lyr-Dateien werden nur ein einzelner Layer oder ein einzelner Gruppen-Layer auf Stammebene gespeichert, auch wenn ein Gruppen-Layer mehrere Layer oder Gruppen-Layer enthalten kann. In neueren .lyrx-Dateien können mehrere Layer und Gruppen-Layer auf Stammebene gespeichert werden. Ein Verweis auf eine .lyrx-Datei kann nun ein Verweis auf einen einzelnen Layer oder auf eine Layer-Liste sein. Neuere .lyrx-Dateien können auch Standalone-Tabellen enthalten. Einzelne Standalone-Tabellen können darüber hinaus in .lyrx-Dateien exportiert werden.

Neue Camera-, Map-, MapFrame- und MapView-Objekte ersetzen die Rolle des Datenrahmens

Mit dem Framework von ArcGIS Pro wurden Funktionen eingeführt, die sich auf die Interaktion mit Kartenanzeigen auswirken, daher werden neue Objekte eingeführt. Diesen neuen Camera-, Map-, MapFrame- und MapView-Objekten kommt eine bestimmte Rolle zu, sie sind miteinander verknüpft und dementsprechend können Sie verschiedene Szenarien besser steuern.

Ein Map-Objekt in ArcGIS Pro stellt eine Sammlung von tabellarischen und symbolisierten geographischen Layern dar und speichert Informationen wie Koordinatensysteme, Standardansichten der Daten und verschiedene andere Metadaten. Der Inhalt einer Karte lässt sich nur in einer Kartenansicht, als Registerkarte in der Anwendung mit eigenem Inhaltsverzeichnis oder im Kartenrahmen eines Seitenlayouts visualisieren. Dieselbe Karte kann in mehreren Kartenansichten oder Kartenrahmen angezeigt werden. Wenn einer Karte ein Layer hinzugefügt wird, zeigen alle Kartenansichten und Kartenrahmen, die diese Karte referenzieren, den hinzugefügten Layer an. Wenn Sie eine andere Sammlung von Layern oder Tabellen in anderen Ansichten darstellen möchten, müssen Sie verschiedene Karten erstellen und verwenden.

Ein MapFrame-Objekt ist ein Layout-Element, das die geographischen Informationen anzeigt, die einer Map hinzugefügt wurden. Es steuert außerdem die Größe und Positionierung des Kartenrahmens in einem Layout. Mehrere Kartenrahmen können die gleiche Karte referenzieren. Auf die gleiche Weise kann der Inhalt einer Karte mit einem MapView-Objekt angezeigt werden.

ArcGIS Pro integriert die 2D- und 3D-Anzeige, und das Camera-Objekt dient der Steuerung des Maßstabs und der Ausdehnung für 2D-Karten sowie der Kameraposition für 3D-Karten in einem Kartenrahmen.

Ein neues Layout-Objekt

Ein ArcGIS Pro-Projekt unterstützt mehrere Layouts. Deshalb wurde ein neues Layout-Objekt hinzugefügt, und Layouts können durch Verwendung der Methode listLayouts für das ArcGISProject-Objekt referenziert werden. Jedes Layout kann verschiedene Seitengrößen und -ausrichtungen aufweisen. Ähnlich wie bei ArcGIS Desktop können Sie mit der Methode listElements zu den einzelnen Layout-Elementen wechseln. Jedes dieser Elemente verfügt über die Eigenschaft visible, die es Ihnen ermöglicht, ein Element zu deaktivieren, anstatt es von der Seite zu entfernen.

Bei Verwendung von "CURRENT" wird die Anwendung immer aktualisiert

Wenn in ArcGIS Desktop das Schlüsselwort "CURRENT" im Python-Fenster verwendet wird, musste in einigen Fällen refreshActiveView aufgerufen werden, um die Aktualisierung des Bildschirms zu erzwingen. Dies ist bei ArcGIS Pro nicht mehr der Fall. Alle Änderungen der arcpy.mp-API führen zu einer direkten Aktualisierung in ArcGIS Pro.

Die Aktualisierung von Datenquellen hat sich geändert

Die Methoden und Parameter zum Ändern der Datenquelle eines Layers oder einer Tabelle wurden geändert. Das optimierte Design ermöglicht eine bessere Verwaltung von Datenbankverbindungen sowie anderen Datenquellen, die verbunden oder in Beziehung gesetzt werden können. Weitere Informationen finden Sie unter Aktualisieren und Korrigieren von Datenquellen.

Objekte können erstellt werden

Bislang konnten Skripte in ArcGIS Desktop nur dazu eingesetzt werden, vorhandene Elemente zu automatisieren. Ab ArcGIS Pro 3.2 können viele häufige Objekte erstellt werden. Dazu zählen die Methoden createMap und createLayout für das ArcGISProject-Objekt sowie viele der Layout-Element-Konstruktoren wie createMapFrame, createMapSurroundElement, createGraphicElement und createTextElement. Es ist auch möglich, Bookmark-Objekte aus der Map-Klasse zu erstellen. Weitere Informationen finden Sie in den Themen zur ArcGISProject-, Layout- und Map-Klasse.