ほぼすべてのジオプロセシング ツールがデータセットを入力として受け取り、新しいデータセットを生成します。ジオプロセシング ツールを使用するとき、次のような長いデータセット名を入力しないようにしてください。
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 つの構成要素があります。
![データセット名 データセット名](GUID-A03266A7-D761-43E8-AB07-2C3ACC204E16-web.png)
ベース名の使用例
下の図は、現在のワークスペースとして使用されているジオデータベースの例を示しています。現在のワークスペースは、「D:\BuildingaGeodatabase\Montgomery.gdb\Landbase」に設定されています。
![Montgomery.gdb のコンテンツ Montgomery.gdb のコンテンツ](GUID-0C95CE15-6D7F-444C-80A2-99E33A5DB6CE-web.png)
ワークスペースを一度設定したら、それ以降にデータセット名が必要になるたびに、ベース名のみを入力できます。下の例は、[クリップ (Clip)] ツールの例を示しています。
- ベース名 (「Blocks」) が現在のワークスペースに結合されてデータセット名 (「D:\BuildingaGeodatabase\Montgomery.gdb\Landbase\Blocks」) が形成されます。次に、[入力フィーチャ] パラメーターがこのデータセット名に置き換えられます。
- 一意な出力データセット名が自動生成されます。そのベース名は、<入力ベース名>_<ツール名> という形式で付けられます (この例では「Blocks_Clip」)。一意な名前にするために必要な場合は番号が付加されます。
- 自動生成された出力名を使用したくない場合は、自動生成された名前を削除し、ベース名を入力すると、下に示すように、それが展開されてデータセット名になります。
ツールを実行した後に、出力があるべき場所にないことがあります (出力名を入力するときにミスがあったか、出力場所を忘れたことが原因と考えられます)。その場合は、[結果] パネルを開きます。このパネルには、実行したツールの履歴とその入力および出力データセットが表示されます。
下に示すように、バッチ グリッドでベース名を使用することもできます。
![現在のワークスペースをバッチ グリッドで使用 現在のワークスペースをバッチ グリッドで使用](GUID-E999B548-394B-4E15-A001-22D94E2A786F-web.png)
ワークスペースをツールのダイアログ ボックスで表示
下に示すように、ポインターを参照ボタン の上に置くと、参照した最後のワークスペースが表示されます。
![参照したワークスペースをツールのダイアログ ボックスで表示 参照したワークスペースをツールのダイアログ ボックスで表示](GUID-F8626FF9-5280-4F36-8200-2759D0E01383-web.png)
参照ボタンをクリックすると、[参照] ダイアログ ボックスが現在のワークスペースで開きます。
スクリプトにおける現在のワークスペースとベース名
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 で使用するためにテンポラリ ワークスペースを設定し、ツールのダイアログ ボックスを使用して実行する前に、その設定をリセットすることを忘れるケースもよく見られます。
テンポラリ ワークスペース環境を設定すると、下に示すように、ツールは現在のワークスペースの代わりにテンポラリ ワークスペースを使用して出力データセット名を自動生成します。
![テンポラリ ワークスペースを使用して自動生成された出力の例 テンポラリ ワークスペースを使用して自動生成された出力の例](GUID-B2E38554-07CB-4BBA-B5FA-81A93079C369-web.png)
自動生成された出力データセット名
すべてのツールが自動的に出力データセット名を作成します。出力名を生成するロジックは次のとおりです。
- テンポラリ ワークスペース環境が設定されている場合、自動生成された出力パスはテンポラリ ワークスペースになります。
- テンポラリ ワークスペース環境が設定されていない場合、現在のワークスペース環境が調べられます。現在のワークスペースが設定されている場合、自動生成された出力パスは現在のワークスペースになります。
- テンポラリ ワークスペースも現在のワークスペースも設定されていない場合、自動生成された出力パスはいずれかの入力のワークスペースになります。この場合、一定の制限が適用されます。たとえば、ワークスペースがカバレッジ ワークスペースであり、出力が新しいフィーチャクラスである場合、出力はカバレッジ ワークスペースの上のディレクトリに保存されるシェープファイルになります。この他にも制限があり、たとえば、書き込みアクセスの制限があります。状況に応じて、出力がシステムの temp ディレクトリに書き込まれることがあります。
- 出力データセットとしてベース名を入力すると、テンポラリ ワークスペースが設定されているかどうかに関係なく、現在のワークスペースを使用して出力パスが作成されます。