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 オブジェクトを削除しても、レイヤーが参照しているテンポラリ データは削除されません。ただし、データを保存しない限り、レイヤーやオブジェクトが存在するかどうかにかかわらず、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 オブジェクトは両方とも保存済みのデータセットを参照します。

関連トピック