# 点群活用ガイドブック（整形版）

## 点群データでできること

点群データ（地形の三次元情報）を活用し、あらかじめ定めた飛行ルートに沿って安全な高度を自動計算できます。これにより、法令順守と安全性の両立を支援し、運用時の判断負荷を軽減します。

- 主な効果
  - ルートに沿った最低安全高度の算出
  - 障害物との距離に基づくリスク区分の可視化

## 点群データ活用の考え方

- 前提と制約

  - 川の上のみ飛行可／橋上通過には許可が必要
  - 飛行ルートは事前に概ね決定されている

- アプローチ

  - 経路探索よりも「事前にルートを確定」し、点群から安全高度を割り出す
  - リスクの高い区間を地図上で明示し、運用判断に活用する

- 高度の扱い

  - 橋や橋下を潜るなど、低空飛行が必要な箇所は個別に高度を直接指定

- さらなる発展
  - 飛行可能範囲（例：河川域）をあらかじめ指定し、その範囲内でルート探索を行う可能性
  - 三次元の事前ルート作成により、より良い最短経路を探索できる可能性
  - 風向きや電池残量などを織り込んだ簡易シミュレーションの可能性

## 参照実装

本ガイドの内容を検証する PoC の参照実装を同梱しています。入力ルートに対して高度計算と衝突リスク（障害物との距離）を算出し、結果を 3D マップで表示します。

- ルートの指定方法

  - geojson.io を用いて、地図上に線（Line）や図形（Polygon）を作成
  - 高度を指定したい範囲は Polygon で囲い、プロパティに高度を設定
  - 画面右側の GeoJSON をファイルに保存し、参照実装へ入力

- 表示結果
  - 自動算出した高度と、法的リスクの懸念がある箇所を色分けして 3D 表示

詳細な操作は「実行手順」を参照してください。

## 実行手順

- 前提準備

  1. Homebrew を導入（未導入の場合）
  1. Python を準備（pyenv で 3.13.5 をインストール／`.venv` を作成）
  1. 依存をインストール（`pip install -r requirements.txt`）

- データの確認

  1. 地形点群は `data/ground_data/targets_all.txt` に列挙（LAS ファイルは同フォルダ）
  1. ルートは `settings/default.json` の `route.file_path`（標準は `data/path.json`）

- 実行

  1. ターミナルでプロジェクトフォルダへ移動
  1. `python app.py settings/default.json` を実行
  1. ブラウザが自動で開かない場合、生成された `out.html` を手動で開く

- オプション（軽量起動）

  1. `python app.py settings/simple_path.json` を実行（3D 変換済みルートを使用）

- よくある詰まりポイント

  1. 仮想環境の有効化忘れ（`source .venv/bin/activate`）
  1. 依存未インストール／ネットワーク不調
  1. 設定のパス不整合（JSON の `file_path` を再確認）

- 出力
  1. 実行後、プロジェクト直下に `out.html` が生成
  1. 地理院タイル上に点群・ルートが重ねて表示される

## 付録

- 参考リンク
  - geojson.io（ルート作成）：https://geojson.io/
  - 地理院タイル（標準地図）：https://maps.gsi.go.jp/development/ichiran.html
