コスト距離(Cost Distance) (Spatial Analyst)
図
使用法
-
入力ソース データは、フィーチャクラスまたはラスタです。
-
入力ソース データがラスタの場合、一連のソース セルは、ソース ラスタ内にある有効な値を持つすべてのセルから構成されます。値が NoData のセルは、ソース セットには含まれません。値 0(ゼロ)は、正当なソースと見なされます。ソース ラスタは、[抽出] ツールを使用して簡単に作成できます。
-
入力ソース データがフィーチャクラスの場合、解析を実行する前に内部でソースの位置がラスタに変換されます。ラスタの解像度は [セル サイズ] 環境で制御できます。デフォルトでは、解像度が入力コスト ラスタの解像度に設定されます。
-
入力のソース データにポリゴンフィーチャ データを使用する場合は、出力セル サイズが入力の詳細よりも粗いときの処理方法に注意する必要があります。内部的なラスタ化処理では、[ポリゴン → ラスタ(Polygon to Raster)] ツールと同じデフォルトの [集約タイプ](CELL_CENTER)が使用されます。つまり、セルの中心に配置されていないデータはラスタ化されたソースの中間出力に含まれず、距離の計算では表されません。たとえば、ソースが出力のセル サイズに比べて小さい一連のポリゴン(建物のフットプリントなど)である場合は、一部のポリゴンだけが出力ラスタ セルの中心に分類され、ほとんどのポリゴンが解析で失われたように見える可能性があります。
この状況を回避するには、中間的な手順として、[ポリゴン → ラスタ(Polygon to Raster)] ツールを使用して入力フィーチャを直接ラスタ化し、[優先フィールド] を設定して、結果の出力を [距離(Distance)] ツールの入力として使用します。または、入力フィーチャから適切な量の情報を捕捉できる、十分に小さいセル サイズを選択することもできます。
-
ソース入力がフィーチャの場合、デフォルトで、最初の有効な利用可能フィールドが使用されます。有効なフィールドが存在しない場合は、ObjectID フィールド(たとえば、フィーチャ入力のタイプによって、OID または FID など)が使用されます。
-
[入力コスト ラスタ] で NoData のセル位置は、コスト サーフェス ツールでバリアの役割を果たします。入力コスト サーフェスで NoData が割り当てられたセル位置は、すべての出力ラスタ(コスト距離、アロケーション、バック リンク)で NoData になります。
-
入力ソース データとコスト ラスタの範囲が異なる場合、デフォルトの出力範囲は両者の交差部分です。範囲全体のコスト距離サーフェスを取得するには、出力の [範囲] 環境設定で [入力データのすべての領域] オプションを選択します。
-
環境設定内でマスクが設定されている場合、マスクされたすべてのセルは値が NoData として扱われます。
[ラスタ解析] ウィンドウでマスクを定義していて、マスク対象のセルがソースをマスクする場合、計算は残りのソース セルに対して実行されます。マスクされるソース セルは計算では考慮されません。このようなセル位置には、すべての出力(距離、アロケーション、バック リンク)ラスタで NoData が割り当てられます。
-
[最大距離] はコスト ラスタと同じコストの単位で指定します。
-
出力距離ラスタの場合、セルから一部ソース位置までの最小コスト距離(または最小累積コスト距離)は、セルから全ソース位置までの最小コスト距離の下限です。
-
このアルゴリズムは乗算処理なので、コスト ラスタに値ゼロを含めることができません。コスト ラスタに値ゼロが含まれており、それらの値が最小コストを表している場合は、まず [Con] ツールを実行して、値ゼロを小さい正の値(0.01 など)に変更します。その後で [コスト距離(Cost Distance)] ツールを実行してください。値ゼロのエリアが解析から除外されるエリアを表している場合は、まず [Set NULL] ツールを実行して、それらの値を NoData に変更します。その後で [コスト距離(Cost Distance)] ツールを実行してください。
構文
パラメータ | 説明 | データ タイプ | |
in_source_data |
入力ソース位置。 これは、あらゆる出力セル位置について最小累積コスト距離の計算対象となるセルまたは位置を特定するラスタ データセットまたはフィーチャ データセットです。 ラスタの場合、入力タイプは整数または浮動小数点数です。 | Raster Layer | Feature Layer | |
in_cost_raster |
各セル内を平面的に通過するときにかかるインピーダンスまたはコストを定義するラスタ。 各セル位置の値は、そのセル上を通過するための単位距離あたりのコストを表します。セル内を通過する総コストを取得するために、各セル位置の値にセル解像度を乗算して、対角移動についても補正します。 コスト ラスタとして、整数値または浮動小数点値を使用できますが、負の値や 0 は使用できません(負またはゼロのコストは指定できません)。 | Raster Layer | |
maximum_distance (オプション) |
累積コスト値が超えることのできない閾値を定義します。 累積コスト距離がこの値を超える場合、セル位置の出力値は NoData になります。最大距離は、累積コスト距離を計算する範囲を定義します。 デフォルトは出力ラスタのエッジまでです。 | Double | |
out_backlink_raster (オプション) |
出力コスト バック リンク ラスタ。 バック リンク ラスタは 0 〜 8 の値を含みます。この値は方向を定義します。つまり、セルから最小コスト ソースまでの最小累積コスト パスに沿った次の隣接セルを特定します。 パスが右の隣接セルに進む場合、その隣接セルには値 1 が、右下のセルには値 2 が割り当てられ、これが時計回りに続きます。値 0 はソース セル用とされています。 | Raster Dataset |
戻り値
名前 | 説明 | データ タイプ |
out_distance_raster |
出力コスト距離ラスタ。 コスト距離ラスタは、特定されたソース位置までのコスト サーフェス上での最小累積コスト距離を、セルごとに特定します。 ソースは、セル、セル セット、または 1 つ以上のフィーチャ位置です。 出力ラスタのタイプは浮動小数点数です。 | Raster |
コードのサンプル
次の Python ウィンドウ スクリプトで、CostDistance(コスト距離)ツールの使用方法を示します。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCostDist = CostDistance("source.shp", "elevation", 200000, "backlink")
outCostDist.save("C:/sapyexamples/output/costdist")
ポイント シェープ ファイルのソース位置から、最小累積コスト距離を計算します。
# Name: CostDistance_Ex_02.py
# Description: Calculates for each cell the least accumulative cost distance
# to the nearest source over a cost surface.
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inSourceData = "source.shp"
inCostRaster = "elevation"
maxDistance = 20000000
outBkLinkRaster = "C:/sapyexamples/output/outbklink"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute CostDistance
outCostDistance = CostDistance(inSourceData, inCostRaster, maxDistance, outBkLinkRaster)
# Save the output
outCostDistance.save("C:/sapyexamples/output/outcostdist")