# SORAH DATA SCAPE — 九つの題材を描いたコード

2026-09-13 〜 09-19 に検証した九題材の作画コード一式。**作品の描画器（Python・正距円筒）** にあたる部分で、
2026-09-19 の図法の決定（案 C：描画器を二つ持つ）により、Engine 移行後もこの系統が作品側の描画器として残る。

書き出し日: 2026-09-20

---

## 題材とデータ源

| | 題材 | 一次データ | 入口スクリプト |
|---|---|---|---|
| 01 | 北極海氷 | NSIDC Sea Ice Index v4（9 月・EPSG:3411・25 km）＋ Natural Earth 50m。**今後 JAXA AMSR2 に置き換え**（許諾取得済み。NSIDC は区分 C で衛星画像は再販不可のため参照に降格） | `pure4.py`（静止画）／`video.py`（映像） |
| 02 | 森林 | JAXA PALSAR-2 FNF（許諾取得済み）／Hansen GFC v1.13（損失年の参照。**樹冠被覆は 2000 年基準**で FNF の被覆・非被覆とは別の量） | `forest1.py`／`gfc.py` → `render_gfc.py` |
| 03 | 平均気温 | HadCRUT5（Met Office Hadley Centre, OGL v3）1850–2025 | `temp2.py`（第 2 世代）／`final_video.py` |
| 04 | 河川 | HydroRIVERS v10（WWF / HydroSHEDS。単体再配布不可、加工物のみ） | `draw6.py`／`video_c.py` |
| 05 | 震源 | USGS ComCat 1973–2025 M≥5.0（PD）＋ ETOPO 2022（PD） | `q1.py`／`bg.py`・`relief.py`／`video_q2.py` |
| 06 | 船舶と航空 | 世界銀行・IMF 船舶交通密度（AIS **2015-01〜2021-02 の固定集計**、年別ではない）／GFW AIS presence／OpenFlights routes.dat（ODbL） | `ships.py`・`flights.py`・`combo.py`／`ships_years.py` |
| 07 | サハラの砂塵 | NASA GMAO GEOS-FP `DUEXTTAU` 3 時間ごと・0.25°（**同化であって予報ではない**） | `dust.py`・`world.py`／`video_d.py`・`video_w.py` |
| 08 | 全エアロゾル | AVHRR Deep Blue V001（NOAA-18、1° 月次、2006–2011） | `aer.py`／`video_a.py` |
| 09 | サイクロン | IBTrACS v04r01 1980–2025 main track | `cyc.py` |

> **09 サイクロンは統合仕様デッキから削除済み**（検証が済んでいないため）。コードは記録として同梱する。

---

## 構成

```
01_sea_ice/      pure3–6.py  geo.py  build.py  video.py
02_forest/       forest1.py  fetch_fnf.py  nyt.py  build.py  sylvania.py  digital.py  gfc.py  render_gfc.py  p.json
03_temperature/  temp1.py  temp2.py  video_temp.py  final_video.py  transitions.py  trans2.py  p.json
04_rivers/       draw.py 〜 draw6.py  cache.py  dist.py  rivers_baseline.py  video_c.py  video_rivers.py  p.json
05_earthquakes/  fetch.py  q1.py  q3.py  bg.py  contours.py  relief.py  video_q.py  video_q2.py
06_transport/    ships.py  flights.py  combo.py  video_t.py  video_t2.py  ships_years.py  ships_video.py
07_dust/         fetch.py  dust.py  world.py  video_d.py  video_w.py
08_aerosol/      aer.py  tex.py  video_a.py
09_cyclones/     cyc.py
_shared_lib/     render.py  render3.py  render_v1.py  pure4.py  measure.py  loop.py  g1.py  build.py
```

`draw.py` → `draw6.py`、`pure3` → `pure6`、`temp1` → `temp2` のような連番は**世代**で、番号の大きいものが最新。
途中の版は、何を試して何を捨てたかの記録として残してある。

---

## 動かすときの注意

**絶対パスが埋まっている。** すべて `/home/claude/<題材>/...` を前提に書かれており、実行前に書き換えが要る。
とくに `_shared_lib` は元の配置では `/home/claude/loop/lib` と `/home/claude/dv/cards` にあり、
各スクリプトが `sys.path.insert` でそこを指している。

**データは同梱していない。** nc4・GeoTIFF・npz・CSV などの入力は各題材の `fetch*.py` か提供元から取り直す。
`p.json` は作画パラメータで、データではない。

**環境。** Python 3、numpy・scipy・Pillow・rasterio／tifffile・pyproj・xarray／netCDF4・matplotlib、
映像は ffmpeg。フォントは Noto Sans CJK と Poppins。

**秘密情報は含まない。** GFW のトークン、鍵ファイル、環境変数の類はすべて除外済み。
`ships_years.py` などはトークンを外部ファイルから読む前提なので、そのパスを自分の環境に合わせること。

---

## 規範との関係

この九題材は、SORAH DV Library の規範（norm.RULES）と、視覚言語 v4 の「同一性の八条」に沿って描かれている。
2026-09-19 以降は次の二点が効く。

- **図法** — 作品側は正距円筒のまま。探索面（アプリ・Web）は MapLibre の Mercator ＋ 地球で別に描く。
  同一性 第 8 条は、同じ描画器・同じ図法の中でだけ画素で検査し、描画器をまたぐときは
  「同じ (t, 経度, 緯度) → 同じ階級 → 同じ色」で検査する。
- **時間の型** — A 場の時系列／B 事象の一覧／C 周期／D 構造の順序 の四つに分かれた。
  order タイル（画素ごとの出現時刻ひとつ）は D 専用で、A には使えない。

関連文書は project の `claude/data_scape_decisions_20260920.md`、`claude/data_scape_0a_verification_20260919.md`、
`claude/data_scape_visual_language_v4_20260918.md`。
