Metadata-Version: 2.4
Name: skby-modeling
Version: 0.1.0
Summary: SKBY 时空变元模型在线建模业务核心：框选边界 -> 图层提取 -> 参数/降雨/sim 生成 -> 本地落盘 -> pyskby 计算 -> 结果读取。独立于 LLM skill 流程编排，可单独使用。
Author: wly
License: Proprietary
Project-URL: Homepage, https://pypi.org/project/skby-modeling/
Keywords: skby,hydrology,modeling,oms
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: requests
Requires-Dist: shapely
Requires-Dist: matplotlib
Requires-Dist: pyshp
Requires-Dist: pyskby

# skby-modeling

SKBY 时空变元模型在线建模的**业务核心**包。独立于 LLM skill 的流程编排，可被任意宿主（agent skill / Web 后端 / 脚本）通过 `pip install` 使用。

## 功能

- 边界解析：GeoJSON / WKT / bbox / 本地边界文件路径
- 图层提取：ArcGIS 服务查询 NODE / RIVL / WATA / USLU / SLTA
- 参数生成：`params-testnew.csv`（对齐 C# / JS 参考实现）
- 降雨生成：`data-test.csv`（固定雨量 或 数据库实时降雨）
- sim 落盘：工程/单元/场次 三级目录 + GeoJSON + 清单
- 计算：调用 `pyskby`（替代 Java RunModel.jar）
- 结果：读取 `outlet.csv` → 表格摘要 + 过程线 PNG

## 安装

```bash
pip install skby-modeling
```

## 使用

### 1. 注入 Token（可选）

雨量站 / 数据库降雨查询需要 MXPT Token。包本身**不 import** 宿主工程的 auth 模块，由宿主注入：

```python
import skby_modeling

# 宿主在启动时注入有效 token（可为空，空时走兜底虚拟雨量站）
skby_modeling.set_token("your-jwt-token")
```

### 2. 端到端建模

```python
from skby_modeling.pipeline import build_skby_model
from skby_modeling.runner import run_calculation_pyskby, read_result

build = build_skby_model(boundary_text="109.55,23.05,109.62,23.10")
if not build.get("ok"):
    raise SystemExit(build.get("message"))

unit = build["unit"]
scenario_dir = build["scenario_dir"]

run = run_calculation_pyskby(unit, scenario_dir)   # pyskby 计算
view = read_result(unit, scenario_dir)             # 结果 + 过程线图
print(view["summary"])
```

### 3. 仅参数提取

```python
from skby_modeling.params_csv import generate_skby_param_csv
# 需要先构造 context，参见 pipeline.build_skby_context
```

## 数据源与输出目录

- ArcGIS 图层服务 URL 在 `skby_modeling.config.DATA_SOURCES` 配置
- 输出目录：环境变量 `SKBY_OUTPUT_ROOT`（默认 `modeling_output`），工程落在 `{root}/work/`
- 每次 `build_skby_model` 会清空 `{root}/work/`，只保留最新工程

## 开发

```bash
cd packages/skby-modeling
pip install -e .
```
