Kurzer Überblick über ArcPy

ArcPy ist ein Site-Paket, das auf das erfolgreiche Modul "arcgisscripting" aufbaut (und dessen Nachfolger darstellt). Es soll die Hauptkomponente für eine nützliche und produktive Durchführung von geographischen Datenanalysen, Datenkonvertierung, Datenmanagement und Kartenautomatisierung mit Python sein.

ArcPy bietet Zugriff auf Geoverarbeitungswerkzeuge sowie zusätzliche Funktionen, Klassen und Module, mit denen Sie schnell und unkompliziert einfache oder komplexe Arbeitsabläufe erstellen können.

ArcGIS-Anwendungen und -Skripte, die mit ArcPy geschrieben wurden, können die vielen verschiedenen Python-Module nutzen, die von GIS-Fachleuten und -Programmierern der unterschiedlichsten Fachrichtungen entwickelt wurden. Ein zusätzlicher Vorteil der Verwendung von ArcPy in Python besteht darin, dass Python eine allgemeingültige Programmiersprache ist, die einfach erlernt und verwendet werden kann. ArcPy wird interpretiert und dynamisch typisiert. Sie können in einer interaktiven Umgebung also schnell Prototypen von Skripten erstellen und diese testen, und verfügen trotzdem über die Leistungsstärke, um das Schreiben von großen Anwendungen unterstützen zu können.

ArcPy bietet Zugriff auf Geoverarbeitungswerkzeuge sowie zusätzliche Funktionen, Klassen und Module, mit denen Sie einfache oder komplexe Arbeitsabläufe erstellen können. ArcPy lässt sich grob in Werkzeuge, Funktionen, Klassen und Module unterteilen.

Technisch gesehen sind Geoverarbeitungswerkzeuge Funktionen, die von arcpy zur Verfügung gestellt werden – d. h. der Zugriff darauf erfolgt wie auf jede andere Python-Funktion. Um Verwechslungen zu vermeiden, wird jedoch stets zwischen Werkzeug- und Nicht-Werkzeug-Funktionen unterschieden (zu letzteren gehören beispielsweise Hilfsprogrammfunktionen wie ListFeatureClasses()).

VorsichtVorsicht:
Das ArcPy-Site-Paket lehnt sich stark an Python 2.6 an und erfordert diese Version für den erfolgreichen Import.

Ausführen eines Werkzeugs

Das nächste Beispiel verdeutlicht, wie Sie das Werkzeug Puffer ausführen. Wenn das Werkzeug ausgeführt wird, werden die Meldungen standardmäßig rechts im Python-Fenster im Abschnitt für die Hilfe angezeigt.

>>> arcpy.Buffer_analysis("c:/data/Portland.gdb/streets", "c:/data/Portland.gdb/steets_buffer", "500 METERS")

Es folgt ein weiteres Beispiel für die Ausführung von Werkzeugen. In diesem Beispiel werden Werkzeuge aus den Toolboxes "Data Management" und "Conversion" verwendet. Der als Eingabe dienenden Streets-Feature-Class wird ein Feld hinzugefügt, das Feld wird berechnet, und die Feature-Class wird in eine ArcSDE-Enterprise-Geodatabase geladen.

>>> import arcpy 
>>> arcpy.AddField_management("c:/data/Portland.gdb/streets", "LENGTH_MILES", "TEXT")
>>> arcpy.CalculateField_management("c:/data/Portland.gdb/streets", "LENGTH_MILES", "!shape.length@miles!", "PYTHON_9.3")
>>> arcpy.FeatureClassToFeatureClass_conversion("c:/data/Portland.gdb/streets", "Database Connections/MySDE.sde/PortlandDataset", "streets")
Weitere Informationen zur Verwendung von Werkzeugen in Python

Abrufen von Ergebnissen von einem Werkzeug

Bei der Ausführung eines Geoverarbeitungswerkzeugs werden die Ergebnisse des Werkzeugs in einem Ergebnisobjekt zurückgegeben. In der Regel handelt es sich bei diesem Objekt um den Pfad zum Ausgabe-Dataset, das vom Werkzeug erstellt oder aktualisiert wurde. Es können jedoch auch andere Werttypen, z. B. Zahlen oder boolesche Werte, zurückgegeben werden. Falls die Ausgabe für ein Werkzeug ein mehrwertiger Parameter ist, können die Werte als Liste in einer Liste zurückgegeben werden.

In den folgenden Codebeispielen werden die Erfassung von Rückgabewerten und die möglichen Werte veranschaulicht:

Zurückgeben des Pfades der Ausgabe-Feature-Class. Das Ergebnis kann als Eingabe für eine andere Funktion verwendet werden.

>>> result = arcpy.Buffer_analysis("rivers", "riverBuf", "50 METERS")
>>> print result
C:\Portland\Portland_OR.gdb\riverBuf
>>> arcpy.Clip_analysis("streets", result, "streets_50m_of_rivers")

Zurückgeben der Anzahl der Features

>>> result = arcpy.GetCount_management("streets_50m_of_rivers")
>>> print result.getOutput(0)
54

Zurückgeben einer Liste von standardmäßigen räumlichen Indexgittern für eine Feature-Class

>>> result = arcpy.CalculateDefaultGridIndex_management("streets_50m_of_rivers")
>>> for i in range(0, result.outputCount):
...     print result.getOutput(i)
...
560
200
0

Verwenden von Umgebungseinstellungen

Umgebungseinstellungen für die Geoverarbeitung können als zusätzliche Parameter aufgefasst werden, mit denen die Ergebnisse eines Werkzeugs beeinflusst werden können. Sie unterscheiden sich insofern von normalen Werkzeugparametern, als sie getrennt vom Werkzeug verwaltet und von Werkzeugen während der Ausführung abgefragt und verwendet werden. Umgebungseinstellungen wie z. B. ein Interessensbereich, das Koordinatensystem des Ausgabe-Datasets oder die Zellengröße eines neuen Raster-Datasets können über die Werkzeuge angegeben und von ihnen berücksichtigt werden.

Umgebungseinstellungen stehen als Eigenschaften in der env-Klasse zur Verfügung. Über diese Eigenschaften können die aktuellen Umgebungswerte abgerufen und festgelegt werden. Im Folgenden finden Sie einige Beispiel für die Verwendung von Werten der Umgebungseinstellungen:

Festlegen der Workspace-Umgebung

>>> arcpy.env.workspace = "c:/data/Portland.gdb"
>>> arcpy.Buffer_analysis("streets", "streetBuf", "500 METERS")

Festlegen des räumlichen Indexgitters auf den Rückgabewert eines Werkzeugs

>>> arcpy.env.spatialGrid1 = arcpy.CalculateDefaultSpatialGridIndex_management("streets").getOutput(0)

Abrufen der aktuellen Zellengrößeneinstellung des Rasters und Sicherstellen, dass es sich um eine bestimmte Größe für die Standardausgabe handelt.

if arcpy.env.cellSize != 30:
    arcpy.env.cellSize = 30
Weitere Informationen zur Verwendung von Umgebungseinstellungen in Python

Verwenden von Funktionen

Eine Funktion ist eine definierte Funktionseinheit, die einen bestimmten Task ausführt und in ein größeres Programm integriert werden kann. Zusätzlich zu Werkzeugen stellt ArcPy eine Reihe von Funktionen bereit, um Geoverarbeitungsarbeitsabläufe besser zu unterstützen. Funktionen können verwendet werden, um spezifische Datasets aufzulisten, die Eigenschaften eines Datasets abzurufen, das Vorhandensein von Daten zu überprüfen oder einen Tabellennamen vor dem Hinzufügen zu einer Geodatabase zu überprüfen. Sie ermöglichen außerdem die Ausführung einer Vielzahl weiterer hilfreicher Skripterstellungs-Tasks.

Der folgende Beispielcode veranschaulicht, wie die Eigenschaften von Daten abgerufen werden und eine Erweiterung ausgecheckt wird.

import arcpy

# prints True
print arcpy.Exists("c:/data/Portland.gdb/streets") 

# prints NAD_1983_StatePlane_Oregon_North_FIPS_3601_Feet
sr = arcpy.Describe("c:/data/Portland.gdb/streets").spatialReference
print sr.name 

# prints Available
print arcpy.CheckExtension("spatial") 

arcpy.CheckOutExtension("spatial")
Weitere Informationen zur Verwendung von Funktionen in Python

Verwenden von Klassen

ArcPy-Klassen, z. B. SpatialReference und Extent, werden häufig als Verknüpfungen zu vollständigen Parametern von Geoverarbeitungswerkzeugen verwendet, die andernfalls über eine kompliziertere Zeichenfolgenentsprechung verfügen würden. Eine Klasse entspricht einem architektonischen Entwurf. Der Entwurf stellt die Grundlage für die Erstellung eines Objekts dar. Klassen können zum Erstellen von Objekten verwendet werden. Diese werden häufig als Instanz bezeichnet.

import arcpy

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)
Weitere Informationen zur Verwendung von Klassen in Python

Arbeiten mit Modulen

ArcPy beinhaltet Module, die andere Bereiche von ArcGIS abdecken. ArcPy wird von einer Reihe von Modulen unterstützt, einschließlich eines Kartenerstellungsmoduls (arcpy.mapping), eines Spatial Analyst-Moduls (arcpy.sa) und eines Geostatistical Analyst-Moduls (arcpy.ga).

So verwenden z. B. die Werkzeuge des Moduls arcpy.sa Werkzeuge aus der Toolbox "Spatial Analyst", sind jedoch für die Unterstützung von Map Algebra konfiguriert. Die Ausführung von arcpy.sa.Slope entspricht daher der Ausführung des Werkzeugs Neigung in der Toolbox "Spatial Analyst".

Verwandte Themen


7/10/2012