Skip to content

MON-001: 多源水情数据采集

优先级: 🔴 高 (18.5分) | 技术复用度: 85% | 实施周期: 2-3周

客户原话

"我们管理着一个流域,有50多个雨量站、30多个水位站、20多个流量站,还有水库的闸门开度、泵站的运行状态。这些设备来自不同厂家,有的是老设备用电台传输,有的是新设备用4G,有的还要人工抄表。每次汛期来了,数据到处找,有的在这个系统,有的在那个系统,有的还在Excel表里。等把数据汇总起来,半小时过去了,水情都变了。"

—— 某市水利局信息中心主任

业务场景描述

典型场景

场景1: 汛期实时监测

  • 汛期需要每5分钟采集一次水情数据
  • 雨量站50个、水位站30个、流量站20个,共100个监测点
  • 数据来源:遥测终端(RTU)、视频监控、人工上报
  • 数据传输:北斗卫星、4G/5G、电台、有线网络
  • 要求:数据实时性<5分钟,准确率>98%

场景2: 设备异常处理

  • 某雨量站突然不上报数据了
  • 可能原因:设备故障、通信中断、电池没电
  • 需要快速定位问题,通知维护人员
  • 在设备恢复前,使用周边站点数据估算

场景3: 数据质量控制

  • 某水位站上报数据突然从5米跳到50米
  • 明显是异常数据,可能是传感器故障或传输错误
  • 需要自动识别异常,标记为"可疑数据"
  • 通知值班人员核实,避免误判

核心痛点

  1. 数据源分散 - 不同设备、不同协议、不同系统,数据难以统一
  2. 实时性差 - 人工汇总慢,数据滞后30分钟以上
  3. 质量难控 - 异常数据难发现,影响后续决策
  4. 设备难管 - 设备状态不清楚,故障发现慢
  5. 历史数据难查 - 数据分散存储,查询困难

业务流程图

数据采集整体流程

数据质量控制流程

设备状态监控流程

业务规则详解

规则1: 数据采集频率

不同类型监测点的采集频率:

平水期:
- 雨量站: 每小时采集1次
- 水位站: 每小时采集1次
- 流量站: 每2小时采集1次
- 闸门/泵站: 每30分钟采集1次

汛期:
- 雨量站: 每5分钟采集1次
- 水位站: 每5分钟采集1次
- 流量站: 每15分钟采集1次
- 闸门/泵站: 每5分钟采集1次

特殊情况(暴雨、洪水):
- 所有站点: 每1分钟采集1次

汛期判定规则:

进入汛期条件(满足任一):
1. 日历时间: 6月1日 - 9月30日
2. 累计降雨量: 24小时累计>50mm
3. 水位超警戒: 任一水位站超警戒水位
4. 人工启动: 值班人员手动启动汛期模式

退出汛期条件(同时满足):
1. 日历时间: 10月1日之后
2. 累计降雨量: 连续7天<10mm/天
3. 水位正常: 所有水位站低于警戒水位
4. 人工确认: 值班人员确认退出

规则2: 数据质量检查

范围检查:

雨量数据:
- 最小值: 0mm
- 最大值: 200mm/小时 (超过视为异常)
- 累计雨量: 0-1000mm/天

水位数据:
- 最小值: 各站点死水位
- 最大值: 各站点校核洪水位
- 示例: 某水库死水位145m,校核洪水位160m
  有效范围: 145-160m

流量数据:
- 最小值: 0m³/s
- 最大值: 各站点设计流量×1.2
- 示例: 某河道设计流量5000m³/s
  有效范围: 0-6000m³/s

变化率检查:

水位变化率:
- 正常变化: <0.5m/小时
- 快速变化: 0.5-1.0m/小时 (黄色预警)
- 异常变化: >1.0m/小时 (红色告警)

特殊情况:
- 闸门开启时: 允许下游水位快速下降
- 洪峰到达时: 允许水位快速上涨
- 需要结合闸门状态和上游水情判断

雨量变化率:
- 正常降雨: <10mm/小时
- 大雨: 10-20mm/小时
- 暴雨: 20-50mm/小时
- 特大暴雨: >50mm/小时

一致性检查:

空间一致性:
- 同一河流相邻水位站,水位应呈梯度变化
- 同一区域雨量站,降雨量应相近

示例:
站点A水位: 50m
站点B水位: 48m (下游10km)
站点C水位: 55m (上游5km)
判断: 站点C数据可疑,上游水位应低于下游

时间一致性:
- 水位变化应连续,不应出现突跳
- 雨量累计应单调递增

示例:
10:00 水位: 50.0m
10:05 水位: 50.2m
10:10 水位: 48.5m (突降1.7m,可疑)
10:15 水位: 50.3m
判断: 10:10数据可疑,可能是传输错误

规则3: 设备状态判定

在线状态判定:

设备心跳周期:
- 正常模式: 每30分钟上报一次心跳
- 汛期模式: 每5分钟上报一次心跳

离线判定:
- 超过2个心跳周期未上报 → 设备离线
- 示例: 正常模式下,超过60分钟未上报 → 离线

在线率统计:
在线率 = 在线时长 / 统计时长 × 100%

示例:
统计周期: 24小时
离线时长: 2小时
在线率 = (24-2) / 24 × 100% = 91.7%

数据质量评级:

优秀: 在线率>99%, 异常数据<1%
良好: 在线率>95%, 异常数据<5%
合格: 在线率>90%, 异常数据<10%
不合格: 在线率<90% 或 异常数据>10%

示例:
某雨量站:
- 在线率: 98%
- 异常数据: 3%
- 评级: 良好

规则4: 数据补遗规则

设备离线时的数据补遗:

方法1: 周边站点插值
- 使用周边3个最近站点的数据
- 按距离加权平均

示例:
站点A离线,周边站点:
- 站点B: 距离5km, 雨量10mm
- 站点C: 距离8km, 雨量12mm
- 站点D: 距离10km, 雨量8mm

权重计算:
wB = 1/5 = 0.20
wC = 1/8 = 0.125
wD = 1/10 = 0.10
总权重 = 0.20 + 0.125 + 0.10 = 0.425

站点A估算值:
= (10×0.20 + 12×0.125 + 8×0.10) / 0.425
= (2.0 + 1.5 + 0.8) / 0.425
= 10.1mm

方法2: 历史数据推算
- 使用该站点历史同期数据
- 结合当前气象条件调整

方法3: 人工补测
- 派人到现场读取设备存储的数据
- 或人工测量补充

数据流转

输入数据

  1. 监测设备数据

    • 雨量: 时段雨量(mm)
    • 水位: 瞬时水位(m)
    • 流量: 瞬时流量(m³/s)
    • 闸门: 开度(%)、状态(开/关)
    • 泵站: 运行状态、流量、功率
  2. 设备状态数据

    • 设备ID、设备类型
    • 在线状态、信号强度
    • 电池电压、存储空间
  3. 配置数据

    • 站点信息: 名称、位置、类型
    • 阈值配置: 警戒值、异常值
    • 采集频率: 平水期、汛期

输出数据

  1. 实时水情数据 (给 MON-002, FORE-001, SCHED-001)

    • 标准化后的水情数据
    • 数据质量标识
    • 采集时间、上报时间
  2. 设备状态数据 (给运维系统)

    • 设备在线率
    • 数据质量评级
    • 故障告警信息
  3. 历史数据 (给数据分析系统)

    • 按时间序列存储
    • 支持快速查询和统计

关键业务问题

问题1: 如何处理不同厂家设备的协议差异?

场景:

  • 设备来自10多个厂家,协议各不相同
  • 有的用水文标准协议,有的用私有协议

解决方案:

  1. 协议适配器模式: 为每种协议开发适配器,统一转换为标准格式
  2. 协议库: 维护常见协议的解析库,新设备接入时选择对应协议
  3. 自定义协议: 对于私有协议,提供配置界面,定义数据格式和解析规则
  4. 协议测试: 提供协议测试工具,模拟设备上报,验证解析正确性

问题2: 如何保证数据实时性?

场景:

  • 汛期要求5分钟内看到最新数据
  • 但有的设备信号不好,传输延迟

解决方案:

  1. 多通道传输: 优先用4G,备用北斗卫星或电台
  2. 数据缓存: 设备本地缓存数据,网络恢复后批量上传
  3. 超时告警: 超过10分钟未收到数据,自动告警
  4. 数据推送: 采用推送模式,而非轮询,减少延迟

问题3: 如何识别和处理异常数据?

场景:

  • 传感器故障、传输错误导致异常数据
  • 如何自动识别,避免误判?

解决方案:

  1. 多维度检查: 范围、变化率、一致性三重检查
  2. 智能判断: 结合闸门状态、上游水情等辅助信息
  3. 人工复核: 可疑数据标记后,由值班人员复核
  4. 机器学习: 积累数据后,训练异常检测模型

问题4: 设备离线时如何保证数据连续性?

场景:

  • 设备故障或通信中断,数据缺失
  • 但后续计算需要连续数据

解决方案:

  1. 空间插值: 使用周边站点数据估算
  2. 时间插值: 使用前后时刻数据线性插值
  3. 标记缺失: 明确标记为"估算值",与实测值区分
  4. 事后补遗: 设备恢复后,从设备存储中补充历史数据

实施要点

第一步: 设备接入

需要准备的信息:

  1. 设备清单: 设备型号、数量、位置
  2. 通信方式: 4G/北斗/电台/有线
  3. 数据协议: 标准协议或私有协议
  4. 采集频率: 平水期和汛期频率

接入步骤:

  1. 配置设备参数(IP地址、上报频率)
  2. 开发或选择协议适配器
  3. 测试数据上报和解析
  4. 配置站点信息和阈值

第二步: 数据质量控制

配置质量检查规则:

  1. 各站点的数据范围(最小值、最大值)
  2. 变化率阈值(正常、预警、告警)
  3. 周边站点关系(用于一致性检查)
  4. 特殊情况规则(闸门开启、洪峰到达)

第三步: 监控告警

配置告警规则:

  1. 设备离线告警: 超过多久未上报
  2. 数据异常告警: 超限、突变、可疑
  3. 通信异常告警: 信号弱、传输失败
  4. 告警通知方式: 短信、电话、APP推送

第四步: 数据存储

存储策略:

  1. 实时数据: 存储在内存数据库(Redis),保留24小时
  2. 历史数据: 存储在时序数据库(InfluxDB),保留5年
  3. 原始数据: 存储在对象存储(OSS),永久保留
  4. 数据备份: 每天备份,异地存储

预期收益

量化指标

指标当前目标提升
数据汇总时间30分钟5分钟缩短83%
数据准确率85%98%提升13%
设备在线率90%98%提升8%
异常数据识别率60%95%提升35%
数据查询速度10秒1秒提升10倍

业务价值

  1. 实时性提升 - 数据实时汇总,为预警和调度争取时间
  2. 质量提升 - 自动识别异常数据,提高数据可靠性
  3. 效率提升 - 自动化采集,减少人工抄表和汇总工作
  4. 可追溯 - 完整的历史数据,支持事后分析和追溯

成功案例

案例: 某市水利局水情监测系统

背景:

  • 管理50个雨量站、30个水位站、20个流量站
  • 设备来自8个厂家,协议不统一
  • 数据分散在3个系统,汇总需要30分钟
  • 异常数据难发现,影响预警准确性

实施效果:

  • 统一接入100个监测点,数据实时汇总
  • 数据汇总时间从30分钟降至5分钟
  • 异常数据自动识别,准确率95%
  • 设备在线率从90%提升至98%
  • 数据查询速度提升10倍

客户反馈:

"以前汛期来了,要到处找数据,等汇总好都半小时了。现在打开系统,所有数据一目了然,5分钟内就能看到最新水情。异常数据也能自动识别,不用担心被错误数据误导了。"

相关场景

常见问题

Q1: 如何处理设备时钟不准的问题?

A:

  • 设备上报时,服务器记录接收时间
  • 如果设备时间与服务器时间差异>5分钟,自动校正
  • 定期向设备下发时间校准指令
  • 使用北斗或GPS授时,保证设备时钟准确

Q2: 如何处理大量历史数据的存储和查询?

A:

  • 使用时序数据库(InfluxDB、TimescaleDB)
  • 按时间分区存储,提高查询效率
  • 冷热数据分离,热数据(近1年)在SSD,冷数据在HDD
  • 提供数据降采样,查询长时间跨度时使用小时或天级数据

Q3: 如何保证数据安全?

A:

  • 数据传输加密(TLS/SSL)
  • 数据存储加密(AES-256)
  • 访问权限控制(RBAC)
  • 操作日志审计
  • 定期备份,异地容灾

Q4: 如何与现有系统集成?

A:

  • 提供标准API接口(RESTful API)
  • 支持数据推送(WebSocket、MQTT)
  • 支持数据订阅(按站点、按类型订阅)
  • 提供数据导出(CSV、Excel、数据库)

基于 AI 辅助开发,快速、灵活、可靠