共有モデルおよびスクリプト ツールでの中間(テンポラリ)データの管理
テンポラリ データは、ツールによって使用され、ツールの実行後に削除されるデータです。ModelBuilder では、テンポラリ データは中間データと呼ばれます。ModelBuilder の場合、中間のマークが付けられたデータは、モデル ツールの実行後に自動的に削除されます。しかし、スクリプトの場合は、ユーザがスクリプト内でテンポラリ データを削除する必要があります。
ジオプロセシング パッケージまたはジオプロセシング サービスを使用してツールを共有している場合、テンポラリ データまたは中間データを管理するために、モデルまたはスクリプトを変更する必要は一切ありません。以下に説明する方法は、カスタム ツールボックスを共有する場合、つまりパッケージやサービスを共有するのではなく、ユーザが作成したツールボックス(*.tbx ファイル)を他のユーザと共有する場合にのみ適用されます。カスタム ツールボックスを共有する場合は、テンポラリ データや中間データを、ツールが実行されるコンピュータ上の場所に書き込むことで、ツールの移植性を確保する必要があります。
モデル ツールまたはスクリプト ツールを含むツールボックスを他のユーザと共有するときは、ツールがテンポラリ データまたは中間データを書き込める場所(フォルダまたはジオデータベース)が必要です。2 つの読み取り専用の環境、テンポラリ GDB(テンポラリ ジオデータベース)とテンポラリ フォルダがあり、これらに中間データとテンポラリ データを書き込むことができます。これら 2 つの環境は、ArcGIS 10.1 で導入されました。
モデルの中間データ
すべての中間データは、中間のフラグを付けて、テンポラリ フォルダまたはテンポラリ ジオデータベースに書き込む必要があります。以下の図に、[中間] のフラグを付けた [重心の交点] のデータ変数を示します。この出力場所は、テンポラリ ジオデータベース(%scratchGDB%)です。パーセント記号(%)は、変数置換を示しています。scratchGDB の値は、モデル ツールの実行時に展開されます。poly_Intersect という名前のフィーチャクラスが、テンポラリ ジオデータベースに書き込まれます。同様に、%scratchFolder% を使用して、ファイルベースのデータ(*.lyr ファイル、*.txt ファイルなど)を書き込むことができます。
中間フィーチャクラスを書き込むときに、シェープファイルをテンポラリ フォルダに書き込みたくなる場合があります。しかし、シェープファイルにはツールの移植性に影響を与える厳しい制限がいくつかあるため、この方法は使わず、フィーチャ データはテンポラリ ジオデータベースに書き込んでください。シェープファイルとその制限の詳細については、「シェープファイル出力のジオプロセシングの検討事項」をご参照ください。
また、中間データはインメモリ ワークスペースにも書き込むことができます。
スクリプト ツールでのテンポラリ データの管理
スクリプト ツールのテンポラリ データは、テンポラリ ジオデータベースまたはテンポラリ フォルダのいずれかに書き込む必要があります。以下に、フィーチャクラスをテンポラリ ジオデータベースにコピーし、終了時にそれを削除するコードを示します。
import arcpy
import os
inFC = arcpy.GetParameterAsText(0)
tempFC = arcpy.env.scratchGDB + os.path.sep + "tempFC"
arcpy.CopyFeatures_management(inFC, tempFC)
# Do some work here...
# Clean up when done...
#
arcpy.Delete_management(tempFC)
スクリプト内で、データをインメモリ ワークスペースに書き込むこともできます。次に例を示します。
import arcpy
table = arcpy.CreateTable_management("in_memory", "table1")
arcpy.AddField_management(table, "Field1", "TEXT", field_length=20)
cursor = arcpy.da.InsertCursor(table, ["Field1"])
cursor.insertRow(["Hello World"])
in_memory ワークスペースは、ジオプロセシング ツールにのみ有効です。これは、任意のデータを書き込める汎用的な仮想ディレクトリではありません。
テンポラリ ワークスペース
テンポラリ ワークスペース環境は、主に ModelBuilder によって、中間データと出力データを書き込む場所として使用されます。この環境は、ユーザ自身(または同じツールを使用する他のユーザ)が任意の場所(フォルダ、ジオデータベース、またはジオデータベース内のフィーチャ データセット)に設定できます。共有する予定のあるツールでは、テンポラリ ワークスペース環境を使用しないことをお勧めします。これは、同じツールを使用するユーザが、テンポラリ ワークスペース環境をフォルダ、ジオデータベース、またはフィーチャ データセットに設定できてしまうためです。たとえば、レイヤ ファイルを出力できるように、テンポラリ ワークスペースをフォルダに設定したいにもかかわらず、同じツールを使用するユーザがテンポラリ ワークスペースをジオデータベースに設定してしまうような場合です。この場合、ツールが実行しても、レイヤ ファイルをフォルダに書き込めないために実行できません。これが、テンポラリ ジオデータベースとテンポラリ フォルダが 10.1 で導入された主な理由です。この導入により、既知のジオデータベースや既知のフォルダにデータを書き込むことができます。