[Python] ウィンドウを使用したワークフローの作成

[Python] ウィンドウでは、何百ものジオプロセシング ツールのすべてに、ArcPy サイト パッケージを介した実行がサポートされています。1 つのツールを実行することも、複数のツールを指定した順序で実行することもできます。より複雑な Python ワークフローをサポートする関数とクラスが数多くありますが、[Python] ウィンドウでは、これらにも ArcPy を介してアクセスできます。

Python ワークフローをサポートする関数には、特定のデータ タイプのリスト作成方法や、データセットのプロパティの取得方法、ジオデータベースに追加する前のテーブル名の検証方法がありますが、これ以外の数々のスクリプト関数の 1 つを実行することもできます。

次のサンプル コードでは、ListFeatureClasses 関数を使用して、ワークスペース内のすべてのフィーチャクラスのリストが生成され、次に GetCount ツールでそのリスト内の各フィーチャクラスについてフィーチャ数が表示されます。

>>> arcpy.env.workspace = "c:/data"
>>> for fc in arcpy.ListFeatureClasses():
...     print fc, arcpy.GetCount_management(fc)

空間参照フィールド マップフィールド インデックスなどのクラスは、他のジオプロセシング ツールや関数での使用が可能なオブジェクトを作成する場合に使用できます。

たとえば、Python で空間参照のすべてのプロパティの詳細を指定すると、時間がかかり、現実的ではありません。SpatialReference クラスを使用すれば、SpatialReference オブジェクトのプロパティを素早く完成させて、そのオブジェクトをジオプロセシング ツールの入力として使用できるようになります。次のサンプル コードでは、SpatialReference オブジェクトに対して、投影ファイルにある北米の正距円錐図法のプロパティのデータが設定され、次にこのオブジェクトと CreateFeatureClass ツールを使用して、指定した空間参照で新しいフィーチャクラスが作成されます。

import arcpy
inputWorkspace = "c:/temp"
outputName =  "rivers.shp"
spatialRef = arcpy.SpatialReference("c:/data/North America Equidistant Conic.prj")
arcpy.CreateFeatureClass_management(inputWorkspace, outputName, "POLYLINE", "", "", "", spatialRef)

関数の作成

関数は、特定のタスクを実行する小さなコード ブロックで、ワークフローの詳細に組み込むことができます。関数の作成後は、その関数を繰り返し使用することができるので、同じタスクを何度も書き直す手間が省けます。

def listFieldNames(table, wildcard=None, fieldtype=None):
    fields = arcpy.ListFields(table, wildcard, fieldtype)
    nameList = []
    for field in fields:
        nameList.append(field.name)
    return nameList

Python では、Python の def キーワードで関数が定義され、続いて関数名とパラメータのリストが記載されます。上記の関数 listFieldNames は、テーブルまたはフィーチャクラスからフィールド名のリストを返す短い関数です。return ステートメントは、関数から値を返す場合に使用します。

>>> fieldNames = listFieldNames("c:/data/water.gdb/water_pipes")

ただし、作業のために定期的に関数を作成する必要がある場合は、スクリプト ツールの記述を検討してください。短い断片的なコードの記述から、カスタム関数の記述、そしてジオプロセシング スクリプト ツールの記述に進むのは自然なことです。カスタム ツールの作成の詳細をご覧ください。


7/10/2012