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 オブジェクトは両方とも保存済みのデータセットを参照します。