標高データから、河川および流域界を抽出する

    ArcGISおよびSpatialAnalystを使って、レーザープロファイラのデータや数値地図50mメッシュ標高などから、河川(というか水が流れそうな所)や流域界を自動的に抽出することができます。

    作業手順は『図解ArcGIS Part2 ~GIS実践に向けてのステップアップ~』に載っているので、必要な場合はそちらを参考にしてください。

    簡単な手順

    1. 標高値をラスタ(標高グリッド)化にする
      名前は何でもいいですが、ここではdemとします。
    2. データをスムージングする。
      何も補正していない生データ(dem)を使うと、小さな凸凹に影響を受けて集水域が上手く作成できない場合があるため、解析のためのスムースなデータに変換します。微妙な凸凹を除去するには、Fillコマンドを使います。
      ArcToolbox > Spatial Analyst Tools > 水文解析 > Fill
      入力サーフェスラスタ dem
      出力サーフェスラスタ fill_dem
    3. グリット毎に水が流れる方向を計算します。
      ArcToolbox > Spatial Analyst Tools > 水文解析 > FlowDirection
      入力サーフェスラスタ fill_dem
      出力流向ラスタ fd
      ラスタには、流れの方向(北64、北東128、東1、南東2、南4、南西8、西16、北西32)という値が格納されます。
    4. 累積流量を計算する。
      ArcToolbox > Spatial Analyst Tools > 水文解析 > FlowAccumulation
      入力流向ラスタ fd
      出力累積流量ラスタ fa
      出力データタイプは、Integerにしておきましょう。
      入力加重ラスタに値を入れない場合には、単純に流れる方向に累積していったセルの個数が値として反映されます。川は、流域から水が集まって形成されますので、ある程度値が入っているセルのみ表示させれば、澪筋がどこなるか分かります(この作業を次項Conで行う)。
    5. 河川グリッドの作成
      ArcToolbox > Spatial Analyst Tools > 条件 > Con
      入力条件付きラスタ fa
      条件式がTRUEのときの入力ラスタ、または定数値 1
      出力ラスタ con
      条件式 Value >=100 とか
      流域を抽出したい河川の規模にあった条件式で抽出します。大河川で集水メッシュ数が多いのに、条件式につかう値を小さくすると、流域が細切れすぎて使いにくいです。
    6. 支流毎にグループ分け
      ArcToolbox > Spatial Analyst Tools > 水文解析 > Stream Link
      入力河川ラスタ con
      入力流向ラスタ fd
      出力ラスタ sl
    7. 集水域の作成
      ArcToolbox > Spatial Analyst Tools > 水文解析 > Watershed
      入力流向ラスタ fd
      流出点データの入力ラスタ、またはフィーチャ sl
      出力ラスタ ws
      シンボルを個別値で塗り直せば、流域抽出完了です。

    2件のコメント

    1. ご指摘ありがとうございます。
      修正しておきました!

    2. 誤りを発見しました。

      6.支流毎にグループ分け
      ArcToolbox > Spatial Analyst Tools > 水文解析 > Stream Line
      入力河川ラスタ fa
      入力流向ラスタ fd
      出力ラスタ sl

      ここの入力河川ラスタはfaではなくconです。
      本の方と比べて気付きました。

    コメントを残す