- 训练模型 (可选)
python CatBoost.py- 安装依赖
pip install -r requirements.txt- 启动服务
set MODEL_PATH=output/best_catboost_model.cbm
set MODEL_FEATURES=soil_moisture,rainfall,nitrogen
set MQTT_ENABLE=false
python app.py打开 http://127.0.0.1:5000/。
发布到 sensors/field1:
{
"device_id": "dev-1",
"admin_code": "110105",
"lat": 39.95,
"lon": 116.4,
"soil_moisture": 0.32,
"temperature": 18.4,
"rainfall": 1.2,
"nitrogen": 0.28
}默认使用 Open-Meteo;如需 ERA5 请在 services/weather.py 中替换 _era5_placeholder,并设置 WEATHER_PROVIDER=era5。
使用环境变量启用:
set LLM_ENABLE=true
set LLM_API_KEY=你的密钥
set LLM_BASE_URL=https://aistudio.baidu.com/llm/lmapi/v3
set LLM_MODEL=ernie-5.0-thinking-preview若未启用,将使用内置规则引擎作为回退。
python scripts/simulate_sensor.py可通过环境变量控制:
INGEST_URL(默认 http://127.0.0.1:5000/api/ingest)ADMIN_CODE(默认 110105)DEVICE_ID(默认 sim-001)INTERVAL_SEC(默认 5)
请将真实行政区 GeoJSON 替换 static/geo/china_admin_sample.geojson。
- 传感数据写入批处理或使用消息队列 (MQTT -> Redis -> Worker)。
- 预测接口缓存最近一段时间的结果,避免重复计算。
- 网格渲染采用请求窗口内裁剪,避免一次性加载全中国 1km 网格。
- 模型预加载并复用,避免重复加载。
- 使用 Python venv,预先编译 CatBoost 依赖。
- 通过
MQTT_ENABLE=true订阅本地网关的传感数据。 - 可以在开发板上关闭 SHAP、训练流程,仅保留
app.py服务。 - 若无公网,气象服务可替换为本地气象站或离线缓存。
推荐方案:使用阿里云 DataV 行政区 GeoJSON(含 adcode)并转换为 WGS84。
一次全量拉取:
python scripts\\build_admin_geojson.py --all分批运行(便于断点续跑):
python scripts\\build_admin_geojson.py --max-provinces 1
python scripts\\build_admin_geojson.py --finalize说明:DataV 数据为 GCJ-02 坐标,脚本会转换为 WGS84 并输出到 static/geo/china_admin_sample.geojson。
如需更高精度或商业授权,请使用 geojson.cn 的县级数据(付费,WGS84 版本)。