流向ラスターの作成 (Flow Direction) (Spatial Analyst)

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

サマリー

各セルからその降下傾斜となる近傍セルへの流向ラスターを、D8、D-Infinity (DINF)、Multiple Flow Direction (MFD) のいずれかの方法で作成します。

流向ラスターの作成 (Flow Direction) ツールの詳細

[流向ラスターの作成 (Flow Direction)] ツールの図
Flow_Dir = FlowDirection(Elev_Ras, #, #, D8)

使用法

  • [流向ラスターの作成 (Flow Direction)] ツールは、D8、MFD (Multiple Flow Direction)、および DINF (D-Infinity) という 3 つのフロー モデリング アルゴリズムに対応しています。

  • D8 流向法は、各セルから最も急な降下傾斜となる近傍セルへの流向をモデル化します。

    D8 流向タイプを使用して実行された [流向ラスターの作成 (Flow Direction)] ツールの出力は、値の範囲が 1 ~ 255 の整数ラスターです。 中心からのそれぞれの方向の値は、次のようになります。

    流向ラスターの値

    たとえば、最も傾斜が急な下り方向が現在の処理セルの左への方向である場合、流向の値は 16 になります。

    • あるセルが 8 つの近傍セルより低い場合、そのセルには近傍セルの最低値が与えられ、フローはこのセルの方向に定義されます。 複数の近傍セルに最低値が割り当てられている場合は、対象セルにも最低値が割り当てられますが、流向は下記の 2 つの方法のいずれかで定義されます。 これは、ノイズと見なされる 1 セルのシンクの排除に使用されます。

    • セルが複数の方向で同じ Z 値の変化を持ち、そのセルが窪地 (シンク) の一部である場合、フロー方向は未定義と見なされます。 この場合には、出力流向ラスターで対象セルの値がこれらの方向の合計値になります。 たとえば、Z 値の変化が右 (流向 = 1) と下 (流向 = 4) で同じである場合、対象セルの流向は 1 + 4 = 5 になります。 未定義のフロー方向を持つセルは、[窪地の抽出 (Sink)] ツールを使用して、窪地 (シンク) としてフラグを付けることができます。

    • セルが複数の方向で同じ Z 値の変化を持ち、窪地 (シンク) の一部でない場合、フロー方向は可能性が最も高い方向を定義するルックアップ テーブルを使用して割り当てられます。 「Greenlee (1987) 」をご参照ください。

    • D8 出力降下率ラスターは、Z 値の差をセルの中心間のパス長で除算したもので、パーセンテージで表されます。 隣接セルの場合、これは、セル間の傾斜角 (パーセント) に似ています。 平らなエリアでは、距離は標高が低い最も近いセルまでの距離になります。 結果は、各セルからの降下傾斜が最も急激なパスのパーセント高低差のマップになります。

  • MFD (Multiple Flow Direction) アルゴリズムは、Qin 等 (2007) によって示されたもので、1 つのセルから降下傾斜のすべての近傍セルに流量を分割します。 フローパーティション指数は、現地のテレインの状態に基づく適応アプローチによって作成され、降下傾斜となるすべての近傍セルに流出するフローの一部を特定するために使用されます。

    注意:

    MFD 流向タイプでは、フォルダー ワークスペース内に flowdir1.crf などの Cloud Raster Format (CRF) で出力流向ラスターを作成することだけができます。

    MFD 流向出力は、マップに追加されると、D8 フロー方向だけを表示します。 MFD 流向では、各セルに複数の値が関連付けられている可能性があるため (それぞれの値は降下傾斜の各近傍セルへの流量の割合を示す)、視覚化するのは簡単ではありません。 ただし、MFD 流向出力ラスターは、MFD 流向を使用して各セルから降下傾斜のすべての近傍セルへの流量を配分および累積する [累積流量ラスターの作成 (Flow Accumulation)] ツールで入力データとして認識されます。

  • DINF (D-Infinity) 法は、Tarboton (1997) によって示されたもので、対象セルを中心とした 3 x 3 セル ウィンドウ内に形成された 8 つの三角形面で最も傾斜が急な下り勾配として流向を特定します。 流向出力は、0 (真東) から 360 (真東) まで反時計回りの角度として表される浮動小数点のラスターです。

  • [エッジにあるセルはすべて外側に流出] パラメーターをデフォルトのオフ (Python では force_flow = "NORMAL") の設定にした場合、サーフェス ラスターのエッジにあるセルは、Z 値の降下率が最も高く、セルの内部に向かって流れます。 降下がゼロ以下の場合、セルはサーフェス ラスターの外に流れ出ます。

  • このツールは、並列処理をサポートしています。 お使いのコンピューターに、複数のプロセッサや、複数のコアを持つプロセッサが搭載されている場合は、特に対象となるデータセットが大きいときにパフォーマンスが向上します。 「Spatial Analyst による並列処理」ヘルプ トピックには、この機能と設定方法の詳細が記載されています。

    並列処理を使用する場合、処理中のデータ チャンクを処理するために一時データが書き込まれます。 デフォルトの一時フォルダーの場所は、ローカルの C: ドライブにあります。 このフォルダーの場所は、TempFolders という名前のシステム環境変数を設定し、使用するフォルダーへのパスを指定することで変更できます (例: E:\RasterCache)。 コンピューターに対して管理者権限がある場合は、レジストリ キーも使用できます (例: [HKEY_CURRENT_USER\SOFTWARE\ESRI\ArcGISPro\Raster])。

    デフォルトでは、このツールは使用可能なコアの 50% を使用します。 入力データのサイズが 5,000 セル x 5,000 セルよりも小さい場合、使用されるコア数はそれよりも少なくなります。 並列処理ファクター環境で、ツールが使用するコアの数を制御できます。

  • 出力ラスターの形式が .crf の場合、このツールはピラミッド ラスター格納環境をサポートします。 デフォルトでは、ピラミッドは出力で作成されます。 その他の出力形式ではこの環境はサポートされず、ピラミッドは作成されません。

  • このツールに適用されるジオプロセシング環境の詳細については、「解析環境と Spatial Analyst」をご参照ください。

  • 参考文献:

    Greenlee, D. D. 1987. "Raster and Vector Processing for Scanned Linework." Photogrammetric Engineering and Remote Sensing 53 (10): 1383-1387.

    Qin, C., Zhu, A. X., Pei, T., Li, B., Zhou, C., & Yang, L. 2007. "An adaptive approach to selecting a flow partition exponent for a multiple flow direction algorithm." International Journal of Geographical Information Science 21(4): 443-458.

    Tarboton, D. G. 1997. "A new method for the determination of flow directions and upslope areas in grid digital elevation models." Water Resources Research 33(2): 309-319.

パラメーター

ラベル説明データ タイプ
入力サーフェス ラスター

連続サーフェスを表す入力ラスター。

Raster Layer
エッジにあるセルはすべて外側に流出
(オプション)

エッジ セルが常に外向きに流れるか、通常のフロー規則に従うかを指定します。

  • オフ - エッジ セル内部の最大降下がゼロより大きい場合、フロー方向は通常どおりと判定されます。それ以外の場合、フロー方向はエッジ方向になります。 内側に流れるべきセルは、内側に流れます。 これがデフォルトです。
  • オン - サーフェス ラスターのエッジにあるすべてのセルが、サーフェス ラスターから外側に流れます。
Boolean
出力降下率ラスター
(オプション)

オプションの出力降下率ラスター。

降下率ラスターは、フロー方向の各セルの標高の最大変化と、セルの中心間のパス長の比率をパーセントで返します。

出力は浮動小数点型になります。

Raster Dataset
流向タイプ
(オプション)

流向の計算時に使用される、フロー方法のタイプを指定します。

  • D8フロー方向は、D8 法によって決定されます。 この方法では、最も急な傾斜となる近傍ピクセルに流向が割り当てられます。 これがデフォルトです。
  • MFDフロー方向は、MFD 法に基づきます。 フロー方向は、適応可能な配分指数に応じて降下傾斜となる近傍全体に分割されます。
  • DINF流向が DINF 法に基づきます。 この方法では、三角形面で最も傾斜が急な勾配に流向が割り当てられます。
String

戻り値

ラベル説明データ タイプ
出力流向ラスター

D8 法、MFD 法、または DINF 法を使用して各セルから降下傾斜の近傍セルへの流向を示す出力ラスター。

出力は整数型になります。

Raster

FlowDirection(in_surface_raster, {force_flow}, {out_drop_raster}, {flow_direction_type})
名前説明データ タイプ
in_surface_raster

連続サーフェスを表す入力ラスター。

Raster Layer
force_flow
(オプション)

エッジ セルが常に外向きに流れるか、通常のフロー規則に従うかを指定します。

  • NORMALエッジ セルの内部の最大降下がゼロより大きい場合、通常のフロー規則に従って判定されます。それ以外の場合、フロー方向はエッジ方向になります。 内側に流れるべきセルは、内側に流れます。 これがデフォルトです。
  • FORCEサーフェス ラスターのエッジにあるすべてのセルが、サーフェス ラスターから外側に流れます。
Boolean
out_drop_raster
(オプション)

オプションの出力降下率ラスター。

降下率ラスターは、フロー方向の各セルの標高の最大変化と、セルの中心間のパス長の比率をパーセントで返します。

出力は浮動小数点型になります。

Raster Dataset
flow_direction_type
(オプション)

流向の計算時に使用される、フロー方法のタイプを指定します。

  • D8フロー方向は、D8 法によって決定されます。 この方法では、最も急な傾斜となる近傍ピクセルに流向が割り当てられます。 これがデフォルトです。
  • MFDフロー方向は、MFD 法に基づきます。 フロー方向は、適応可能な配分指数に応じて降下傾斜となる近傍全体に分割されます。
  • DINF流向が DINF 法に基づきます。 この方法では、三角形面で最も傾斜が急な勾配に流向が割り当てられます。
String

戻り値

名前説明データ タイプ
out_flow_direction_raster

D8 法、MFD 法、または DINF 法を使用して各セルから降下傾斜の近傍セルへの流向を示す出力ラスター。

出力は整数型になります。

Raster

コードのサンプル

FlowDirection の例 1 (Python ウィンドウ)

次の例では、入力 Grid 標高サーフェス ラスターから、D8 流向ラスターを作成しています。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outFlowDirection = FlowDirection("elevation", "NORMAL")
outFlowDirection.save("C:/sapyexamples/output/outflowdir01")
FlowDirection の例 2 (スタンドアロン スクリプト)

次の例では、入力 Grid 標高サーフェス ラスターから、D8 流向ラスターを作成しています。

# Name: FlowDirection_Example.py
# Description: Creates a raster of flow direction from each cell to its
#    steepest downslope neighbor.
# 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
inSurfaceRaster = "elevation"
outDropRaster = "C:/sapyexamples/output/dropraster"

# Execute FlowDirection
outFlowDirection = FlowDirection(inSurfaceRaster, "FORCE", outDropRaster)

# Save the output 
outFlowDirection.save("C:/sapyexamples/output/outflowdir02")

関連トピック