パスの距離(Path Distance) (Spatial Analyst)

ライセンス レベル:BasicStandardAdvanced

サマリ

サーフェス距離、水平コスト係数、垂直コスト係数を考慮に入れて、最も近いソースまでの最小累積コスト距離をセルごとに計算します。

パスの距離ツールの仕組みの詳細

使用法

構文

PathDistance (in_source_data, {in_cost_raster}, {in_surface_raster}, {in_horizontal_raster}, {horizontal_factor}, {in_vertical_raster}, {vertical_factor}, {maximum_distance}, {out_backlink_raster})
パラメータ説明データ タイプ
in_source_data

入力ソース位置。

これは、あらゆる出力セル位置について最小累積コスト距離の計算対象となるセルまたは位置を特定するラスタ データセットまたはフィーチャ データセットです。

ラスタの場合、入力タイプは整数または浮動小数点数です。

Raster Layer | Feature Layer
in_cost_raster
(オプション)

各セル内を平面的に通過するときにかかるインピーダンスまたはコストを定義するラスタ。

各セル位置の値は、そのセル上を通過するための単位距離あたりのコストを表します。セル内を通過する総コストを取得するために、各セル位置の値にセル解像度を乗算して、対角移動についても補正します。

コスト ラスタとして、整数値または浮動小数点値を使用できますが、負の値や 0 は使用できません(負またはゼロのコストは指定できません)。

Raster Layer
in_surface_raster
(オプション)

各セル位置の標高値を定義するラスタ。

この値は、セル間を通過するときにたどる実際のサーフェス距離を計算するときに使用されます。

Raster Layer
in_horizontal_raster
(オプション)

各セルの水平方向を定義するラスタ。

ラスタ上の値は 0 〜 360 の範囲の整数でなくてはいけません。0 度は北または画面の上方向を示し、値は時計回りに増加します。平らなエリアには -1 という値を指定します。各位置の値は {horizontal_factor} と組み合わせて、あるセルから隣接セルに移動するときに発生する水平コストを決定するときに使用されます。

Raster Layer
horizontal_factor
(オプション)

Horizontal Factor オブジェクトは、水平コスト ファクタと水平相対移動角度(HRMA)の間の関係を定義します。

定義された水平方向ファクタ グラフを特定する修飾子付きのファクタがいくつかあって選択できます。さらに、テーブルを使用してカスタム グラフを作成することもできます。グラフは、隣接セルに移動する総コストを計算するときに使用する水平方向ファクタを特定するために使用されます。

以下の説明では、2 つ略語を使用しています。HF は水平方向ファクタを表し、あるセルから次のセルに移動するときに生じる水平移動の難易度を定義します。HRMA は水平相対移動角度を表し、セルからの水平方向と移動方向がなす角度を示します。

オブジェクトには以下の種類があります。

これらの定義とパラメータは次のとおりです。

  • HfBinary({zeroFactor},{cutAngle})

    HRMA がカット アングルより小さい場合、HF はゼロ ファクタに関連付けられた値に設定され、そうでない場合、HF は無限大に設定されます。

  • HfForward({zeroFactor},{sideValue})

    前進運動だけが許されます。HRMA は 0 以上 90 未満(0 <= HRMA < 90)である必要があります。HRMA が 0 度より大きく 45 度未満である場合、セルの HF はゼロ ファクタに関連付けられている値に設定されます。HRMA が 45 度以上である場合、サイド値修飾子の値が使用されます。HRMA が 90 度以上であると、その HF は無限大に設定されます。

  • HfLinear({zeroFactor},{cutAngle},{slope})

    HF は HRMA の一次関数です。

  • HfInverseLinear({zeroFactor},{cutAngle},{slope})

    HF は HRMA の一次逆関数です。

  • HfTable(inTable)

    テーブル ファイルを使用して、HF の決定に使用される水平方向ファクタ グラフを定義します。

水平方向ファクタ キーワードの修飾子は次のとおりです。

  • {zeroFactor} - HRMA が 0 のときに使用する水平方向ファクタを指定します。このファクタは、任意の水平方向ファクタ関数の Y 軸切片の位置を決めます。
  • {cutAngle} - HF を無限大に設定する基準となる HRMA 角度を定義します。
  • {slope} - LINEAR および INVERSE_LINEAR 水平方向ファクタ キーワードで使用される直線の傾斜角を指定します。傾斜角は、水平方向の長さを分母、垂直方向の長さを分子として指定されます(たとえば、45% の傾斜角は 1/45 であり、0.02222 として入力されます)。
  • {sideValue} - FORWARD 水平方向ファクタ キーワードが指定され、HRMA が 45 度以上、90 度未満のときの HF 値を指定します。
  • inTable - HF を定義するテーブルの名前を指定します。

Horizontal factor
in_vertical_raster
(オプション)

各セル位置の Z 値を定義するラスタ。

この値は、あるセルから別のセルに移動するときに生じる垂直方向ファクタを特定する傾斜角を計算するために使用されます。

Raster Layer
vertical_factor
(オプション)

Vertical factor オブジェクトは、垂直コスト ファクタと垂直相対移動角度(VRMA)の間の関係を定義します。

定義された垂直方向ファクタ グラフを特定する修飾子付きのファクタがいくつかあって選択できます。さらに、テーブルを使用してカスタム グラフを作成することもできます。グラフは、隣接セルに移動する総コストを計算するときに使用する垂直方向ファクタを特定するために使用されます。

以下の説明では、2 つ略語を使用しています。VF は垂直方向ファクタを表し、あるセルから次のセルに移動するときに生じる垂直移動の困難度を定義します。VRMA は垂直相対移動角度を表し、FROM セル(処理中のセル)と TO セルの間の傾斜角度を示します。

オブジェクトには以下の種類があります。

これらの定義とパラメータは次のとおりです。

  • VfBinary({zeroFactor},{lowCutAngle},{highCutAngle})

    VRMA が最小カット アングルより大きく最大カット アングルより小さい場合、VF はゼロ ファクタに関連付けられた値に設定され、そうでない場合、VF は無限大に設定されます。

  • VfLinear({zeroFactor},{lowCutAngle},{highCutAngle},{slope})

    VF は VRMA の一次関数です。

  • VfInverseLinear({zeroFactor},{lowCutAngle},{highCutAngle},{slope})

    VF は VRMA の一次逆関数です。

  • VfSymLinear({zeroFactor},{lowCutAngle},{highCutAngle},{slope})

    VF がそれぞれ VRMA の負の側と正の側で VRMA の一次関数であり、この 2 つの一次関数が VF(Y)軸に対して対称的であることを指定します。

  • VfSymInverseLinear({zeroFactor},{lowCutAngle},{highCutAngle},{slope})

    VF がそれぞれ VRMA の負の側と正の側で VRMA の一次逆関数であり、この 2 つの一次逆関数が VF(Y)軸に対して対称的であることを指定します。

  • VfCos({lowCutAngle},{highCutAngle},{cosPower})

    VF は VRMA のコサインベースの関数です。

  • VfSec({lowCutAngle},{highCutAngle},{secPower})

    VF は VRMA の正割ベースの関数です。

  • VfCosSec({lowCutAngle},{highCutAngle},{cosPower},{secPower})

    VRMA が負の場合、VF は VRMA のコサインベースの関数で、VRMA が非負の場合、VF は VRMA の正割ベースの関数です。

  • VfSecCos({lowCutAngle},{highCutAngle},{secPower},{cos_power})

    VRMA が負の場合、VF は VRMA の正割ベースの関数で、VRMA が非負の場合、VF は VRMA のコサインベースの関数です。

  • VfTable(inTable)

    テーブル ファイルを使用して、VF の決定に使用される垂直方向ファクタ グラフを定義します。

垂直方向ファクタ キーワードの修飾子は次のとおりです。

  • {zeroFactor} - VRMA がゼロのときに使用する垂直方向ファクタを指定します。このファクタは、指定された関数の Y 軸切片の位置を決めます。定義上、ゼロ ファクタは垂直三角関数(Cos、Sec、Cos_Sec、Sec_Cos)には適用されません。Y 軸切片はこれらの関数によって定義されます。
  • {lowCutAngle} - VRMA 角度がこの角度を下回ると VF は無限大に設定されます。
  • {highCutAngle} - VRMA 角度がこの角度を超えると VF は無限大に設定されます。
  • {slope} - VfLinear および VfInverseLinear パラメータで使用される直線の傾斜角を指定します。傾斜角は、水平方向の長さを分母、垂直方向の長さを分子として指定されます(たとえば、45% の傾斜角は 1/45 であり、0.02222 として入力されます)。
  • inTable - VF を定義するテーブルの名前を指定します。
Vertical factor
maximum_distance
(オプション)

累積コスト値が超えることのできない閾値を定義します。

累積コスト距離がこの値を超える場合、セル位置の出力値は NoData になります。最大距離は、累積コスト距離を計算する範囲を定義します。

デフォルトは出力ラスタのエッジまでです。

Double
out_backlink_raster
(オプション)

出力コスト バック リンク ラスタ。

バック リンク ラスタは 0 〜 8 の値を含みます。この値は方向を定義します。つまり、サーフェス距離、水平サーフェス係数、垂直サーフェス係数を考慮に入れて、セルから最小コスト ソースまでの最小累積コスト パスに沿った次の隣接セルを特定します。

パスが右の隣接セルに進む場合、その隣接セルには値 1 が、右下のセルには値 2 が割り当てられ、これが時計回りに続きます。値 0 はソース セル用とされています。

バック リンク位置
Raster Dataset

戻り値

名前説明データ タイプ
out_distance_raster

出力パス距離ラスタ。

出力パス距離ラスタは、サーフェス距離、水平サーフェス係数、垂直サーフェス係数を考慮に入れて、コスト サーフェス上の特定されたソース位置までの最小累積コスト距離をセルごとに特定します。

ソースは、セル、セル セット、または 1 つ以上のフィーチャ位置です。

出力ラスタのタイプは浮動小数点数です。

Raster

コードのサンプル

PathDistance(パスの距離)の例 1(Python ウィンドウ)

次の Python ウィンドウ スクリプトで、PathDistance(パスの距離)ツールの使用方法を示します。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outPathDist = PathDistance("observers.shp", "costraster", "elevation", "backlink2",
                            HfForward(0.5, 1.0), "focalcost.tif", VfBinary(1.0, -30, 30),  
                            50000, "c:/sapyexamples/output/backlinkpath")
outPathDist.save("c:/sapyexamples/output/pathdistout")
PathDistance(パスの距離)の例 2(スタンドアロン スクリプト)

サーフェス距離、水平コスト係数、垂直コスト係数を考慮に入れて、最も近いソースまでの最小累積コスト距離をセルごとに計算します。

# Name: PathDistance_Ex_02.py
# Description: Calculates, for each cell, the least accumulative 
#              cost distance to the nearest source, while accounting 
#              for surface distance and horizontal and vertical 
#              cost factors.  
# 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
inSource = "observers.shp"
inCostRast = "costraster"
inElev = "elevation"

# The horizontal factor
inHoriz = "backlink2"
# Create the HfForward Object
zeroFactor = 0.5
sideValue = 1.0
myHorizFactor = HfForward(zeroFactor, sideValue)

#The vertical factor
inVertical = "focalcost.tif"
# Create the VfBinary Object
zeroFactor = 1.0
lowCutAngle = -30
highCutAngle = 30
myVerticalFactor = VfBinary(zeroFactor, lowCutAngle, highCutAngle)

maxDist = 50000
optBacklinkOut = "c:/sapyexamples/output/pathbacklink"

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute PathDistance
outPathDist = PathDistance(inSource, inCostRast, inElev, inHoriz, 
                           myHorizFactor, inVertical, myVerticalFactor, 
                           maxDist, optBacklinkOut)

# Save the output 
outPathDist.save("c:/sapyexamples/output/pathdistout02")

環境

関連トピック

ライセンス情報

ArcGIS for Desktop Basic: 次のものが必要 Spatial Analyst
ArcGIS for Desktop Standard: 次のものが必要 Spatial Analyst
ArcGIS for Desktop Advanced: 次のものが必要 Spatial Analyst
7/28/2014