Verwenden von Klassen in Python

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, die häufig als Instanz bezeichnet werden. 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.

ArcPy enthält mehrere Klassen, darunter SpatialReference, ValueTable und Point. Nach deren Instanziierung können die Eigenschaften und Methoden von Klassen verwendet werden. Klassen verfügen über eine oder mehrere Methoden, die als Konstruktoren bezeichnet werden. Ein Konstruktor ist eine Methode zum Initialisieren einer neuen Instanz einer Klasse. Im nachfolgenden Beispiel ist SpatialReference(prjFile) der Klassenkonstruktor – er erstellt das spatialRef-Objekt durch Lesen einer Projektionsdatei.

import arcpy

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

Wie die meisten anderen Klassen enthält SpatialReference eine Reihe von Methoden und Eigenschaften. Ausgehend vom vorherigen Beispiel können Sie auf die Eigenschaften von spatialRef zugreifen.

import arcpy

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

# Print the SpatialReference's name, and type
#
print(spatialRef.name)
print(spatialRef.type)

Klassen können wiederholt verwendet werden. Im folgenden Beispiel werden zwei eindeutige Punktobjekte mithilfe der Point-Klasse erstellt.

import arcpy

pointA = arcpy.Point(2.0, 4.5)
pointB = arcpy.Point(3.0, 7.0)
Hinweis:

Mit der CreateObject-Funktion können auch viele der Objekte erstellt werden, die mit Klassen erstellt werden können. Die Verwendung von Klassen ist jedoch einfacher und besser lesbar.

Verwenden von Klassen mit Geoverarbeitungswerkzeugen

Werkzeugparameter werden normalerweise mit einfachen Textzeichenfolgen definiert. Dataset-Namen, Pfade, Schlüsselwörter, Feldnamen, Toleranzen und Domänennamen können mit einer Zeichenfolge in Anführungszeichen angegeben werden.

Einige Parameter sind mithilfe von einfachen Zeichenfolgen jedoch schwieriger zu definieren, da es sich hierbei um komplexere Parameter handelt, die viele Eigenschaften erfordern. Anstatt diese Parameter mit langen, komplizierten Textzeichenfolgen zu definieren, können Sie Klassen verwenden (z. B. SpatialReference, ValueTable und Point-Klassen). Die Dokumentation jedes Werkzeugs enthält ein Skriptbeispiel, in dem beschrieben wird, wie die einzelnen Werkzeugparameter definiert und verwendet werden.

Im folgenden Beispiel wird ein SpatialReference-Objekt erstellt und zum Definieren des Ausgabe-Koordinatensystems einer neuen Feature-Class verwendet, die mit dem Werkzeug CreateFeatureClass erstellt wurde.

import arcpy

inputWorkspace = "c:/temp"
outputName =  "rivers.shp"

prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)

# Run CreateFeatureclass using the spatial reference object
#
arcpy.CreateFeatureclass_management(inputWorkspace, outputName, "POLYLINE", 
                                    spatial_reference=spatialRef)

Die entsprechende Zeichenfolge für diesen Parameter sieht in etwa wie folgt aus: PROJCS['North_America_Equidistant_Conic',GEOGCS['GCS_North_American_1983',DATUM['D_North_American_1983',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Equidistant_Conic'],PARAMETER['False_Easting',0.0],PARAMETER['False_Northing',0.0],PARAMETER['Central_Meridian',-96.0],PARAMETER['Standard_Parallel_1',20.0],PARAMETER['Standard_Parallel_2',60.0],PARAMETER['Latitude_Of_Origin',40.0],UNIT['Meter',1.0]];IsHighPrecision

Verwandte Themen