Python の関数の使用
関数は、特定のタスクを実行する機能を定義した小部分で、もっと大きなプログラム内に組み込むことができます。
ArcPy では、すべてのジオプロセシング ツールが関数として提供されますが、ジオプロセシング ツールではない関数もあります。ツールのほかに、ArcPy は Python を使用するジオプロセシング ワークフローのサポートを拡張する関数をいくつか提供しています。関数を使用して、特定のデータセットのリスト作成、データセットのプロパティの検索、ジオデータベースに追加する前のテーブル名の検証など、数多くの便利なジオプロセシング タスクを実行できます。これらの関数は Python ワークフローを対象としているので、ArcPy からのみ使用でき、ArcGIS アプリケーション内でツールとして使用することはできません。
関数の一般的な形式はツールの形式と同様で、引数(必須の場合と必須でない場合がある)を受け取って何らかの値を返します。ツール以外の関数から返される値は、文字列からジオプロセシング オブジェクトまで、さまざまな形式のものです。ツール関数は常に Result オブジェクトを返し、ジオプロセシング メッセージのサポートを提供します。
次の例では、2 つの ArcPy 関数を使用します。GetParameterAsText を使用して入力引数を受け取り、Exists を使用して入力の有無を判別します。Exists 関数はブール値を返します(True または False)。
import arcpy input = arcpy.GetParameterAsText(0) if arcpy.Exists(input): print "Data exists" else: print "Data does not exist"
次の例では、ListFeatureClasses 関数を使用してフィーチャクラスの Python リストを作成し、このリストをループ処理して、個々のフィーチャクラスを境界フィーチャクラスでクリップします。
import arcpy from arcpy import env import os # The workspace environment needs to be set before ListFeatureClasses # to identify which workspace the list will be based on # env.workspace = "c:/data" out_workspace = "c:/data/results/" clip_features = "c:/data/testarea/boundary.shp" # Loop through a list of feature classes in the workspace # for fc in arcpy.ListFeatureClasses(): # Set the output name to be the same as the input name, and # locate in the 'out_workspace' workspace # output = os.path.join(out_workspace, fc) # Clip each input feature class in the list # arcpy.Clip_analysis(fc, clip_features, output, 0.1)
関連項目
7/10/2012