現在のワークスペース環境およびテンポラリ ワークスペース環境の使用
ほぼすべてのジオプロセシング ツールがデータセットを入力として受け取り、新しいデータセットを生成します。ジオプロセシング ツールを使用するとき、次のような長いデータセット名を入力しないようにしてください。
E:\Data\D052753_a\infrastructure\BK16_c1\approved.gdb\roads\mjrst
このような長いデータセット名を入力することは、手間のかかる面倒な作業であり、ミスも起こりがちです。このため、ジオプロセシングでは、データセットまたはレイヤをツールのダイアログ ボックスにドラッグしたり、参照ボタン を使用してデータセットまで移動したりできるだけではなく、レイヤをドロップダウン リストから選択することもできます。さらに、より簡単に入力および出力データセットを指定できるように 2 つの機能が用意されています。1 つは現在のワークスペース環境設定で、もう 1 つはテンポラリ ワークスペース環境設定です。
現在のワークスペースとテンポラリ ワークスペースに関する重要な点を以下に示します。
- 現在のワークスペースおよびテンポラリ ワークスペースは、[ジオプロセシング環境] ウィンドウ([ジオプロセシング] → [環境] の順にクリックしてアクセス)で設定します。
- 現在のワークスペースおよびテンポラリ ワークスペースの設定は、他のジオプロセシング環境と同じように、マップ ドキュメントとともに保存されます。
- ArcMap では、現在のワークスペースおよびテンポラリ ワークスペースは、自動的にデフォルト ジオデータベースに設定されます。いつでも現在のワークスペースおよびテンポラリ ワークスペースをこのデフォルト ジオデータベース以外に変更できます。
- ツールのダイアログ ボックスを使用しているときでも Python でツールを実行しているときでも、データセットのベース名を入力すると、ツールはデータセットを現在のワークスペースで検索します。
- ツールのダイアログ ボックスを使用するときに、現在のワークスペースおよびテンポラリ ワークスペースの設定を使用して出力データセット名が自動生成されます。
現在のワークスペース環境の設定
- ArcMap で、[ジオプロセシング] → [環境] の順にクリックします。[環境設定] ウィンドウが開きます。
-
[ワークスペース] カテゴリを展開し、ワークスペースへのパスを入力します。下の図は、現在のワークスペースを「D:\ArcTutor\BuildingaGeodatabase\Montgomery.gdb\Landbase」というジオデータベース内のフィーチャ データセットに設定する方法を示しています。
現在のワークスペースは、システム フォルダ、ジオデータベース、またはジオデータベース内のフィーチャ データセットに設定できます。
- [OK] をクリックします。
環境を設定する方法は他にもいくつかあり、すべてのツール、1 つのツールの実行、モデル、モデル プロセス、またはスクリプトに適用されるように環境を設定できます。
ベース名の使用
現在のワークスペースの最も重要な目的は、ワークスペースを一度設定すると、入力パスおよび出力パスを入力するときにベース名のみを入力するだけで済むことです。下の図のように、データセット名にはワークスペースとベース名の 2 つの構成要素があります。
ベース名の使用例
下の図は、現在のワークスペースとして使用されているジオデータベースの例を示しています。現在のワークスペースは、「D:\BuildingaGeodatabase\Montgomery.gdb\Landbase」に設定されています。
ワークスペースを一度設定したら、それ以降にデータセット名が必要になるたびに、ベース名のみを入力できます。下の例は、[クリップ(Clip)] ツールの例を示しています。
- ベース名(「Blocks」)が現在のワークスペースに結合されてデータセット名(「D:\BuildingaGeodatabase\Montgomery.gdb\Landbase\Blocks」)が形成されます。次に、[入力フィーチャ] パラメータがこのデータセット名に置き換えられます。
- 一意な出力データセット名が自動生成されます。そのベース名は、<入力ベース名>_<ツール名> という形式で付けられます(この例では「Blocks_Clip」)。一意な名前にするために必要な場合は番号が付加されます。
- 自動生成された出力名を使用したくない場合は、自動生成された名前を削除し、ベース名を入力すると、下に示すように、それが展開されてデータセット名になります。
ツールを実行した後に、出力があるべき場所にないことがあります(出力名を入力するときにミスがあったか、出力場所を忘れたことが原因と考えられます)。その場合は、[結果] パネルを開きます。このパネルには、実行したツールの履歴とその入力および出力データセットが表示されます。
下に示すように、バッチ グリッドでベース名を使用することもできます。
ワークスペースをツールのダイアログ ボックスで表示
下に示すように、ポインタを参照ボタン の上に置くと、参照した最後のワークスペースが表示されます。
参照ボタンをクリックすると、[参照] ダイアログ ボックスが現在のワークスペースで開きます。
スクリプトにおける現在のワークスペースとベース名
Python ウィンドウでは、ワークスペース環境で現在のワークスペースを設定します。ワークスペースを設定したら、下に示すように、ワークスペース内のどのデータセットのベース名も使用できます。
>> import arcpy
>> arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"
>> arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
次の例は、workspace コマンドの使用方法を示す Python スクリプトの例です。
# Purpose: Determine the type of vegetation within 100 meters of all stream crossings
# Import the ArcPy site-package
import arcpy
try:
# Set the workspace (to avoid having to type in the full path to the data every time)
arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"
# Process: Find all stream crossings (points)
arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
# Process: Buffer all stream crossings by 100 meters
arcpy.Buffer_analysis("stream_crossings","stream_crossings_100m", "100 meters")
# Process: Clip the vegetation feature class to stream_crossings_100m
arcpy.Clip_analysis("vegetation", "stream_crossings_100m", "veg_within_100m_of_crossings")
# Process: Summarize how much (area) of each type of vegetation is found within 100 meters of the stream crossings
arcpy.Statistics_analysis("veg_within_100m_of_crossings", "veg_within_100m_of_crossings_stats","shape_area sum","veg_type")
except:
# If an error occurred while running a tool print the messages
print arcpy.GetMessages()
テンポラリ ワークスペース環境
現在のワークスペース環境に加え、テンポラリ ワークスペース環境も設定できます。現在のワークスペースの場合と同じ方法で、テンポラリ ワークスペースの設定にアクセスしたり、テンポラリ ワークスペースの設定を行ったりします。
テンポラリ ワークスペース環境の主な用途は、ModelBuilder で使用することです。ModelBuilder は、中間データセット(モデルを実行すると不要になるデータセット)を書き出すワークスペースを必要とします。主要な目的は ModelBuilder で使用することですが、ツール ダイアログ ボックスのためにテンポラリ ワークスペース環境を設定することが必要になる場合があります。ModelBuilder で使用するためにテンポラリ ワークスペースを設定し、ツールのダイアログ ボックスを使用して実行する前に、その設定をリセットすることを忘れるケースもよく見られます。
テンポラリ ワークスペース環境を設定すると、下に示すように、ツールは現在のワークスペースの代わりにテンポラリ ワークスペースを使用して出力データセット名を自動生成します。
出力としてベース名を入力すると、テンポラリ ワークスペースではなく現在のワークスペースを使用してデータセット名が作成されます。
ベース名を使用する場合、常にテンポラリ ワークスペースではなく現在のワークスペースに出力されます。スクリプトを作成するときは、この点に注意する必要があります。下のコード スニペットでは、「stream_crossings」という出力データセットはテンポラリ ワークスペースではなく現在のワークスペースに書き込まれます。
arcpy.env.workspace = "c:/projects/RedRiverBasin/data.mdb"
arcpy.env.scratchWorkspace = "c:/projects/Scratch/scratch.gdb"
arcpy.Intersect_analysis("roads ; streams ", "stream_crossings", "#", 1.5, "point")
テンポラリ ワークスペースは一時的なデータとして使用するものであるため、これを ArcSDE ジオデータベースに設定しないでください。そうすると、一時的なテンポラリ データをエンタープライズ データベースに書き込むことになって、パフォーマンスの問題が発生する原因になります。常に、テンポラリ ワークスペースで(パーソナル ジオデータベースまたはシェープファイル ワークスペースではなく)ファイル ジオデータベースを使用することを推奨します。
自動生成された出力データセット名
すべてのツールが自動的に出力データセット名を作成します。出力名を生成するロジックは次のとおりです。
- テンポラリ ワークスペース環境が設定されている場合、自動生成された出力パスはテンポラリ ワークスペースになります。
- テンポラリ ワークスペース環境が設定されていない場合、現在のワークスペース環境が調べられます。現在のワークスペースが設定されている場合、自動生成された出力パスは現在のワークスペースになります。
- テンポラリ ワークスペースも現在のワークスペースも設定されていない場合、自動生成された出力パスはいずれかの入力のワークスペースになります。この場合、一定の制限が適用されます。たとえば、ワークスペースがカバレッジ ワークスペースであり、出力が新しいフィーチャクラスである場合、出力はカバレッジ ワークスペースの上のディレクトリに保存されるシェープファイルになります。この他にも制限があり、たとえば、書き込みアクセスの制限があります。状況に応じて、出力がシステムの temp ディレクトリに書き込まれることがあります。
- 出力データセットとしてベース名を入力すると、テンポラリ ワークスペースが設定されているかどうかに関係なく、現在のワークスペースを使用して出力パスが作成されます。