Spatial Analyst のライセンスで利用可能。
マップ代数演算式では、Raster オブジェクトは入力として使用できる一次出力です。演算子を使用するマップ代数演算を実行する場合、入力は Raster オブジェクトまたは定数である必要があります。マップ代数演算式のラスター出力は常に一時的ですが、Raster オブジェクトの save メソッドを呼び出すことで保存できます。Raster オブジェクトをクエリすると、参照されるデータセット プロパティに簡単にアクセスできます。
Raster オブジェクトの作成
Raster オブジェクトを作成するには、ラスター データセットをキャストするか、ArcGIS Spatial Analystのツールから出力します。ラスターを作成すると、ラスター データセットの多くのプロパティを簡単にクエリできます。
- Raster オブジェクトを作成するには、次の例のように、レイヤー名またはパスとデータセット名を指定します。上のステートメントでは、elevation ラスター データセットのプロパティが結果の Raster オブジェクト (rasObject) で使用できるようになっています。Raster オブジェクトのプロパティのリストについては、「Raster オブジェクトのプロパティのリスト」をご参照ください。
rasObject = Raster("C:/Data/elevation")
- Raster オブジェクトは、Spatial Analyst ツールで左側の出力として作成されます。
# rasObject is a Raster object pointing to a temporary # raster dataset rasObject = Slope("C:/Data/elevation")
ラスターの save メソッド
Raster オブジェクトに関連付けられているラスターは、save メソッドを使用することで保存できます。
Spatial Analyst ツールは、一時出力を作成します。これらの出力は、Raster オブジェクトの save メソッドを使用して保存できます。次の例では、[傾斜角 (Slope)] ツールの一時出力を、指定した出力フォルダーに保存しています。
outraster = Slope("C:/Data/elevation")
outraster.save("C:/output/sloperaster")
データを保存する場所は、save メソッドでの入力内容と、ワークスペース環境の設定内容によって変わります。
- データセット名とともに絶対パスを指定した場合、この場所は永続データが保存される場所になります。
- データセット名だけを指定した場合、保存されるデータの場所は、ジオプロセシング ワークスペース環境によって決定されます。
- テンポラリ ワークスペースまたは現在のワークスペースが設定されている場合、保存されるデータは、設定されているワークスペースの場所に保存されます。
- 現在のワークスペースとテンポラリ ワークスペースの両方が設定されている場合、保存されるデータは、現在のワークスペースに保存されます。
- ワークスペースが設定されていない場合、エラーが返されます。
- データをデフォルト名で現在の場所に永続的に保存したい場合は、次の例のように、名前を指定しないで save メソッドを呼び出します。
outraster.save()
- save メソッドは、Spatial Analyst がサポートするすべてのラスター形式をサポートしています。次の例では、ラスターの save メソッドを使用して、データをファイル ジオデータベースのラスターに IMAGINE 形式で保存しています。
outraster.save("C:/output/file_gdb.gdb/sloperaster") outraster.save("C:/output/sloperaster.img")
ラスターのプロパティの操作
ラスターを Raster オブジェクトとしてキャストすると、データセットのプロパティを簡単にクエリできます。すべての Raster オブジェクトのプロパティは読み取り専用です。Raster のプロパティをクエリすると、文字列、数値、またはオブジェクトが返されます。ラスターのプロパティは、ツール パラメーターへの入力や、(次のように) 環境設定の設定など、さまざまな用途に使用できます。
from arcpy import env
from arcpy.sa import *
outraster = Raster("C:/Data/studyarea")
myextent = outraster.extent
# Modify myextent as necessary for your workflow and use it to set the extent environment
env.extent = myextent