Skip to content

hoshigarasu/water_line_mapper

Repository files navigation

Water Line Mapper

DEM(数値標高モデル)から水線・集水域を自動抽出してPDFに出力するGUIアプリケーションです。
登山・沢登り・地形読図などのフィールドワーク用印刷地図の作成を目的として開発されました。

デモ


主な機能

  • 水線抽出:GeoTIFF DEMをD8流向法で解析し、谷線・河川を1ピクセル幅のスケルトンとして抽出
  • 集水域色分け:流域ごとに色分けしたオーバーレイをグラフ彩色で隣接色重複なく生成
  • GSI水線補完:国土地理院標準タイル(zoom 15)から青色水線を自動取得し、DEMの本流を補完・マスク
  • PDF出力
    • Page 1:地理院地図(標準 / 淡色)+水線オーバーレイ
    • Page 2:集水域色分けレイヤー(オプション)
    • Page 3:SVGカットレイヤー(レーザーカッター・プロッター用)
  • 磁北線・経緯度グリッド:偏角自動計算、任意間隔で描画
  • 用紙サイズ:A4 / A3 縦横対応、25,000分の1相当スケール固定

動作環境

  • Python 3.10 以上
  • Windows 10/11 または Linux(macOS 未検証)
  • インターネット接続(GSI タイル取得時)

インストール

git clone https://github.com/<your-username>/water_line_mapper.git
cd water_line_mapper
pip install -r requirements.txt

依存パッケージ

requirements.txt を参照してください。主なものは以下の通りです。

パッケージ 用途
numpy 配列演算
scipy 画像フィルタ・距離変換
rasterio GeoTIFF 読み込み
pysheds D8 流向・集水域計算
scikit-image スケルトン化
Pillow 画像合成・描画
reportlab PDF 生成
svglib SVG → PDF 変換
geomag 磁気偏角計算
requests タイル取得

使い方

python water_line_app.py

基本手順

  1. DEM ファイル選択:GeoTIFF 形式の数値標高モデルを選択
  2. 水線設定
    • 流積閾値(小→詳細、大→主要河川のみ)
    • ギャップ追跡距離(尾根を越えずに繋ぐ最大ピクセル数)
    • 集水域色分け(オプション)
    • GSI 水線マスク(オプション)
  3. 💧 水線を計算 ボタンを押してプレビュー確認
  4. PDF 出力設定:用紙・地図タイル・磁北線・グリッドを設定
  5. 📄 PDF を生成 ボタンで出力

DEMの入手方法

アプリ内蔵のWebインターフェースから直接取得できます(推奨):

  1. GUIの 「🗺 地図から範囲選択」 ボタンをクリック
  2. ブラウザが開くのでLeaflet地図上で対象範囲を選択
  3. 「GeoTIFF を作成・ダウンロード」 ボタンを押すと自動でDEMを生成
  4. ダウンロード完了後、GUIに自動ロードされます

外部サービスやアカウント登録は不要です。国土地理院のDEMタイルを自動取得・結合します。


パラメータ詳細

パラメータ 推奨値 説明
流積閾値 300 小さいほど細流まで描画。50=全谷線、1000=主要河川のみ
ギャップ追跡距離 50 px 尾根除去で途切れた水線を繋ぐ最大距離
集水域区切り倍率 5 流積閾値 × 倍率 以上の流路でセグメント分割

ファイル構成

water_line_mapper/
├── water_line_app.py      # GUIアプリケーション(tkinter)
├── water_line_core.py     # 計算エンジン
├── requirements.txt
├── README.md
└── docs/
    └── screenshot.png

アルゴリズム概要

  1. 前処理:メディアンフィルタ(5px)+ガウシアン(σ=1.0)でノイズ除去
  2. D8流向計算:pysheds で pit fill → resolve flats → flowdir → accumulation
  3. GSIバーニング:GSI水線座標に沿って DEM を掘り下げ(cell_m × 2)後、再 D8 計算(集水域精度向上)
  4. 水線トレース:平面曲率(Plan Curvature)で尾根ピクセルを除去しつつ D8 直接追跡(1px 幅保証)
  5. スケルトン化:scikit-image skeletonize で細線化
  6. GSIマスク:GSI水線バッファ(±9px)外のDEM線を除去、DEM支流をGSI本流へスナップ接続
  7. 集水域計算:バーニング済み fdir を使った BFS 逆伝播、GSI水線をバリアとして越境を防止
  8. グラフ彩色:隣接セグメント間の貪欲彩色で隣接色重複を排除

ライセンス

MIT License — 詳細は LICENSE を参照してください。

地理院タイルの利用には国土地理院コンテンツ利用規約が適用されます。


謝辞

  • 標高データ:国土地理院
  • 地図タイル:国土地理院標準地図・淡色地図
  • D8 流向計算:pysheds

About

DEM から水線・集水域を抽出して印刷地図PDFを生成するGUIアプリケーション

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors