【iRIC】横断測量データの河川中心線とは・エクスポートする方法

# はじめに

iRICでは横断測量データをインポートして計算格子に標高をマッピングできますが、その際に河川の中心線はとても重要になります。

以下の画像は意図的に河川中心線をずらした場合の横断測量データから作られたコンターですが、澪筋が繋がっていないなど明らかにおかしな地形になっていることがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/e3dd2a49-a5f0-6a38-1f91-aba21f42381b.png)

河川中心線を適切に設定すると以下のようになります。
先程と比べて明らかに破綻している箇所がなくなっていますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/852806c6-b325-405c-9e4e-48283ca093cd.png)

この河川中央線はiRIC上で以下のように編集できますが、違うプロジェクトで同じ横断測量データを使用したり、同じ区間の異なる年度の横断測量データを使用したい時に毎回中心線を手動で設定するのは大変ですし、まったく同じ中心線を使用したい場面も多いと思います。

![anime2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/817337f0-30f7-4545-267a-46ff83e8728c.gif)

そこで今回は河川中心線をエクスポートして使用する方法を紹介します。

iRIC上での基本的な横断測量データの編集方法については以下のユーザーズマニュアルをご覧下さい。

https://iric-gui-user-manual.readthedocs.io/ja/v4_jp/04/04/03_riv_data.html#id6

# エクスポート

## 手順
* iRIC上でエクスポートしたい河川中心線を準備します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/8a9c841a-f9e4-a94c-b7ee-30eb2a82f710.png)

* オブジェクトブラウザー内の出力したい河川中心線を含む横断測量データを右クリックして、`エクスポート`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/dbabcabc-5681-f729-bd3d-5f90e8bc5dc2.png)

* ダイアログが現れるので任意の場所に任意の名前で横断測量データを保存してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/7d56bebe-c76c-a14e-ca47-0164910e5e97.png)

*  横断測量データを保存したフォルダを確認すると、同じ場所に保存した横断測量データの名前のCSVファイルが出力されています。このCSVファイルが河川中心線のデータです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/ad81e674-16e3-6382-f5c9-1375353330db.png)

::: note
* 現在河川中心線のみを単体で出力する機能はありません。
* 横断測量データを`*.riv`形式で出力したときのみ河川中心線データが出力されます。
:::

## フォーマット
エクスポートした河川中心線のデータはカンマ区切りのテキストデータで、
様式としては横断測量データの断面中心点毎に`x座標`, `y座標`, `断面名` `(改行)`が出力されています。

```
x,y,name
-51457.96598,-94011.33159,35.50
-51394.34771,-94467.5925,35.00
-51473.64918,-94929.05364,34.50
-51651.41186,-95411.02157,34.00
-51867.34632,-95844.14157,33.50
-52169.1507,-96232.21055,33.00
-52599.47992,-96402.37381,32.50
-53117.67213,-96521.02365,32.00
-53544.72565,-96761.96763,31.50
-53915.42751,-97052.71851,31.00
-54282.41407,-97402.51201,30.50
-54712.43577,-97788.40826,30.00
-54982.84556,-97942.02155,29.50
-55453.21529,-98058.54084,29.00
-55881.55219,-97897.55054,28.50
-56255.17696,-97593.12224,28.00
-56636.48033,-97280.01871,27.50
-57127.46626,-97127.96047,27.00
```



# インポート
## 手順
横断測量データをiRICにインポートする際の`河川測量データ インポート設定`ダイアログで、`河川中心点の定義位置`を`csvファイルから中心線をインポート`を選択し、`...`から出力した河川中心線データを指定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/c4788ec4-007e-0492-4557-c82dc163d37d.png)

## インポートの仕様

河川中心点の定義を`csvファイルから中心線をインポート`で行う場合、各断面の河川中心点は以下のように定義されます。

* `csvファイルから読み込んだ河川中心線`とインポートする`横断測量データの各横断測線`の交点を河川中心点とする。
* `csvファイルから読み込んだ河川中心線`と交差しない測線は左右岸の中心点が河川中心点と設定される。

### 検証
検証として以下のような横断データを自作しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/a2e40717-9032-4e4c-9f62-adf48fc96d04.png)

.rivデータの中身はこんな感じ

<details><summary>test_oudan.riv</summary><div>

```code:test_oudan.riv
#survey
#survey
10	10	0	10	4
9	9	0	9	4
8	8	0	8	4
7	7	0	7	4
6	6	0	6	4
5	5	0	5	4
4	4	0	4	4
3	3	0	3	4
2	2	0	2	4
1	1	0	1	4
0	0	0	0	4


#x-section
10	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
9	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
7	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
8	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
6	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
5	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
4	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
3	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
2	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
1	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	
0	9
0	0	0.5	0	1	-0.5	1.5	-1	2	-1.5	
2.5	-1	3	-0.5	3.5	0	4	0	

```

</div></details>

※ rivファイルのフォーマットについてはマニュアルをご覧ください。

https://iric-gui-user-manual.readthedocs.io/ja/v4_jp/06/01_riversurvey.html




この状態でエクスポートした河川中心線データは以下のようになります。

<details><summary>test_oudan.riv.csv</summary><div>

```:test_oudan.riv.csv
x,y,name
10,2,10
9,2,9
8,2,8
7,2,7
6,2,6
5,2,5
4,2,4
3,2,3
2,2,2
1,2,1
0,2,0
```

</div></details>


このエクスポートした河川中心線データを以下のように書き換えてインポートしてみます。

<details><summary>test_oudan.riv_2.csv</summary><div>

```:test_oudan.riv_2.csv
x,y,name
11,0,3
7,6,2
1,0,1
```

::: note
* 河川中心線を構成する点の数は横断測量データの断面数と一致している必要はありません。
* 点の名前と断面の名前は一致している必要はありません。
:::

</div></details>



すると以下のような警告が出てきますが、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/bf5a108f-39c4-3f16-5aea-24bf18daf7f4.png)

無視して進めると以下のように河川中心点が定義されインポートが完了します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/06e00ca7-93d7-d78a-c3fe-5defa0ae12b2.png)

ここで指定した河川中心線データを重ねてみると。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/71b66b3a-cc70-d02c-26f8-7e99b04fc6f8.png)

仕様どおり単純に、河川中心線と交差する測線では交差した点、交差しない測線では警告が表示され左右岸中央に設定されていることがわかります。

# まとめ

## 仕様

* 河川中心線は横断測量データを`*.riv`形式でエクスポートした際に一緒に出力される。
* エクスポートされた河川中心線データは各断面の名前と河川中心点の座標を整理したテキストデータ
* `csvファイルから読み込んだ河川中心線`とインポートする`横断測量データの各横断測線`の交点を河川中心点とする
* `csvファイルから読み込んだ河川中心線`と交差しない測線は左右岸の中心点が河川中心点と設定される。
* 河川中心線を構成する点の数は横断測量データの断面数と一致している必要はない。
* 点の名前と断面の名前は一致している必要はない。

## 応用

河川中心線データはただのラインデータです。
横断測量データと一緒にエクスポートされるのでその横断測量データ専用に感じるかもしれませんが、上記仕様を把握していれば容易に編集が可能です。

例えば、同一河川内の複数の範囲の計算を行いたい場合、すべての横断データの範囲を包括する河川中心線データをひとつ作成すれば、すべての範囲の横断測量データで使用できます。
ラップしている範囲で河川中心点を揃えたい時等に便利だと思うのでぜひ試してみてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/02c1e19c-cb3c-fc50-b198-694bb0ea6ad5.png)