国際版はこちら → terrain-layering-model
地図模型は3Dデータから3Dプリンターでプリントアウトする時代だが、デジタルデータから極めてアナログな手仕事で工作するのも良いものだと思う。子どもたちのGIS教育にも役立ってくれると嬉しい。
国土地理院の標高タイルを使って物理的な積層地形模型を生成するデスクトップツールです。等高線ごとに切り出したシートを積み重ねることで、レーザーカッターや手切りで3D地形模型を作ることができます。
国内版は国土地理院(GSI)の高精度DEMデータ(1〜5m解像度)に最適化されています。
| 機能 | 国内版(本リポジトリ) | 国際版 |
|---|---|---|
| DEMソース | 国土地理院 標高タイル | SRTM / Copernicus DEM |
| DEM解像度 | 1〜5 m | 約30 m |
| 地図UI言語 | 日本語 | 英語 |
| 地図レイヤー | 地理院標準・淡色・陰影起伏 | ESRI Topo・Relief・Street |
| 衛星写真 | ESRI World Imagery | ESRI World Imagery |
| 対応範囲 | 日本国内のみ | 全世界 |
- GUIアプリ — 基本操作にコマンドラインは不要
- 地図から範囲選択 — ウェブ地図上で矩形を描くだけでDEMを自動取得
- 衛星写真オーバーレイ — ESRI衛星写真を各レイヤーに合成
- ズーム自動計算 — 衛星タイルの解像度をDEM解像度に自動マッチング
- SVG + PDF書き出し — 表紙・レイヤー番号付きの印刷用PDF
- 大容量SVG対応 — PIL ラスタライザによるフォールバックで描画失敗なし
- 各種パラメータ調整 — 等高線間隔・スムージング・簡略化・用紙サイズ・縮尺
1. アプリを起動
↓
2. 地図セレクターを開く → 範囲を選択 → DEM(GeoTIFF)をダウンロード
↓
3. GeoTIFFを読み込む → 等高線間隔・カラーマップを設定
↓
4. プレビュー確認 → SVGレイヤーを一括生成
↓
5. PDFを書き出す → 厚紙に印刷
↓
6. 等高線に沿って切り抜く
↓
7. 最下層(最大)から最上層(最小)へ順に重ねる
↓
8. 地形積層模型の完成 ✓
Python 3.9 以上
numpy
rasterio
scipy
Pillow
svgwrite
matplotlib
flask
svglib
reportlab
tqdm
requests
一括インストール:
pip install -r requirements.txtRaspberry Pi / Linux環境の場合:
pip install -r requirements.txt --break-system-packagesgit clone https://github.com/hoshigarasu/terrain-layering-model-jp.git
cd terrain-layering-model-jp
pip install -r requirements.txtGUIを起動:
python terrain_layering_gui.pyステップ1 — 地図から範囲を選択
「地図から範囲選択」 をクリックするとブラウザでLeaflet地図が開きます。対象エリアを矩形で描いて 「DEM取得」 をクリック。完了後 「GUIで使用」 をクリックします。
地図レイヤーは以下から選択できます:
| レイヤー | 用途 |
|---|---|
| 🗾 地理院標準 | 等高線・地名・道路の確認 |
| 📋 地理院淡色 | 視認性重視 |
| 🛰 衛星写真 | 地表面・植生の確認(デフォルト) |
| 🏔 地理院陰影起伏 | 地形の凹凸を直感的に把握 |
| 📏 等高線 | 標高インターバルの確認 |
ステップ2 — パラメータを設定
| パラメータ | 説明 | 推奨値 |
|---|---|---|
| 標高間隔 (m) | 1層あたりの標高差 | 50〜200 m |
| カラーマップ | レイヤーの塗り方 | satellite(実写) |
| スムージング | 標高データのガウスぼかし | 1.0〜3.0 |
| 輪郭簡略化 | RDPパス削減 | 0.5〜2.0 |
| 用紙サイズ | 出力ページサイズ | A4 / A3 |
| スケール (mm/px) | 出力の物理サイズ | 1.0 |
ステップ3 — 生成
「プレビュー更新」 で確認後、「SVGファイル生成」 で全レイヤーを書き出し、「PDFのみ生成」 で印刷用PDFを出力します。
output/
├── print_all_layers.pdf ← これを印刷(表紙+全レイヤー)
├── layer_0001_XXXM.svg
├── layer_0002_XXXM.svg
└── ...
国土地理院の標高タイルを使用しています。
- DEM5A(レーザー測量): 約1 m解像度
- DEM5B(写真測量): 約5 m解像度
- DEM10B(広域): 約10 m解像度
取得時は上位ソースから優先的にダウンロードし、欠損ピクセルを下位ソースで補完します。
出典:国土地理院 標高タイル
- プリントアウトを1〜2 mm のフローリングシートなどにスプレー糊で貼付すると立体感が出やすい
- 人間は高さ方向を誇張して認識するので、表紙に示された1段の厚みの1.5~2倍くらいにした方が良い。
- レーザーカッターが最適。カッターナイフによる手切りも可
- 各レイヤーの赤い破線は一つ上のレイヤーの輪郭を示す位置合わせガイド
- レイヤー間の接着はスプレー糊か両面テープが扱いやすい
- 海域部分の台座には青いアクリル板やスチレンボードが見栄えよく仕上がる
MIT License — LICENSE 参照
- 標高データ:国土地理院(測量法に基づく使用)
- 衛星写真:ESRI World Imagery(利用規約参照)
A desktop tool optimized for Japan that converts Digital Elevation Model data from the Geospatial Information Authority of Japan (GSI) into physical layered terrain models.
Global version (worldwide coverage) → terrain-layering-model
We live in an era where terrain models can be 3D-printed directly from digital data. But there is something deeply satisfying about crafting a physical model by hand from that same data. We hope this tool also finds use in GIS education for children.
| Feature | Japan Edition (this repo) | Global Edition |
|---|---|---|
| DEM source | GSI Elevation Tiles | SRTM / Copernicus DEM |
| DEM resolution | 1–5 m | ~30 m |
| Map UI language | Japanese | English |
| Map layers | GSI Standard, Pale, Hillshade | ESRI Topo, Relief, Street |
| Satellite imagery | ESRI World Imagery | ESRI World Imagery |
| Coverage | Japan only | Worldwide |
git clone https://github.com/hoshigarasu/terrain-layering-model-jp.git
cd terrain-layering-model-jp
pip install -r requirements.txtLaunch:
python terrain_layering_gui.py- Elevation: Geospatial Information Authority of Japan — DEM5A/5B/10B tiles
- Satellite imagery: ESRI World Imagery
MIT License. See LICENSE for details.
