iRICを使ってDEMデータ&河川測量データから河川の計算格子を作成する

# はじめに
この記事を閲覧しているということは、
あなたはiRICを使った水工学のシミュレーションという
わりとマニアックな分野に足を踏み入れてしまった方かと思います。

そういったマニアックな分野では総じて

**ググっても全然情報が出てこない**

という問題があります。
（[公式マニュアル](https://iric-gui-user-manual-jp.readthedocs.io/ja/latest/)はありますが、全部読むのは大変ですよね）

そこで、今回はフリーソフトウェアのiRICを使って
**河川の計算格子を作成する方法**をまとめてみました。

この記事では例として、
北海道 石狩川の旭川市周辺での計算格子を作成します。

### 内容
- 基盤地図情報 DEMデータの読み込み
- 河川測量データの読み込み
- 計算格子生成&属性のマッピング

### 想定読者
- 河床変動計算をやらなきゃいけない人（河川管理者、建築コンサル等）
- iRICの使い方がよくわからない人

# 基盤地図情報 DEMデータの読み込み
### データのインポート
日本国内の標高データについては、国土地理院の
[基盤地図情報 ダウンロードサービス](https://fgd.gsi.go.jp/download/menu.php)で公開されています。

上記のページであらかじめ必要なエリアの標高データを取得し、
iRICにインポートする方法もありますが、
ここではiRIC上で直接データをインポートする方法を説明します。

**手順1**
iRICを起動し、新しいプロジェクトを選択します。

**手順2**
使用したいソルバーを選択してOKをクリックします。
ここではNays2DHを選択します。
![riv_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/42f6fbe7-e0e1-742d-6fbd-84d1b104be76.png)
**手順3**
画面左のオブジェクトブラウザーにて地形高を右クリックして、
インポート（Webから）を選択します。
![dem_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/3f9ae36e-15fa-c55d-547f-fbe719ae5841.png)
**手順4**
iRICで読み込む際の座標系を選択します。
今回は12系の座標を選択します。
（座標系の説明は本題から逸れるので、ここでは割愛します）
![dem_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/2f48a5b0-718a-5017-cc88-d337422e1f02.png)
**手順5**
標高を取得したい範囲をドラッグで指定します。
![riv+dem_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/5491ae09-075c-73f1-5331-b28979a85350.png)
**手順6**
標高データのソースとズームレベルを指定します。
Nays2DHの計算では以下の順で指定します。
データソース　⇒　DEM5A
ズームレベル　⇒　15
![dem_04_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/de6a26d2-aa1e-8a60-28f2-d10150fbec0e.png)
**手順7**
河川周辺の標高が取得できます。
ただし、5mDEMは河床高は測定できていないため
河川位置の標高データは取得できていません。
![riv+dem_03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/488e89b8-1446-d622-e42a-9521e69963c8.png)
そのため、河道内計算をする際は、
河川測量データとセットで読み込む必要があります。

# 河川測量データの読み込み
### 河川測量データとは？
河川測量データは下記2つの情報からなるデータです。

- 横断データ（左右岸のxy座標）
- 断面データ（左岸からの距離と河床高）
![riv_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/5e72eef2-27bd-944a-089d-39563d8928aa.png)
横断データは以下のフォーマットで書かれたcsvファイルとなっています。
![csv_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/9df5a45a-ab67-29a2-6196-988f212fd362.png)
- KP: 断面名
- LX: 左岸のX座標(北向きが正)
- LY: 左岸のY座標(東向きが正)
- RX: 右岸のX座標(北向きが正)
- RY: 右岸のY座標(東向きが正)

また、断面データのフォーマット等については
[河川定期縦横断データ作成ガイドライン](https://www.mlit.go.jp/river/shishin_guideline/kasen/gis/pdf_docs/juoudan/guideline0805.pdf)の13～14ページをご参照ください。

### データの取得
基本的に河川測量データは公開されていないため、必要に応じて河川管理者にお問い合わせください。
今回は、説明用のダミーデータ（石狩川）を使用します。
[ダウンロード](https://river-link.co.jp/share/2104/sample_137-166_csv.zip)

### データのインポート
**手順8**
画面左のオブジェクトブラウザーにて地形高を右クリックし
インポート→横断測量データを選択します。
![riv+dem_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/cb1c61f1-2673-aee5-611d-4c3f60cbbe74.png)
**手順9**
準備した**横断データのcsvファイル**を選択します。
![csv_02_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/f600b417-3773-cdf5-9317-bab05925129d.png)
**手順10**
**断面データが入っているフォルダ**を選択します。
![csv_03_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/f62bc4d3-b264-ea8d-3ba0-558dd01c21b3.png)
「見つかった問題一覧」が表示された場合、断面名と起きている問題が一覧で表示されます。
iRIC側の基本対応が問題なければそのままインポートを続行します。
（iRICの基本対応と異なる対処がしたい場合は手動でファイルを修正してください）
![csv_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/371ef30d-789a-f50b-a745-5d83abb6c5c0.png)
**手順11**
河川中心点の位置を確認されるので、下記いずれかを選択します。
1. 低水路端点の中点
2. 低水路の最も標高の低い点
3. CSVファイルから中心線をインポートする
![riv_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/85c9fc1c-ee1f-0ae8-de0e-8e1a4cd04126.png)
ちなみに
下図の場合、低水路端点の中点は①、低水路の最も標高の低い点は②の位置になります。
![riv_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/a521d495-048b-ce1e-aa0a-7c99b645a7da.png)
また、中心線の位置を示すcsvファイルを準備する場合は、以下のフォーマットで用意する必要があります。
![riv_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/93e8141b-c635-2132-d9e5-fddda3b6e167.png)
**補足**
河川中心点については、読み込み後に下記の方法で手動で修正することも可能です。
（見やすさのため、DEMデータ非表示の状態で説明します）

まず、オブジェクトブラウザーにて読み込んだ横断測量データを選択します。
![riv_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/0980a775-37c8-abaa-77f3-7e54af732bf6.png)
次に、修正したい中心点を直接クリックして選択します。
![riv_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/498ec437-f7bd-9519-581c-5c2877e24453.png)
最後に、Shiftキーを押しながらドラッグすることで、計測断面内の任意の位置に中心点を移動できます。
![riv_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/b002b7c6-5506-e826-d68b-76628191e951.png)

# 計算格子生成&属性のマッピング
### 計算格子の生成
**手順12**
メニューバーの格子→格子生成アルゴリズムを選択します。
![riv+dem_05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/722e6736-6212-a3c7-cd13-7aa0aa6a88d9.png)
**手順13**
横断測量データから生成を選択します。
![riv_15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/8bb2e089-9baf-20b7-d6f9-0ab0b97c6304.png)
**手順14**
計算格子の分割数を指定します。

①横断方向の分割数
横断線をクリックして選択します。（選択箇所が青くハイライトされる）
![riv+dem_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/f397b838-95a2-fc5a-5a18-9c094ab3d4a8.png)
右クリックで分割点の追加を選択します。
![riv+dem_07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/36336757-73e4-ba6a-b703-2d630a83d9ec.png)
分割数と分割方法を選択してOKをクリックします。
![riv_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/a6e15268-8b25-0030-447a-a32bfe9e6f10.png)
横断線の分割位置が表示されます。
※必要に応じて反対側も分割数を指定してください。
![riv+dem_08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/3cb80608-b299-3ce0-f528-4786090c2c3d.png)
②縦断方向の分割数
横断線を選択していない状態で右クリックし、分割点の一括追加を選択します。
（横断線が選択されている場合は余白をクリックすれば選択解除されます）
![riv+dem_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/a8598596-65fc-7a59-f216-4c46123f3f38.png)
開始横断線と終了横断線を選択します。
（読み込んだ全領域を等分割するなら、そのままでOK）
分割方法は以下のどちらかを選択します。
・区間ごとの分割数を指定
・目標とする分割点間の距離を指定
![riv_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/53768030-f5f7-6809-1df3-4f1900b3feb3.png)
縦断方向の分割位置が表示されます。
![riv+dem_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/2c77c3d0-a811-c0e6-47bd-bd3734d3bb43.png)
**手順15**
オブジェクトブラウザーの格子生成条件を右クリックします。
格子生成を選択します。
![riv+dem_11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/505ffcde-cb73-372a-30bf-0b546754b3b8.png)
**手順16**
格子を生成する区間を選択します。
今回はDEMデータがある範囲を指定します。
![riv+dem_12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/4e1582d4-0f9c-f4e8-1f07-9282139cdce3.png)
**手順17**
地理情報の格子属性へのマッピングを実行しますか？で、はいを選択します。
![riv_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/6acdf586-7156-2b3e-a2bd-0df63505ce06.png)
**手順18**
格子が生成されると同時に、河川測量データの標高値がマッピングされます。
![riv+dem_13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1147458/c3190f0e-f6e2-d305-75ba-53fa75f121c0.png)
マッピングのロジックは[コチラ](https://iric-gui-user-manual-jp.readthedocs.io/ja/latest/04/05/02_mapping.html)をご参照ください。

# おわりに
今回は、iRICのそもそもの使い方を説明しました。
（Qiitaの主旨からはズレている気もしますが）

iRICにはMiniconda環境が同梱されているので
Pythonの活用についても、わかり次第
記事にしていきたいと思います。