Python und Geoverarbeitung

Python ist die Skriptsprache von ArcGIS. ArcGIS umfasst die Python-API ArcPy, die Zugriff auf alle Geoverarbeitungswerkzeuge ermöglicht und zusätzliche Funktionen, Klassen sowie spezielle Module bietet, mit deren Hilfe GIS-Tasks automatisiert werden können. Sie können Skripte schreiben, die ArcPy in Verbindung mit unterschiedlichen Funktionen verwenden, die über Standard-Python- und Drittanbieterbibliotheken bereitgestellt werden. Sie können Python-Befehle und -Skripte mit ArcGIS Notebooks im Fenster Python und über Skriptwerkzeuge ausführen, oder Sie können Python außerhalb von ArcGIS Pro ausführen. Wenn Sie Python ausführen, funktionieren die Befehle jedoch grundlegend gleichermaßen und verwenden dieselben Geoverarbeitungswerkzeuge.

Im Folgenden finden Sie ein einfaches Geoverarbeitungsskript, das ArcPy verwendet.

import arcpy

roads = "c:/base/data.gdb/roads"
output = "c:/base/data.gdb/roads_Buffer"

# Run Buffer
arcpy.analysis.Buffer(roads, output, "100 Feet")

Werkzeugparameter festlegen

Jedes Geoverarbeitungswerkzeug verfügt über einen festen Satz von Parametern, über die das Werkzeug die Informationen erhält, die für seine Ausführung erforderlich sind. Wenn ein Werkzeug in Python verwendet wird, müssen die Parameterwerte richtig festgelegt werden, damit das Werkzeug mit dem Skript ausgeführt werden kann. Sobald gültige Parameterwerte angegeben werden, kann das Werkzeug ausgeführt werden. Die meisten Parameter können als Zeichenfolgen angegeben werden. Einige komplexe Parameter können als Objekte angegeben werden, wobei die Arbeit mit ihnen im Vergleich zu langen Zeichenfolgen einfacher ist.

Zeichenfolgen bestehen aus Text, mit dem ein Parameterwert eindeutig bestimmt wird, z. B. ein Pfad zu einem Dataset oder ein Schlüsselwort. Im folgenden Codebeispiel werden Eingabe- und Ausgabeparameter für das Werkzeug Puffer angegeben. Beachten Sie, dass der Werkzeugname mit seinem Toolbox-Aliasnamen angehängt wird. Die Eingabe- und Ausgabeparameter werden mit zwei Zeichenfolgenvariablen definiert, damit der Aufruf des Werkzeugs leichter lesbar ist.

Die meisten Geoverarbeitungswerkzeuge enthalten erforderliche und optionale Argumente. Es gibt häufig Fälle, bei denen viele optionale Argumente vorhanden sind, die nicht angegeben werden müssen. Es gibt einige Strategien zum Umgang mit diesen nicht verwendeten Argumenten. Eine besteht darin, die Reihenfolge aller optionalen Argumente beizubehalten und diejenigen, die Sie nicht benötigen, als leere Zeichenfolge "", als Raute-Zeichen "#" oder mit dem Typ None zu referenzieren.

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", "", "", "", "", "NON_NULLABLE")
Die zweite Strategie besteht darin, Schlüsselwortargumente zu verwenden und mit dem Argumentnamen einen Wert zuzuweisen. Durch die Verwendung von Schlüsselwortargumenten können Sie nicht verwendete optionale Argumente überspringen oder in einer anderen Reihenfolge angeben.

import arcpy
arcpy.management.AddField("schools", "school_id", "LONG", field_is_nullable="NON_NULLABLE")

Werkzeugausgabe

ArcPy gibt die Ausgabewerte eines Werkzeugs als ein Result-Objekt zurück. Das Result-Objekt verwaltet Informationen über die Ausführung von Werkzeugen, einschließlich Meldungen, Parametern und Ausgabe-Dataset-Pfaden und -Werten. Die Ergebnisse bleiben erhalten, selbst wenn zwischenzeitlich mehrere andere Werkzeuge ausgeführt werden.

Die folgenden Beispiele zeigen, wie Sie nach der Ausführung eines Geoverarbeitungswerkzeugs die Werte eines Result-Objekts abrufen können:

import arcpy

arcpy.env.workspace = "c:/city/data.gdb"

# Geoprocessing tools return a Result object 
result = arcpy.management.CopyFeatures("roads", "urban_roads")

# A print function will display the string representation of the output.
print(result)

# A Result object can be indexed to get the output value.
result_value = result[0]

Beim Erstellen von Ausgaben, die lediglich einen Zwischenschritt eines größeren Workflows darstellen, kann das Ausgabeargument ausgelassen werden, damit das Werkzeug einen eindeutigen Pfad und Namen für die Ausgabe erstellen kann. Stellen Sie zu diesem Zweck die Ausgabe auf "#" oder None ein, oder überspringen Sie das Argument vollständig, wenn die Ausgabe das zuletzt verwendete Argument ist. In jedem Fall ist der zurückgegebene Wert der vollständige Pfad zur neuen Datenquelle.

import arcpy
arcpy.env.workspace = "c:/city/data.gdb"

result = arcpy.management.CopyFeatures("roads", "#")

Erstellen eines Geoverarbeitungs-Workflows

ArcPy verfügt über einige nützliche Klassen und Funktionen, die über die sequenzielle Ausführung von Werkzeugen hinausgehen und Sie beim Erweitern Ihres Geoverarbeitungsskripts unterstützen. Funktionen können für das Auflisten bestimmter Datasets zum Ausführen der Batch-Verarbeitung, für die Beschreibung eines Datasets zum programmatischen Lesen der entsprechenden Eigenschaften oder für die Ausführung viele weiterer nützlicher Geoverarbeitungswerkzeuge verwendet werden.

Weitere Informationen über das Erstellen von Geoverarbeitungsskripten mit ArcPy-Funktionen