Raster オブジェクトの相互作用

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

Python ウィンドウで作業している場合は、マップ代数演算式の結果が [コンテンツ] 表示に Raster オブジェクトと同じ名前で追加されます。データセットをラスターとしてキャストした場合は、[コンテンツ] ウィンドウにレイヤーが追加されません。

テンポラリ ラスターの保存

Raster オブジェクトに関連付けられているデータがテンポラリの場合、ArcGIS セッションの終了時 (そのオブジェクトが範囲外になったとき、またはスクリプトが完了したとき) に削除されます。ただし、データが保存されている場合は例外です。ラスターを保存する際、レイヤーとオブジェクトには、更新後のラスター プロパティ (namepathcatalogPath、データセットの 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 オブジェクトを削除した場合、関連付けられているデータセットにどのような影響を与えるかはデータの状態によって異なります。データがすでに保存されている場合、Raster オブジェクトを削除しても、関連付けられているデータセットやレイヤーは何も影響を受けません。データセットがテンポラリの場合、Raster オブジェクトを削除したときの影響は、そのラスター データセットを参照するレイヤーが存在するかどうかによって異なります。テンポラリ データセットに関連付けられているレイヤーが存在しない場合、オブジェクトを削除すると、そのデータセットも削除されます。テンポラリ データセットに関連付けられているレイヤーが存在する場合、オブジェクトを削除しても、テンポラリ データは維持されます。

注意:
Raster オブジェクトを削除しても、レイヤーが参照しているテンポラリ データは削除されません。ただし、データを保存しない限り、レイヤーやオブジェクトが存在するかどうかにかかわらず、ArcGIS を終了した時点ですべてのテンポラリ データが削除されます。

outRas という名前の Raster オブジェクトを削除する方法の例を次に示します。

outRas = Slope("C:/Data/elevation") 
del outRas

新しい Raster オブジェクトへの Raster オブジェクトの割り当て

Raster オブジェクトを新しい Raster へ割り当てた場合、関連するデータセットやレイヤーはコピーされません。Raster オブジェクトを新しい Raster オブジェクトへ割り当てると、元のオブジェクトを参照するもう 1 つのオブジェクトが作成されます。次の例では、outRas1outRas2 の両方が同じラスター データセットを参照しています。

outRas1 = Slope("elevation")  
# Assigns Raster object to a new Raster object and save the raster dataset
outRas2 = outRas1
outRas2.save("C:/output/outslope")

この例では、outRas1outRas2 の両方が同じデータセットを参照しています。したがって、outRas2 を保存すると、保存したデータセット outslope の永続状態、新しい場所、および新しい名前が両方のオブジェクトに反映されます。[コンテンツ] ウィンドウ内にレイヤーとして outRas1 が追加されており、レイヤー プロパティを使用するか、マップ ドキュメントを保存して、このデータを永続的に維持する場合、outRas1 オブジェクトと outRas2 オブジェクトは両方とも保存済みのデータセットを参照します。

関連トピック