iRICで複数の点群データを扱う際の注意点

# はじめに
[iRICソフトウェア](https://i-ric.org/)の使用方法は[マニュアル](https://iric-gui-user-manual-jp.readthedocs.io/ja/latest/index.html)に整理されています。
ただし、テキスト量が多いため問題にぶつかった際に解決する方法を探すのは簡単ではありません。
（ちなみに今回扱う内容は[iRIC User's manual](https://iric-gui-user-manual-jp.readthedocs.io/ja/latest/index.html)＞[プリプロセッサー](https://iric-gui-user-manual-jp.readthedocs.io/ja/latest/04_pre.html) ＞ [地理情報](https://iric-gui-user-manual-jp.readthedocs.io/ja/latest/04/04_geographic_data.html)＞[点群データ編集機能](https://iric-gui-user-manual-jp.readthedocs.io/ja/latest/04/04/02_pointcloud_data.html)と進んでいくと書いてあります。）

なので今回は引っかかることが多そうな事例のうちの一つについてまとめてみました。


# 点群データとマッピング
[iRICソフトウェア](https://i-ric.org/)では地形高のデータとして、横断測量データ、点群データ、ラスタデータ、ポリゴンデータ、ラインデータ、TIN等が使用できます。

ただしiRICでは、点群データを利用して計算格子に地形高の値をマッピングする場合、iRICではインポートされた点群データからTINを作成し、作成された三角形の中に含まれる格子点にその三角形を構成する頂点の値の重み付け平均した値を与えます。


### データマッピングのイメージ

1m間隔で5×5個で並んだ点群データ自作し、インポートすると以下のようになります。
標高はY方向に1:1の勾配を与えています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/273b817b-0f33-165e-a64f-17e270ba8687.png)

点群をインポートする際、iRICでは以下のようなTINを作成します。
作成されたTINはオブジェクトブラウザーからインポートしたデータを右クリックし、プロパティから`表示方法`を`ワイヤーフレーム`に設定することで確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/e4970bb0-152e-b5f3-0436-309b4387f141.png)

この時格子点に地形高をマッピングする場合、四角で示す格子点の標高は各格子点を含む三角形の頂点（同色の丸で示される）の値の重みづけ平均で与えられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/b5b6f98e-3186-9781-cfac-dd373c042dfa.png)

`表示方法`を`補完された面`に設定すると重みづけ平均された際の標高をより視覚に確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/30fd1e95-03f5-a40e-4de5-df91bc56fa9a.png)


# 留意点
## TINが作成されるのは点群データ毎

### 失敗例

iRICではTINはインポートしたデータ毎に作成されます。

以下のように2つの点群データをインポートすると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/e479f7f7-e5c5-a9aa-1269-e0dd1b5e1a6f.png)

TINデータは以下のように作成され、異なるデータの点群と点群の間にはTINが作成されていないことがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/c7a32c0c-c910-8cd0-c2fa-6d93f149f601.png)

この状態で以下の図のような格子にマッピングを実行してみます。
点群の点だけ見ていると赤い点線で囲まれた格子点(1,5)、(2,5)、(3,5)、(4,5)は標高5mの点と標高6mの点の間にあるので5m～6mの間の値がマッピングされると思ってしまいますが、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/849b2aa2-c42f-eaf7-1e8b-663b2589136f.png)


実際にマッピングをしてみるとこれらの格子点には、以下の図のように標高が10mとマッピングされています。（おそらく地形高データの中で最も高い値がマッピングされる。）
これは、これらの格子点がどのTINに囲まれていないために発生しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/ef111182-6f89-ccb4-6a11-900e1d6fc5c5.png)


以下の図は極端な例ですが、上流と下流で異なる点群データを与え、そのままマッピングした際の例です。
（使用しているデータは[Nays2DHの事例集のサンプルデータ](https://i-ric.org/solvers/nays2dh/)を加工して使用しています。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/2d32f18c-4f71-ead0-116d-16a2ae0cc8fa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/056edba7-eb1b-ec6f-c088-d1575cb4b866.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/4c37813b-2b64-f03e-bb16-fdaea7dc6104.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/5e58f884-c65a-e1a9-6f38-afc842d8b105.png)

このように、そのままマッピングしてしまうと点群データ間の隙間にTINが作成されず、その区間の格子点におかしな値がマッピングされたことにより川の中にダムが出来たかのようになってしまっています。

### 対処方法

ではこのような時にどのような対処をすればよいでしょか。

TINはデータ毎に作成されるので複数のデータをひとつにまとめてしまえば解決できます。
点群データの統合についてはiRICのマージ機能を使って行うことが出来ます。

手順は以下の通りです。

1. オブジェクトブラウザーで統合先の点群データをクリックして選択
2. ツールバーの`地理情報`＞`点群データ`＞`マージ`をクリック
3. 表示されるダイアログで統合したい点群データを選択し`OK`ボタンをクリック

![marge.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/1c8e330b-6bdb-8186-9a70-2f3cef8e555f.gif)

統合された点群データから作成されたTINを表示してみると、統合前はTINが作成されていなかった異なるデータの点群間にもTINが作成されていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/d4081b81-6d23-4633-220f-9729583e4623.png)

この状態でマッピングを行うことで、先ほどおかしな値が入っていた格子点にも狙い通りの標高をマッピングできています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2626673/258adf6c-c407-dcd8-1a4d-53046fc98df4.png)