水文解析 河川次数

# はじめに
　河川次数とは、河川ネットワークにおける流路のランク付けを表す数値で、支流の数に基づいて河川を分類する方法で、代表的になものに、Strahler（ストラー）法があります。
　ここでは、過去記事で作成した流路ライン河川次数を付加する方法を紹介します。河川次数の機能（Stream order）はGrassGISのアドオンにあり、QGISから呼び出せないので、GrassGISを直接使って処理を行います。

# QGISでの入力データの作成
## 流路ラインの作成
### DEMから流路ラインを作成
　過去記事より、流路ラインを作成します。今回は、MIERUNE Inc.が公開しているプラグイン「ElevationTile4JP」を使って、国土地理院 基盤地図情報 数値標高モデルをダウンロード・ラスタ化し、平面直角座標系 ピクセルサイズ100mの九州のDEMから流路を作成しました。

https://qiita.com/mooya/items/6b802d585e5546a2e693

九州のDEMから作成した流路ライン（画面の納まりの関係で横向き）

![41九州input.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/b39da9a0-4b61-42b7-9b13-61e427f0e542.png)

### NULLジオメトリの削除
　前回記事で流路を作ると、流向が1～8以外の値の場合、nullジオメトリになりますので削除し、データをクリーニングします。
![42nullジオメトリ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/bab525c0-8e8e-420e-bf8a-43882eb7a2f0.png)


### ジオメトリをレイヤにスナップ
　後の処理で、流路ラインの頂点が完全に一致している必要があるので、ジオメトリを揃えておきます。
![43snap.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/86444cb5-5004-4b54-a27b-8a61d1dde0a3.png)

### 融合（dissolve）
　融合で河川セグメント（源頭や合流点の間の区間）ごとにまとめます。[前回記事のラスタをベクタ化（pixels to points）](https://qiita.com/mooya/items/6b802d585e5546a2e693#%E6%B2%B3%E5%B7%9D%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E5%8C%96%E3%83%A9%E3%82%B9%E3%82%BF%E5%80%A4%E4%BB%98%E5%8A%A0)の属性をデフォルト値としていれば、基準となる属性は「VALUE」です。
![44dissolve.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/6b9f3df3-e76f-43ff-bc0a-8652dfd86a39.png)


## 河口ポイントの作成
　河川次数の入力として必要な河口ポイントを流路ラインから作成します。
### 特定の点を抽出　起点
　特定の点を抽出で頂点インデックスに0を指定して河川セグメントの起点（上流端）を抽出します。
![45start.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/574f48c3-16a1-48b1-8705-92efc6ad16d1.png)

### 特定の点を抽出　終点
　同様に頂点インデックスに-1を指定して、終点（下流端）を抽出します。
　![46endpoint.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/385e87d1-6f72-43ed-9d7a-0ea5c781cb2c.png)

### 場所による抽出
　合流点は起終点が重なりますので、起点と重ならない、終点は河口ポイントです。場所による抽出で、起点と重ならない終点を抽出します。
![47extractbylocation.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/7cf101e1-5da7-462b-a6dd-e9775cf73374.png)

　以上で、QGIS側での入力データの作成ができました。
![48outlet.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/29922ddc-aea8-48d9-a7b8-a89127f565ca.png)


# GrassGISでの準備
　ここでは、GrassGISを初めて起動することを想定して説明します。
## GrassGISの起動
　OSのメニューからGRASS GISを起動します。
　![60grass.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/a120d4d5-7160-48e8-afa1-0b330da40ffb.png)

## データセットフォルダ、プロジェクト、マップセットの作成
　Create new Locationボタンを押して、データを保存するパスを指定します。
![61start.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/5271dff8-d7db-4c35-a376-17871693497a.png)
　プロジェクトの名前を指定します。
![63createproject.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/a3b3403b-9742-45b4-b504-8b50e78c3492.png)
　マップセットのCRSは入力データと同じCRSを指定します。
![64crs.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/33f4bb96-bf82-4c5c-8bd0-8cdf844618a2.png)
![65crs.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/5cdf6301-661c-4408-bea5-5bda31ceb98f.png)
![66crs.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/87734956-8ba9-4461-b940-0e8e74ebfdfe.png)
![67createproject.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/119f6270-337c-455d-a497-2c05bb30c17f.png)

## v.stream.orderのインストール
　河川次数を作成するv.stream.orderは、デフォルトではインストールされてないので、インストールします。Settings→Addons extensions→Install extension from addonsを開きます。
![68addon.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/5c94e66c-9381-465c-9cc5-f7fb763a14ea.png)
　v.stream.orderを探して、インストールします。
![69addon.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/aed00689-e21d-4ac2-b2c1-84d35b4eee7f.png)
　コンソールでインストールを確認します。
![70console.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/6224c150-ecd9-4556-98f5-6cbbe1029578.png)

# 河川次数の作成
## データのインポート
　dataウインドウのベクタレイヤのインポートから、QGISで作成した２つの入力データ（流路セグメント、河口ポイント）をインポートします。
 ![71import.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/279e932a-eeaf-466a-b435-4fca5d90f975.png)
![72import.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/011aa447-9de9-4507-b116-1fb00351fdf1.png)
![73import.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/c46616ed-d4d7-44b9-9841-4a84df2de892.png)

## 流路ラインへの河川次数の付加（v.stream.order）
　コンソールウインドウに「v.stream.order」と入力しリターンを押します。
![74streamorder.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/4a6e159c-efc0-4675-b8bc-76672ffbe7d2.png)
　Name of input vector mapに流路セグメントを、Name of the input vector point mapに河口ポイントを指定し、Name of the vector output mapに河川次数の出力レイヤ名を指定します。
![75streamorder.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/c2a1fc37-2d31-4967-8f02-b786ff1533c1.png)
　Optionalタブを開いて、The stream order to computeに作成する河川次数の種類を指定し、Runボタンを押します。
![76streamorder.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/159813b0-377a-4eef-8d41-473b2f35a74b.png)

## データのエクスポート
　河川次数レイヤをのメニュー→Export common formatsを選択し、Name of output OGR datasource に出力ファイル名、Data format to writeにデータ形式を指定して、Runボタンを押します。
![77export.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/498a6490-044a-443f-96d1-fdea45887112.png)
![78export.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/06035bc9-57d7-42d6-a757-60e8f9acb109.png)

# QGISでの出力データの確認
## Strahler（ストラー）次数
 出力された河川次数をQGISで開いて確認します。ここでは、シンボロジをカテゴリ値による定義として、値にStrahler（ストラー）を指定して色分けしました。ストラー法による河川次数の最大値は4次と意外に小さい値でした。これは源頭の集水面積が10km2と大きいためと思います。
 ![79output.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/613f2940-aad5-4079-9a52-95d03ec59b69.png)

 ## 河川次数のNULL値
 　v.stream.orderの仕様と思われますが、河口ポイントが重なった場合（河口で合流）、流路が短い方の河川次数がNULLになります。
![80null.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2259894/d4d68695-f500-4833-8e51-c83643ee718d.png)

# おわりに
　GrassGISはQGISとは、かなり使い勝手の異なり、試行錯誤続きでした。GrassGISには他にもたくさんのアドオンがあるので、今後応用が効けば良いなあと思います。
 　最後までお読みいただきありがとうございました。