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, z. B. 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. Unten im Beispiel ist SpatialReference (prjFile) der Klassenkonstruktor. Er erstellt das spatialRef-Objekt, indem er eine Projektionsdatei liest.

import arcpy

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

Wie die meisten anderen Klassen auch, 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

Sie können Klassen mehr als einmal verwenden. Im folgenden Beispiel werden mit der Point-Klasse zwei eindeutige Punktobjekte erstellt.

import arcpy

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

Die Funktion CreateObject kann zum Erstellen vieler Objekte verwendet werden, die auch mithilfe von Klassen erstellt werden können. Die Verwendung von Klassen ist jedoch sowohl einfacher als auch 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 zum Definieren dieser Parameter lange, komplizierte Textzeichenfolgen zu verwenden, können Sie Klassen nutzen (z. B. SpatialReference, ValueTable und Point). 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", 
                                    "", "", "", spatialRef)

Die Zeichenfolgenentsprechung 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


7/10/2012