Raster オブジェクトの相互作用
Spatial Analyst ライセンスで利用可能。
Raster オブジェクトはラスター データセットを参照し、マップ表示で使用されている場合は、コンテンツ ウィンドウ内のラスター レイヤーに関連付けられていることもあります。 ほとんどの場合、ラスター データセット、Raster オブジェクト、およびラスター レイヤー間の関係は維持されますが、Spatial Analyst マップ代数演算を生産的に使用するには、これらの関係を理解しておく必要があります。
Raster オブジェクトの作成には、次の方法があります。
マップ代数演算式の出力は
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 セッションの終了時 (そのオブジェクトが範囲外になったとき、またはスクリプトが完了したとき) に削除されます。ただし、データが保存されている場合は例外です。 ラスターを保存する際、レイヤーとオブジェクトには、更新後のラスター プロパティ (name、path、catalogPath およびデータセットの isTemporary ステータスなど) が反映されます。 次の方法でテンポラリ データセットを保存できます。
関連付けられている
Rasterオブジェクトを使用してテンポラリー ラスター データセットを保存するには、Rasterオブジェクトのsaveメソッドを使用します。マップ レイヤーに関連付けられているテンポラリー ラスター データセットを永続的に維持するには、そのマップ プロジェクトを保存します。 マップ プロジェクトを保存すると、ラスター データセットがディスク上の現在の場所に保存され、自動的に生成された名前で永続的に維持されます。
Raster オブジェクトの再利用
オブジェクト名は一意でなければなりません。 オブジェクト名を再使用すると、元のオブジェクトが上書きされます。 次の例では、最初に、傾斜角 式の結果が outRas に出力され、それが次に 傾斜方向 式の出力先として再使用されているので、この時点で出力内容が上書きされます。
outRas = Slope("inRas1")
outRas = Aspect("inRas2")
レイヤーは、Raster オブジェクトと同じ名前でコンテンツに追加されます。 Raster オブジェクト名を再使用すると、複数のレイヤーが同じ名前でコンテンツ ウィンドウに追加されます。 前の例では、outRas が 2 回追加されます。 最初は、傾斜角 式を実行したときです。 この最初の outRas レイヤーは 傾斜角 の結果を参照し、傾斜方向 式が実行されるまで Python ウィンドウで使用できます。 傾斜方向 式を実行すると、2 番目の outRas レイヤーが追加されます。この時点でオブジェクトが上書きされ、傾斜方向 式によって生成されたデータセットとレイヤーを参照するようになります。
ヒント:
データセットを参照する Raster オブジェクトが上書きされた場合、レイヤーまたはデータセット名を使用して、そのラスター データセットを Raster オブジェクトとしてリキャストできます。
ラスター オブジェクトの削除
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 オブジェクトは両方とも保存済みのデータセットを参照します。