# 构建与重建方法

## 1. 获取全国正式数据库

1. 下载根索引：`https://diaoyucanmou.com/data/river-segment-v1-a8e1715d43fb0a61/catalog.json`。
2. 校验 SHA-256：`95c55cbc556b643c435af62bbd121721d0bedc688a2f466940e0799466cc7875`。
3. 按索引中的 `manifestPath` 下载 31 个省级清单；再按清单中的分块路径下载 3,632 个 JSON 分块。
4. 对每个对象使用清单中的 SHA-256 校验。跨省河流对象的 SHA-256 为 `e99d348d6e307e9692ef09b0f99b7ec1b4ae4bfc59882f590def23390cd80f36`。

这一路径提供完整 OSM 衍生数据库，不要求取得玉草集的商业评分算法或权重。

## 2. 从 OSM 源快照重建省级母库

每个 `nationwide/provinces/<code>/manifest.json` 记录 OSM 原始 payload 的 SHA-256、快照时间、行政区关系 ID 和母库输出 SHA-256。重建命令示例：

```bash
python3 river-segment-v1/nationwide/scripts/province_pipeline.py build \
  --province-code cn-11 \
  --source-payload <对应清单记录的原始 OSM payload> \
  --output-dir <临时输出目录>
```

流水线只读取命名 `river`、`canal`、`stream` 水道，执行行政区裁剪、几何简化/拼接、稳定标识和约 240 米确定性分段。精确参数由各省清单和脚本冻结。原始 OSM payload 不随本包重复分发；可按清单中的 Overpass/行政区条件重新取得，或直接使用第 1 节的完整数据库。

## 3. Build 31 北京开放水体层

`data/beijing-build31-open-water-layer.json` 是应用 Build 31 历史复合目录的确定性字段白名单投影。开放文件 SHA-256 为 `1ef98b4d163a6c229c40eaaeb774dc58260c0d339cc5c17ba9cb2a425fef9d23`；内部源文件 SHA-256 为 `a3ab6ce7ad290ec05583f038341d280505a39881f445a227167ed72dfbc37b38`。

JRC 处理：occurrence ≥ 75%，30 m，sieve 4，最小候选面积 2,500 m²。资源摘要记录 113 个匹配卫星水面、8 个仅卫星水面。为了复现来源证据，请使用 `sources.json` 中列出的官方 URL 与 SHA-256。

持有 Build 31 源资源的内部构建环境可执行：

```bash
python3 river-segment-v1/open-data/scripts/build_beijing_open_water_layer.py \
  --source river-segment-v1/app/Canmou/BeijingAIWaterCatalog.json \
  --output /tmp/beijing-build31-open-water-layer.json
shasum -a 256 /tmp/beijing-build31-open-water-layer.json
```

脚本只导出 `ALLOWED_WATER_BODY_FIELDS`，不导出候选钓点、推荐分数、发布/访问流程、管理证据或现场审核值；重建不需要商业算法或权重。

官网版本化副本：`https://diaoyucanmou.com/open-data/river-segment-v1-a8e1715d43fb0a61/scripts/build_beijing_open_water_layer.py`。

## 4. Build 31 北京河网白名单

`data/beijing-river-network.json` 从 App 内北京河网资源执行严格字段投影，只保留水道名称、类型、几何、稳定 ID，以及确定性分段的 ID 与几何。访问状态、候选状态、现场管理说明、到达记录、优先级和窗口等业务字段全部排除。

```bash
python3 river-segment-v1/open-data/scripts/build_beijing_open_river_network.py \
  --source river-segment-v1/app/Canmou/BeijingRiverNetwork.json \
  --output /tmp/beijing-river-network.json
shasum -a 256 /tmp/beijing-river-network.json
```

官网版本化副本：`https://diaoyucanmou.com/open-data/river-segment-v1-a8e1715d43fb0a61/scripts/build_beijing_open_river_network.py`。

## 5. 验证

```bash
python3 river-segment-v1/open-data/scripts/verify_open_data.py --remote
python3 -m unittest discover -s river-segment-v1/open-data/tests -v
```
