Python でのクラスの使用
クラスは建築の青写真と同様です。青写真には対象物の作成方法のフレームワークが示されます。クラスはオブジェクトの作成に使用でき、多くの場合、インスタンスとして参照できます。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", "", "", "", 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