コスト距離ツールの詳細

Spatial Analyst のライセンスで利用可能。

ユークリッド距離が直線距離 (位置間の距離) として直線であるのに対して、コスト距離は地表上の移動者の移動を探索します。一般的に、コスト距離ツールは、移動元と移動先の最小コスト パスまたはコリドーを作成するために使用されます。

コスト距離解析によって解析される問題の例

  • 建設予定の学校への新しい道路を建設するためにコストが一番低いルートを特定します。
  • ボブキャットの最適な生息地域を野生のコリドーで繋ぎ、種が地域間を移動できるようにします。
  • 油田を精製所と接続する新しいパイプラインを特定します。
  • 遠方の地域で怪我をしたハイカーに最短で到達する道を決定します。
  • 道路網のない地表上で、戦車を遠方の目的地に移動します。

コスト解析の一般的な公式

セル間を移動するコストは、以下の影響を受けます。

  1. サーフェスの特性 (コスト サーフェス)。
  2. 移動者の特性。これには、徒歩での移動や四輪バギーの使用などの移動モードが含まれる場合があります。
  3. 上り坂や下り坂の移動など、セル間を移動するときの移動特性。

一般的なコスト距離の公式は次のとおりです。

Cost = Cost of travel  *  Characteristics  *  Movement characteristics       over surface       of the mover        on the surface

コスト距離ツールは、この後で説明するように、コスト サーフェスを使用してサーフェスの特性を組み込みます。距離ツールで移動者の特性を制御する方法の詳細については、「ソースの特性がコスト距離解析に与える影響」をご参照ください。[パスの距離 (Path Distance)] ツールを使用すると、サーフェス ラスターと水平方向ファクターおよび垂直方向ファクターを使用して、セル間の移動特性を定義できます。

コスト距離 (Cost Distance) とコスト接続性 (Cost Connectivity)

[コスト接続性 (Cost Connectivity)] ツールは、一連の入力リージョン間のパスの最適なネットワークを作成するために設計されています。[コスト距離 (Cost Distance)] ツールと [コスト パス (Cost Path)] ツールは、特定された移動元と移動先間のパスを作成するために設計されています。ただし、この 2 つのツールは、リージョンを移動元として分離し、それを移動先として特定された他のリージョンと接続することを繰り返して、パスのネットワークを作成するために使用される場合があります。このプロセスはリージョンごとに繰り返され、結果の最小コスト パスが結合されます。

この反復手法の制限は、以下のとおりです。

  • すべてのリージョンをすべてのリージョンと接続すると、特にリージョンの数が多い場合に、実行できない数のパスが作成されてしまう可能性があります。また、結果のネットワークは、接続性に対して飛び石の手法を無視します。つまり、遠方のリージョンに到達するには、現在地と遠方のリージョン間にある複数のリージョンを接続する一連のパスを使用できます。
  • パスの組み合わせの数を減らすには、多くの場合、最も近い 2 つのリージョンが接続されます。移動元と移動先の特定には、ユークリッド距離が使用されます。ただし、2 つのリージョンが近くても、山や河川などで移動コストがかかる場合があります。そのため、[コスト接続性 (Cost Connectivity)] でのコストの近接性に基づいてリージョンを接続した方が有効です。

    接続を決定するときのユークリッド距離とコスト距離

    リージョン A と B は、ユークリッド距離では近いですが、間に山があるため、コスト距離は遠くなります。

  • 多くの場合、さまざまなリージョンからの複数のパスは、共通のリージョンに対して 1 つの同じパスを共有します (パスの一部が同じ共通の最小コスト パスになります)。これらのラスター パスの共通部分を管理および解析することは困難です。そのため、それ以降の解析を実行する場合、各パスを別々のエントリとして扱う方が適切です。
  • [コスト パス (Cost Path)] で作成されたパスは、ポリゴン リージョンのエッジおよびリニア リージョンのライン上の位置にのみ到達します。その結果、個々のパスは接続しないため、ネットワークは作成されません。

コスト距離の計算

すべてのコスト距離ツールが、本質的に同じアルゴリズムを使用して出力を計算します。本質的な違いは、各ツールのプライマリ出力が異なることです。

[コスト距離] ツールは、最も近いソース セルまでの累積コストが各セルに割り当てられた出力ラスターを作成します。このアルゴリズムは、グラフ理論で使用されるノードとリンクのセル表現を活用します。ノードとリンク表現では、各セルの中心がノードと見なされ、各ノードが複数のリンクにより隣接ノードと接続されます。

各リンクには、インピーダンスが関連付けられます。インピーダンスは、リンクの各端点でセルに関連付けられた (コスト サーフェスから) コスト、およびセルの移動方向から得られます。

各セルに割り当てられるコストは、そのセルを移動するための単位距離あたりのコストを表します。最終的なセルごとの値は、セル サイズをコスト値で乗算することで算出されます。たとえば、コスト ラスターのセル サイズが 30 であり、特定のセルのコスト値が 10 の場合、そのセルの最終的なコストは 300 単位になります。

ノード移動コスト

1 つのノードから別のノードへの移動コストは、ノードの空間的な向きによって決まります。セルがどのように連続しているかも移動コストに影響します。

隣接ノード コスト

あるセルから隣接する 4 つのセルの 1 つに移動する場合、隣接ノードへのリンクの移動コストは、セル 1 のコストにセル 2 のコストを加算し、2 で除算した値です。

 a1 = (cost1 + cost2) / 2
  • 各要素は次のとおりです。

    cost1 - セル 1 のコスト

    cost2 - セル 2 のコスト

    a1 - セル 1 とセル 2 を結ぶリンクの合計コスト

隣接セルのコストの計算

累積垂直コスト

累積コストは、以下の式で得られます。

 accum_cost = a1 + (cost2 + cost3) / 2
  • 各要素は次のとおりです。

    cost2 - セル 2 のコスト

    cost3 - セル 3 のコスト

    a2 - セル 2 からセル 3 への移動コスト

    accum_cost - セル 1 からセル 3 への累積移動コスト

隣接していないセルのコストの計算

対角ノード コスト

対角方向の移動の場合は、リンクの移動コストは、セル 1 のコストとセル 2 のコストの合計を 1.414214 (√2) で乗算し、2 で除算した値になります。

 a1 = 1.414214 (cost3 + cost2) / 2

対角セルのコストの計算

対角移動の累積コストを求めるときには、以下の式を使用する必要があります。

 accum_cost = a1 + 1.414214(cost2 + cost3) / 2

累積コスト セルのリスト

グラフ理論を使用して累積コスト距離ラスターを作成することは、最小のコスト セルを特定して出力リストに追加する試行と見なすことができます。これは、ソース セルから開始される反復プロセスです。その目的は、各セルを出力コスト距離ラスターに即座に割り当てることです。

入力ソースとコスト ラスター

最初の反復では、ソース セルが識別され、それらに 0 が割り当てられます。これは、そのセル自体に戻るための累積コストが 0 だからです。次に、ソース セルの近傍がすべてアクティブになり、ソース セルのノードと隣接セルのノードを結ぶリンクに、上記の累積コストの式によるコストが割り当てられます。これらの各近傍セルはソースに到達できるので、選択したり、出力累積コスト ラスターに割り当てたりできます。セルが出力ラスターに割り当てられるためには、ソースへの次に最小コスト パスが必要です。

累積コストの値は、最小から最大の順でリストに並べられます。

並べ替えられた累積コスト値のリスト

アクティブな累積コスト セルのリストから最小コスト セルが選択され、そのセル位置の値が出力コスト距離ラスターに割り当てられます。アクティブなセルのリストが、選択したセルの近傍範囲を含むように拡大されます。この理由は、それらのセルはソースに到達する経路があるからです。ソースに到達できるセルのみが、リスト内でアクティブにできます。累積コストの式を使用して、それらのセルへの移動コストが計算されます。

累積コスト値のリストの処理

ここでも、リストで最小コストを持つアクティブなセルが選択され、近傍が展開されます。新しいコストが計算され、新しいコスト セルがアクティブなセルに追加されます。

ソース セルが連続している必要はありません。不連続のソースはすべて、アクティブなセルのリストに同様に寄与します。累積コストが最小のセルのみが、割り当てられるソースには関係なく、選択されて展開されます。

累積コスト値のリストの処理

この割り当てプロセスが続行されます。さらに、出力ラスターに新しいセル位置を追加することにより新しい低コストの経路が作成される場合は、アクティブなリストのセルが更新されます。

累積コスト値のリストの処理

この更新により、出力ラスターにさらに多くのセルが割り当てられるので、アクティブなリストのセルについて新しい経路が発生することがあります。アクティブな累積コストのリストで最小コストを持つセルを出力ラスターに割り当てるときに、累積コストがすべて計算されます。隣接セルが別のセルによりアクティブなリストに追加されている場合でも、新規に割り当てられた出力セルの隣接セルについてもこれらのコストが計算されます。アクティブなリスト上で、場所に対する新しい累積コストが、セルの現在の累積コストよりも大きい場合、その値は無視されます。新しい累積コストの方が小さい場合は、その場所の古い累積コストが、アクティブなリストで新しい値に置き換えられます。低コストで一層望ましいソースへの経路にアクセスできるようになったそのセルは、アクティブな選択リスト内で上位に移動されます。

以下の例では、行 3、列 1 のセル位置を、ラスター上部のソースに到達するアクティブなリストに入れたときの累積コストは 11.0 です (白の四角で囲んだ値)。ただし、値の小さいソースがこの位置まで展開するので、そのセルはソースに到達する、より低コストの経路にアクセスできます。累積コストが低くなることにより、アクティブなリストでその位置の値が更新され、出力に割り当てられます。

累積コスト値のリストの処理

入力ソース ラスターにゾーン、または不連続のソース セルのセットが複数ある場合は、展開プロセスが継続され、ソースがどれかには関係なく、アクティブなリストから最小コストのセルが割り当てられます。

累積コスト値のリストの処理

複数の展開の先端が出会ったときは、すべての対象のセルにコスト値が割り当てられるまで、最小コストを持つソースへの経路が続行されます。

累積コスト値のリストの処理

複数の展開パターンが出会うときに、ある展開パターンのセルが、別のセットまたは展開パターンでソース セルにさらに低いコストで到達できることがあります。この場合、新しいソースのセルに新しいコスト値が割り当てられます。この動作は前述の行 3、列 1 のセルで示されていますが、以下の例でも行 3、列 6 のセルで示されています。

累積コスト値のリストの処理
累積コスト値のリストの処理

アクティブなリストからセルがすべて選択された結果、累積コスト、または加重距離ラスターが得られます。使用した手順により、セルごとの最小累積コストが確実に得られます。ラスターのエッジに到達するまで、ウィンドウの境界が検出されるまで、または最大距離に到達するまで、すべてのセルについてこのプロセスが継続されます。

NoData の値を持つセルを通過することはできません。NoData セルのグループの裏側にあるセルの最小累積コストは、それらの位置の周囲を移動するコストによって決定されます。入力コスト ラスターのあるセル位置に NoData が割り当てられている場合、コスト距離の出力ラスターのその位置には、NoData が割り当てられます。

コスト距離の出力値
コスト距離の出力値

関連トピック