Spatial Analyst のライセンスで利用可能。
Raster オブジェクトはラスター データセットを参照し、マップ表示で使用されている場合は、[コンテンツ] ウィンドウ内のラスター レイヤーに関連付けられていることもあります。ほとんどの場合、ラスター データセット、Raster オブジェクト、およびラスター レイヤー間の関係は維持されますが、Spatial Analyst マップ代数演算を生産的に使用するには、これらの関係を理解しておく必要があります。
Raster オブジェクトの作成方法には、次の 2 通りの方法があります。
- マップ代数演算式の出力は Raster オブジェクトです。Raster オブジェクトの最も重要な特徴の 1 つは、マップ代数演算式から一次出力として作成されたとき、テンポラリ ラスターを参照することです。
>>> outRas = Slope("elevation") >>> print outRas.isTemporary True
- ラスター データセットを Raster オブジェクトとしてキャストできます。永続的なラスター データセットを Raster オブジェクトとしてキャストすると、そのデータセットが永続的に維持されます。
>>> outRas = Raster("C:/Data/elevation") >>> print outRas.isTemporary False
状況によっては、Raster オブジェクトがラスター レイヤーに関連付けられる場合があります。Python ウィンドウで [ジオプロセシング処理結果をマップに追加] ジオプロセシング オプションをオンにすると、マップ代数演算式の結果が Raster オブジェクトと同じ名前で [コンテンツ] ウィンドウに追加されます。データセットをラスターとしてキャストした場合は、[コンテンツ] ウィンドウにレイヤーが追加されません。
テンポラリ ラスターの保存
Raster オブジェクトに関連付けられているデータがテンポラリの場合、ArcGIS セッションの終了時 (そのオブジェクトが範囲外になったとき、またはスクリプトが完了したとき) に削除されます。ただし、データが保存されている場合は例外です。ラスターを保存する際、レイヤーとオブジェクトには、更新後のラスター プロパティ (name、path、catalogPath、データセットの isTemporary ステータスなど) が反映されます。テンポラリ データセットを保存するにはいくつかの方法があります。
- 関連付けられている Raster オブジェクトを使用してテンポラリ ラスター データセットを保存するには、Raster オブジェクトの save メソッドを使用します。
- マップ レイヤーに関連付けられているテンポラリ ラスター データセットを永続的に維持するには、そのマップ ドキュメントを保存します。マップ ドキュメントを保存すると、ラスター データセットがディスク上の現在の場所に保存され、自動的に生成された名前で永続的に維持されます。
- マップ レイヤーに関連付けられているテンポラリ データセットを保存するには、そのレイヤーを右クリックして [データ] > [データとして保存] の順に選択し、出力場所と名前を指定します。
Raster オブジェクトの再使用
オブジェクト名は一意でなければなりません。オブジェクト名を再使用すると、元のオブジェクトが上書きされます。次の例では、最初に、Slope 式の結果が outRas に出力されます。次に、Aspect 式の出力先として outRas が再使用されているので、この時点で出力内容が上書きされます。
outRas = Slope("inRas1")
outRas = Aspect("inRas2")
レイヤーは、Raster オブジェクトと同じ名前で [コンテンツ] ウィンドウに追加されます。Raster オブジェクト名を再使用すると、複数のレイヤーが同じ名前で [コンテンツ] ウィンドウに追加されます。 前の例では、outRas が 2 回追加されます。最初は、Slope 式を実行したときです。この最初の outRas レイヤーは Slope の結果を参照し、Aspect 式が実行されるまで Python ウィンドウで使用できます。Aspect 式を実行すると、2 番目の outRas レイヤーが追加されます。この時点でオブジェクトが上書きされ、Aspect 式によって生成されたデータセットとレイヤーを参照するようになります。
Raster オブジェクトの削除
Raster オブジェクトを削除した場合、関連付けられているデータセットにどのような影響を与えるかはデータの状態によって異なります。データがすでに保存されている場合、Raster オブジェクトを削除しても、関連付けられているデータセットやレイヤーは何も影響を受けません。データセットがテンポラリの場合、Raster オブジェクトを削除したときの影響は、そのラスター データセットを参照するレイヤーが存在するかどうかによって異なります。テンポラリ データセットに関連付けられているレイヤーが存在しない場合、オブジェクトを削除すると、そのデータセットも削除されます。テンポラリ データセットに関連付けられているレイヤーが存在する場合、オブジェクトを削除しても、テンポラリ データは維持されます。
outRas という名前の Raster オブジェクトを削除する方法の例を次に示します。
outRas = Slope("C:/Data/elevation")
del outRas
新しい Raster オブジェクトへの Raster オブジェクトの割り当て
Raster オブジェクトを新しい Raster へ割り当てた場合、関連するデータセットやレイヤーはコピーされません。Raster オブジェクトを新しい Raster オブジェクトへ割り当てると、元のオブジェクトを参照するもう 1 つのオブジェクトが作成されます。次の例では、outRas1 と outRas2 の両方が同じラスター データセットを参照しています。
outRas1 = Slope("elevation")
# Assigns Raster object to a new Raster object and save the raster dataset
outRas2 = outRas1
outRas2.save("C:/output/outslope")
この例では、outRas1 と outRas2 の両方が同じデータセットを参照しています。したがって、outRas2 を保存すると、保存したデータセット outslope の永続状態、新しい場所、および新しい名前が両方のオブジェクトに反映されます。[コンテンツ] ウィンドウ内にレイヤーとして outRas1 が追加されており、レイヤー プロパティを使用するか、マップ ドキュメントを保存して、このデータを永続的に維持する場合、outRas1 オブジェクトと outRas2 オブジェクトは両方とも保存済みのデータセットを参照します。