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 logisch 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 an neuen hinzugefügten 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 Funktionen, die arcpy.mp zur Verfügung stellt. Neben der Kartenautomatisierung stellt arcpy.mp ebenfalls die Verwaltung auf Projektebene bereit.

Die ArcGIS Pro-Projektdatei (.aprx)

Die erste und naheliegendste Ä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 ist nun ein ArcGISProject-Objekt, 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 die Klassen, die Teil von arcpy.mp sind, sowie Speicherort und Name der Funktionen oder Eigenschaften, die zum Referenzieren einer bestimmte Klasse erforderlich sind, gezeigt:

Übersicht über OMD für arcpy.mp

Exportfunktionen wurden verschoben

Die eigenständigen Exportfunktionen sind nun Methoden für die Layout- und MapFrame-Objekte. Durch die Design-Änderung werden die verschiedenen Gruppen von Parametern getrennt, die je nach exportiertem Objekt verfügbar sind. Wenn beispielsweise ein Layout exportiert wird, sollten World-File-Informationen sinnvollerweise nicht einbezogen werden.

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 haben die Erweiterung .lyr und mit ArcGIS Pro erstellte Layer-Dateien die Erweiterung .lyrx. Es besteht ein wichtiger Unterschied In älteren .lyr-Dateien werden nur ein einzelner Layer oder eine einzelne Layer-Gruppe auf Stammebene gespeichert, obgleich ein Gruppen-Layer mehrere Layer oder Gruppen-Layer enthalten kann. In neueren .lyrx-Dateien können mehrere Layer und Gruppen-Layer auf der Stammebene gespeichert werden. Ein Verweis auf eine .lyrx-Datei kann nun ein Verweis auf einen einzelnen Layer oder auf eine Layer-Liste sein.

Neue Karten-, MapFrame- und Kameraobjekte ersetzen die Rolle des Datenrahmens

Mit dem ArcGIS Pro-Framework eingeführte Funktionen wirken sich auf die Interaktion mit Kartenanzeigen aus, weshalb ebenfalls neue Objekte eingeführt werden. Diesen neuen Map-, MapFrame- und Cameraobjekten kommt eine bestimmte Rolle zu, und sie sind miteinander verknüpft.

Ein Map-Objekt in ArcGIS Pro stellt eine Sammlung von tabellarischen und symbolisierten geographischen Layern dar, in dem Informationen wie Koordinatensysteme, Standardansichten der Daten und verschiedene andere Metadaten gespeichert werden. 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.

ArcGIS Pro integriert die 2D- und 3D-Anzeige, und das Cameraobjekt dient zur 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. Demzufolge 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 Fenster Python verwendet wird, muss 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.