任意の都道府県の市区町村地形パズル(3D プリント用 STL)を生成する汎用ツールです。 tokyo-puzzle を全都道府県対応に汎用化したものです。
国土交通省の行政界データ(N03)と国土地理院の標高データ(DEM)から、
- 市区町村ピース: 地形の起伏付き・裏面に市区町村名を浮き彫り
- 枠(フレーム): ピースをはめ込むトレイ。市区町村境界線が 0.5mm 盛り上がったガイド付き。プリントベッドに収まるよう自動分割され、タブ/スロットで接続
を生成し、Next.js 製のサイトで配布できます。
npm install
pip install numpy Pillow
# 都道府県コード(01〜47)を指定して一括生成
npm run generate -- 13 # 東京都
npm run generate -- 19 # 山梨県
# 開発サーバー起動
npm run devnpm run generate は以下の 3 ステップをまとめて実行します。個別にも実行できます。
npm run data:fetch -- 13 # 1. 行政界 GeoJSON をダウンロード
python3 scripts/gen_stl.py 13 # 2. 市区町村ピース STL を生成(数十分かかります)
python3 scripts/gen_frame.py 13 # 3. 枠 STL を生成ピースは 1 市区町村ずつ生成することもできます:
python3 scripts/gen_stl.py 13 13101 # 千代田区のみtokyo-puzzle でハードコードされていた以下の項目は、境界データからすべて自動計算されます。
| 項目 | 計算方法 |
|---|---|
| 市区町村一覧 | N03 データの行政区域コード(N03_007)から自動抽出 |
| 投影中心 | 全市区町村の bbox 中心 |
| スケール | パズル全体の長辺が targetSizeMm(既定 400mm)になるよう決定 |
| DEM ズームレベル | 目標解像度 detailMm(既定 0.25mm)から市区町村ごとに選択 |
| フレーム分割数 | 全体幅 ÷ maxSectionWidthMm(既定 185mm)の切り上げ |
| 飛び地・離島 | 各市区町村の面積最大の連結成分のみ採用 |
省略可能。例(config/13.json — 東京都の島嶼部を除外):
{
"excludeCodes": ["13361", "13362", "13363", "13364", "13381", "13382", "13401", "13402", "13421"]
}| キー | 既定値 | 説明 |
|---|---|---|
targetSizeMm |
400 | パズル全体の長辺サイズ (mm) |
maxSectionWidthMm |
185 | フレーム 1 セクションの最大幅 (mm) |
detailMm |
0.25 | ピース表面の目標解像度 (mm)。細かくするとデータ量が二乗で増える |
zScale |
1.0 | 高さ方向の倍率(平野部の多い県は 2〜3 に上げると立体感が出ます) |
baseThickMm |
3.0 | ピースのベース厚さ (mm) |
pieceClearanceMm |
0.3 | ピース外周の収縮量 (mm) |
frameClearanceMm |
0.3 | フレームポケットの拡張量 (mm) |
excludeCodes |
[] | 除外する市区町村コード(離島など) |
keepAllPartsCodes |
[] | 飛び地・離島をすべて残す市区町村コード |
n03Year |
2024 | 使用する N03 データの年度 |
- 南北に長い都道府県は、フレームは横方向にしか分割されないため、セクションの高さがプリントベッドを超える場合があります。その場合は
targetSizeMmを小さくしてください。 - 離島で構成される市区町村は既定で最大の島のみが採用されます。全島を残す場合は
keepAllPartsCodesに指定してください(ピースが複数の分離したパーツになります)。
public/data/index.json 生成済み都道府県一覧
public/data/{pref}/manifest.json 市区町村一覧
public/data/{pref}/boundary/{code}.json 境界 GeoJSON
public/data/{pref}/stl/{code}.stl 市区町村ピース
public/data/{pref}/stl/frame_N.stl フレーム
public/data/{pref}/frames.json フレーム一覧
.cache/dem/ DEM タイルキャッシュ(都道府県間で共有)
main への push で GitHub Actions がデータ生成・ビルド・GitHub Pages デプロイを実行します。
ビルド対象の都道府県は .github/workflows/deploy.yml の PREFECTURES 環境変数で指定します。
| データ | 提供元 | ライセンス |
|---|---|---|
| 行政界 | 国土交通省 国土数値情報 N03 | 国土数値情報利用規約 |
| 標高 DEM | 国土地理院 基盤地図情報数値標高モデル | 測量法に基づく国土地理院長承認 |
本データは上記データを加工して作成したものです。