クラスは建築の青写真と同様です。青写真には対象物の作成方法のフレームワークが示されます。クラスはオブジェクトの作成に使用でき、多くの場合、インスタンスとして参照できます。SpatialReference クラスや Extent クラスなどの ArcPy クラスは、ジオプロセシング ツールのパラメーターを実行するためのショートカットとしてよく使用されます。ArcPy クラスを使用しない場合、これらのパラメーターはもっと複雑な文字列が必要になります。
ArcPy は、SpatialReference、ValueTable、Point など、いくつかのクラスを組み込んでいます。クラスをインスタンス化した後、クラスのプロパティとメソッドを使用できます。クラスには、コンストラクターと呼ばれる 1 つ以上のメソッドが存在します。コンストラクターは、クラスの新規インスタンスを初期化するためのメソッドです。次に示す例では、SpatialReference(prjFile) はクラス コンストラクターです。このコンストラクターは、投影情報ファイルを読み取ることによって spatialRef オブジェクトを作成します。
import arcpy
prjFile = "c:/projections/North America Equidistant Conic.prj"
spatialRef = arcpy.SpatialReference(prjFile)
他のほとんどのクラスと同様に、SpatialReference はいくつかのメソッドとプロパティを含んでいます。前記のサンプルを基に、次のようにして spatialRef のプロパティにアクセスできます。
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)
クラスは繰り返し使用できます。次に示す例では、Point クラスを使用して 2 つの一意なポイント オブジェクトが作成されます。
import arcpy
pointA = arcpy.Point(2.0, 4.5)
pointB = arcpy.Point(3.0, 7.0)
メモ:
クラスを使用して作成できるオブジェクトの多くは、CreateObject 関数を使用して作成することもできます。ただし、クラスを使用すれば、コードがより使いやすく読みやすいものになります。
ジオプロセシング ツールでのクラスの使用
ツールのパラメーターは通常、単純なテキスト文字列を使用して定義されます。データセット名、パス、キーワード、フィールド名、許容値、およびドメイン名は、引用符付き文字列を使用して指定できます。
パラメーターの中には、多数のプロパティを必要とする複雑なパラメーターがあり、単純な文字列を使用してこれらを定義することは困難です。長く複雑なテキスト文字列を使用してこれらのパラメーターを定義する代わりに、クラスを使用できます (たとえば、SpatialReference、ValueTable、および Point の各クラス)。各ツールの資料には、それぞれのツール パラメーターを定義して使用する方法を示したスクリプト例が記載されています。
次に示す例では、CreateFeatureClass ツールを使用して作成された新しいフィーチャクラスの出力座標系を定義するために、SpatialReference オブジェクトを作成し、使用しています。
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)
このパラメーターに相当する文字列は、次のようなものです。 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