# セットアップ手順

- python3.13.5 を利用する
- pip にて、requirements.txt 内のライブラリを実行する

## mac の場合の具体的な実行手順

### 必要なツールのインストール

事前に Homebrew が導入されていることを前提に、以下をインストールします

```bash
brew install pyenv
```

### Python 環境のセットアップ

初回は以下を実行

```bash
pyenv install 3.13.5
pyenv local 3.13.5
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```

二回目以降は以下だけ実行する

```bash
source .venv/bin/activate
```

## データと設定の確認

### 入力データ一覧

- **設定ファイル**: 実行時の各種設定を記述するファイル。実行時に指定（例: settings/default.json）。
- **経路ファイル**: 設定ファイルの `route.file_path` で参照（例: data/path.json）。
- **点群データ**: G 空間情報センターからダウンロードした点群データ、data/ground_data 以下に配置しておく必要がある
- **点群リスト**: 上記ダウンロード済みの LAS ファイルから、判定に使用したり表示するための点群データ(LAS ファイル)を選択する。data/ground_data/targets_all.txt

### 各ファイルの説明

#### 経路ファイル

GeoJSON の`FeatureCollection` 形式。

- **LineString（必須）:** ルート線。`route.file_type` が `before_conversion` の場合、座標は `[lng, lat]`。変換後は `[lng, lat, altitude]` を含む 3D 線に自動変換されます。
- **Polygon（任意）:** 高度指定エリア。`properties.altitude` にメートルで指定。重なった場合は最も低い高度が優先されます。
- **Point（任意）:** ラベル／目印。`properties.altitude` と `properties.text` を持てます（3D 表示時にテキストとして描画）。
  例

#### 設定 JSON（必須）

以下は主要な設定値

- **terrain.mode:** `pointcloud` または `polygon`（点群の可視化モード）
  - 現在は`pointcloud`のみ有効
- **route.file_path:** 経路ファイルのパス（例: `data/path.json`）
- **route.file_type:** `before_conversion`（2D から 3D に自動変換）または `after_conversion`（既に 3D）
- **route.nearest_point:** 距離・高度計算の設定（例：`spacing_m`, `clearance_m`, `step_m`, `max_alt`, `start_alt`）
  - `subsample`: 判定処理軽量化のための、点群の間引きを有効化（true/false）。
  - `target_ratio`: 間引き時の採用率（0〜1、小さいほど軽量）。
  - `k_mad`: 外れ値抑制の係数（大きいほど緩くフィルタ）。
  - `spacing_m`: 経路のサンプリング間隔（m）。値が小さいほど経路を細かく区切って判定する。
  - `clearance_m`: 障害物から確保したい最小距離（m）。
  - `step_m`: 安全高度探索時の上げ幅（m）。小さいほど正確な高度を計算できるが、処理時間は長くなる。
  - `max_alt`: 高度探索する高度の上限（m）。
  - `start_alt`: 高度探索を始める初期高度（m）。

#### 点群リスト（必須）

`data/ground_data/targets_all.txt`
内容は LAS ファイル名の列挙。`#` で始まる行はコメントとして無視されます。

例：

```text
# 使用する LAS 一覧（同フォルダに配置）
09LD1845.las
09LD1846.las
09LD1847.las
```

## 実行方法

実行方法

```bash
python app.py [設定ファイル名]
```

実行例

```bash
python app.py settings/default.json
```

- 実行後、プロジェクト直下に `out.html` が生成されます
- ブラウザが自動で開かない場合は `out.html` を手動で開いてください
