# 派生データと再現手順

このフォルダは、館山市・南房総市白浜町の対象12町丁を検算するための配布物です。サイトでは、このうち6町丁を独立ページにし、残り6町丁は市ページの節にまとめています。

## ファイル

- `chome_summary.csv`: 町丁別の世帯数、データ別棟数、統合後棟数、距離帯、境界付近、±14m参考集計。
- `buildings_derived.geojson`: 統合後の建物形状（RFC 7946に合わせたWGS84経緯度）、出典区分、内部代表点方式、丸め前計算から保存した距離（表示は小数3桁）。
- `duplicate_audit.csv`: 同一建物として除いた形状と残した形状。
- `assignment_audit.csv`: 町丁境界上、または複数町丁に形状がまたがる建物。
- `offset_audit.csv`: Microsoft 建物の位置ずれ補正を町丁ごとに検算する表。局所補正・再補正・建物単位補正の件数、残差をずらすと60%以上重なる組、補正前後の棟数を記録。
- `CDLA-Permissive-2.0.txt`: Microsoft由来形状を含む配布データに同梱するライセンス本文。公式配布元は https://cdla.dev/permissive-2-0/ 。

## 固定した方法

1. e-Stat 2020年小地域境界（館山市・南房総市）を読み、同じ町丁名に分かれた複数の調査区を結合する。世帯数は結合した調査区の合計とする。
2. OSMは `building=*` のwayとrelationを形状で取得する。`building:part` だけの形状は親建物との二重計上を避けるため棟数から除外する。
3. MicrosoftとOSMの双方をEPSG:6677（平面直角座標系第IX系）へ変換して計算する。配布するGeoJSONの形状だけはWGS84経緯度へ戻す。
4. 双方の内部代表点を面積重心に統一する。実際のパネル・パワコン位置とは呼ばない。
5. 補正前に重なりが小さい方の30%以上となる一対一候補を作る。このうち60%以上の対応組を基準に、Microsoft建物ごとに200m以内の対応組のX・Y差中央値で平行移動する。近くの対応が3組未満なら町丁中央値を使う。続けて100m以内の30%以上60%未満組で1回再補正し、10m以内に残る候補を建物単位で補正する。値が得られない場合は0mに置き換えない。
6. 補正後、形状の重なりが小さい方の60%以上を同一建物候補とし、OSMを残す。しきい値は変更しない。残った30%以上60%未満候補は、残差分ずらしたとき60%以上になる組数と補正後棟数に対する割合を`offset_audit.csv`に残す。
7. 代表点を町丁へ一意に割り当てる。境界上の複数候補は面積の小さい区域、次に区域コードで固定し、監査表へ残す。形状が複数町丁にまたがっても全体件数では1棟とする。
8. 代表点から、Overpassで取得したOSM `natural=coastline` までの最短距離を丸めずに判定する。OSM編集APIから取った旧海岸線は本番計算に使わない。
9. 距離帯は20／50／100／300／500／1,000mで排他的に数える。境界付近は各しきい値±14.0m。距離を一律+14m／-14mした参考集計も別に出す。
10. Overpassで取得した河川形状の端点のうち海岸線から100m以内を河口候補とし、町丁境界から500m以内の候補数を参考値として出す。河川網の完全性や現地の塩分遡上を示す値ではない。

## 再現コマンド

```sh
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
# e-Stat、OSM、Microsoftの固定入力を data/raw/ に置く（URL・版・SHA-256は ledger/sources.csv）
unzip -o data/raw/estat_tateyama_2020.zip -d data/interim/estat
unzip -o data/raw/estat_minamiboso_2020.zip -d data/interim/estat
.venv/bin/python -m src.fetch_data --delay 8
.venv/bin/python -m src.analyze
.venv/bin/python -m src.build_maps
.venv/bin/python -m src.write_image_ledger
.venv/bin/python -m src.write_sources
.venv/bin/python -m src.build_site --ads off
.venv/bin/python -m src.build_site --ads preview
.venv/bin/python -m src.build_site --public
.venv/bin/python -m src.reporting
.venv/bin/python -m src.check_site --dist dist
.venv/bin/python -m src.check_site --dist dist_preview
.venv/bin/python -m src.check_site --dist dist_public
.venv/bin/python src/check_linebreaks.py
.venv/bin/pytest -q
```

外部データは更新されるため、完全な同一結果の再現には、作業場では `ledger/sources.csv`、サイト配布物では同じ内容の `sources.csv` に記録したSHA-256と同じ固定入力を使います。Overpassの再取得は同じ時点のスナップショットにはなりません。

## 帰属とライセンス

- 出典：e-Stat（2020年国勢調査 小地域境界データ）を加工して作成。
- © OpenStreetMap contributors — https://www.openstreetmap.org/copyright （ODbL 1.0）。この派生データベースもODbL 1.0で提供します。
- Microsoft GlobalMLBuildingFootprints 2026-02-03, CDLA Permissive 2.0。データは現状有姿で、提供者の保証はありません。

