十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

SL 247-2020水文整编规范解读:数据考证、定线与合理性检查

SL 247-2020水文整编规范解读:数据考证、定线与合理性检查 简介《SLT 247-2020 水文资料整编规范》是水利行业现行水文资料整编标准适用于水文勘测、资料整编、水库调度与流域管理等相关人员用于统一水位、流量、潮流量、泥沙、冰凌、降水蒸发等要素的整编流程、定线精度与资料审查复审要求。资源为10.7MB的PDF文件共1个文件内容为规范扫描/电子全文包含前言、范围、术语定义、整编内容与定线精度、各水文要素整编方法、资料审查/复审、附录表样等完整章节可直接查阅对照。目前已有722人学习下载。读者可借此掌握测站考证、关系曲线检验、河道与水工建筑物流量整编等具体方法并利用附录中的表样与填制说明规范成果整理适合作为基层水文工作者、水利院校师生及从事水文数据分析的工程技术人员日常参考和案头备查。1. SL 247-2020 水文资料整编规范整编不是汇总是数据质量红线交接水文数据时如果对方递过来的是一份没有整编说明的逐时水位流量表任何人都会本能地怀疑数据能不能直接进模型。SL 247-2020《水文资料整编规范》水利行业标准编号也常写作 SL/T 247-2020解决的就是这个问题它规定了水文观测资料从原始记录到最终成果表的全流程处理要求核心是考证、整编、合理性检查和成果汇编四个环节。这套规范表面上是给水文站定流程实际上把数据清洗、一致性验证和版本控制这些 IT 工程师每天在做的事制度化了。对水文信息化平台建设者、数据治理工程师和需要处理多源水文时间序列的分析师来说读它等于拿到一份行业级的数据质量标准清单。2. 整编前置的数据考证与预处理原始观测怎么变成可信数据集水文站每天产生的原始数据量并不大真正麻烦的是这些数据的“来历”不清楚。常见做法是先完成考证再做预处理然后才进入整编计算。很多自动化系统把考证这一步直接省掉结果就是成果表算出来了却说不清水位基面是黄海高程还是假定基面断面有没有在汛期发生迁移。这类问题在后续做长序列趋势分析时会被无限放大。2.1 考证这一步在查什么测站沿革、基面与大断面考证在水文整编里的含义接近 IT 里的数据溯源审计。它要确认的是测站是否迁移过位置、基本水准点有没有变动、水位基面是否一致、大断面在历年冲淤后发生了多大变化、仪器换过几次型号。任何一项缺失都可能导致成果表里的水位和流量数据与历史序列不在同一个参考系。实操层面考证对象可以收敛为三类。一是测站沿革包括站址经纬度、建站时间、观测项目变更记录二是高程基准包括基面类型黄海基面、假定基面、冻结基面和引据水准点的最新校测结果三是断面特性包括断面位置、断面形状变化和零点高程。这三类信息共同决定了后续整编计算是否能把不同年份的数据拼成一条连续序列。我一般会先在数据库里建一张测站考证表把每次校测、每次断面测量的结果都作为独立记录存下来带生效时间和作废时间而不是只在站点信息表里更新。这样当发现某段水位流量关系出现系统性偏移时可以按时间窗口回溯是断面变化、基面改算还是仪器问题。2.2 缺测与异常数据的处理规则从插补到剔除的判定边界原始观测数据进入整编前必定要处理缺测和异常。整编规范对缺测的处理原则是“先判断成因再选择方法”严禁不加说明直接剔除或随意插值。常见场景的处置规则可以整理成一张对照表数据场景处理方法判别要点单点缺测12 个时次线性插补或相邻时段平均插补值不得超过邻近时次变化幅度的合理范围短期连续缺测数小时按涨落趋势插补或与相邻站相关分析至少有一个完整涨落过程作为插补依据长期缺测数日以上不插补整段留空并在说明中标注水位流量过程受降雨、闸门调度影响时插补不可靠明显异常值先核对原始记录确认无误后标记剔除需同时保存原始值、核对人和核对日期时次错位按考证后的观测时次修正时间戳常见于遥测站换终端或时钟漂移插补的关键不在于数学方法而在于边界条件。线性插值只适用于水位缓变的平水期洪水期的缺测要用上下游站的水位过程相关来推否则插入的峰值完全不可信。对于做数据平台的团队我建议在数据表中同时保留原始值、整编值和标记字段三个字段缺一不可这是后续争议追溯的基础。2.3 用 pandas 对原始水文观测做连续性检查的最小脚本对已经接入数据库的原始观测可以用一段 Python 快速完成预处理前的体检不需要等专门的整编软件import pandas as pd import numpy as np df pd.read_csv(station_level.csv, parse_dates[dt]) df df.sort_values(dt) # 按观测时间差定位缺失时次遥测站常见间隔为 5 分钟或 1 小时 df[gap_hours] df[dt].diff().dt.total_seconds() / 3600 median_gap df[gap_hours].median() df[is_gap] df[gap_hours] median_gap * 1.5 # 水位值域检查上下界来自考证成果不是拍脑袋取整 level_min, level_max -1.0, 120.0 df[flag] np.where( (df[level] level_min) | (df[level] level_max), range_error, np.where(df[is_gap], gap, ok), ) # 统计每个自然日的缺测时次占比 df[day] df[dt].dt.date daily_gap_rate df.groupby(day)[is_gap].mean() print(daily_gap_rate[daily_gap_rate 0].head(10))这段代码做了三件事用diff()找出时间间隔异常的记录用于识别缺测位置用考证得到的最高/最低水位做值域检查按自然日统计缺测占比快速定位哪些天不能进入整编计算。median_gap * 1.5这个阈值是经验值如果遥测设备存在周期性离线建议改为固定阈值值域上下界必须由考证结果提供否则会把极端洪水过程当成异常剔除。3. 日平均流量推求与水位流量关系定线整编规范的核心算法层预处理做完进入整编计算阶段。这个阶段要回答两个问题一天的平均流量到底是多少、实测的水位和流量点据如何变成一条可用于推算逐时流量的关系曲线。这两个问题的解法都直接写在整编规范里也是和通用数据处理差别最大的地方。3.1 面积包围法推求日平均流量不等时距数据的标准解法水文站观测流量的时次并不均匀平水期可能一天测两次洪水期可能一小时测好几次。直接对这些流量取算术平均会严重低估洪水段的贡献规范推荐的做法是面积包围法本质是时间加权积分def daily_mean_by_area(df): # df 需包含 dt时间和 q实测流量单位 m3/s两列 df df.sort_values(dt) t df[dt].astype(int64) / 10**9 # 转为秒级时间戳 q df[q].values # 梯形面积积分对时间-流量过程线逐段求面积再除以总时长 total_area np.trapezoid(q, t) total_seconds t.iloc[-1] - t.iloc[0] return total_area / total_seconds这里用的是np.trapezoid做梯形积分对应面积包围法的标准形式相邻实测点之间按梯形计算面积再除以时段总长。使用前提是这套数据必须覆盖一个完整的日过程如果当日只有平水段而没有测到洪峰算出来的日均流量会系统性偏低这种情况不能强行用面积包围法要退回过程分析。3.2 水位流量关系定线单一线、临时曲线与连时序法的选型日平均流量的另一个推求路径是先定水位流量关系曲线再用逐时水位查算逐时流量最后聚合出日均值。定线方法的选择要依据断面特性这是整编里最有经验含量的部分断面情况定线方法要点说明河床稳定、无回水影响单一线法点据密集且分布均匀曲线呈单一关系洪水期受冲淤影响临时曲线法按冲淤时段分段定线段间曲线要有过渡处理受变动回水顶托改正水位法用实测比降修正水位把回水影响剥离受洪水涨落影响连时序法按时间顺序连接绳套曲线适用于峰谷变化快的站选型错误的典型表现是定线后残差呈现明显的系统偏差比如上游水库放水导致回水顶托却仍用单一线涨水段流量偏低、落水段偏高。我判断该换方法时有个土办法把残差按时间顺序画出如果连续多日同一方向偏差且上下游站同步出现基本可以判定定线方法或者断面参数出了问题。3.3 定线误差与合理性检查的数字化实现规范对定线质量有明确的误差控制要求常见做法是控制三组指标系统误差衡量曲线是否有整体偏移随机不确定度衡量点据分散程度标准差衡量单点拟合精度。IT 化实现时可以维护一张定线误差表每次重新定线后计算并比对上一版。def check_rating_curve(measured_q, curve_q): # 输入实测流量和由水位流量关系曲线推算的流量 residual measured_q - curve_q rel_error residual / measured_q * 100 # 系统误差平均相对误差应控制在 ±2% 以内 sys_error np.mean(rel_error) # 随机不确定度95% 置信水平的相对误差区间 std_error np.std(rel_error, ddof1) uncertainty 1.96 * std_error # 过滤掉残差超过三倍标准差的点据标记为待复核 outliers np.abs(residual) 3 * np.std(residual) return {sys_error: sys_error, uncertainty: uncertainty, outliers: outliers}三个指标的合格阈值规范里有明确数值但在平台里落地时我更建议固化成可配置参数因为不同测站类型河道站、堰闸站、水库站允许的误差范围不同。注意这里不能用 R² 代替不确定度R² 反映的是相关程度而不是误差水平两个量纲完全不同的指标混用是常见误用。4. 整编成果的层级结构与归档字段逐日表、月年统计与数据编码整编计算完成后所有结果要整理成标准格式的成果表。这个环节的决定直接影响数据库 schema 设计和后续应用系统的对接成本。整编成果不是一张大宽表而是有明确层级关系的一组表。4.1 成果表从逐日到逐年的三层结构标准的水文整编成果分为逐日表、月年统计表和特征值表三层每层之间是严格的聚合关系。逐日表是最细粒度记录每日平均水位、平均流量以及日特征值最高/最低水位、最大/最小流量月年统计表在逐日表基础上按月、按年聚合特征值表单独存放历年极端值和出现时间。成果层级时间粒度典型内容数据粒度说明逐日表日日平均水位、日平均流量、日最大流量一条记录对应一个测站一天月年表月 / 年月总量、月平均、年总量、年平均由逐日表聚合生成必须能反查特征值表历年年最高水位、最大流量及发生时间跨年检索的入口常用于设计洪水计算这三层表之间有一条不可破坏的约束月年统计表中的任何数值都必须能由逐日表重新聚合得到。在数据库实现里我一般会禁用直接手工修改月年表所有修正都从逐日表发起再触发聚合刷新从机制上避免两层数据不一致。4.2 测站编码与元数据设计让每条整编成果可追溯整编成果表最重要的字段不是数值而是标识和元数据。每个测站要有全国统一的站码每个时段要有明确的起止时间每条成果要有基面信息和整编方法标记。元数据字段至少包括测站编码、基面类型、水位零点高程、整编方法代码、定线版本号、整编人、审核人、整编日期。实操中容易忽略的是定线版本号。水位流量关系会因断面冲淤重新定线同一测站在一年之内可能有多条曲线同时生效。如果没有版本号逐日表里的流量查算结果无法回溯到当时用的哪条曲线。我在设计表结构时会把定线版本作为外键挂在逐日表上查数时必须带版本过滤这条规则比任何校验都更能保证成果可追溯。4.3 成果审查的完整性校验闭环成果审查是进入存档前的最后一道关规范要求整编成果经过初编、复编和审查三道程序。IT 系统能帮上忙的是把这三道程序固化为自动校验任务。常见做法是写一套批量脚本逐表检查逐日表记录数是否完整、日期是否连续月年统计与逐日聚合结果是否一致特征值表是否与逐日表极值吻合水位流量关系版本是否全部有审核记录。5. 整编成果快速复核一套 CUSUM 叠加水量平衡的实用技巧拿到一份已经整编好的成果表怎么快速判断它可不可信我有两套独立的验证手段一套看时序漂移一套看空间的一致性两者配合可以在十分钟内定位问题时段。5.1 用 CUSUM 控制图捕捉定线系统性漂移水位流量关系定线后残差在理想情况下应围绕零均值随机波动。如果断面持续淤积或水准点发生缓慢变动残差会沿同一方向缓慢累积普通残差图很难看出来但累积和控制图CUSUM可以。def cusum_filter(residual, k0.5, h5.0): # residual 为定线残差建议先减去均值再除以标准差完成标准化 s_pos, s_neg 0.0, 0.0 signals [] for x in residual: # 上累积量只累积正向偏移下累积量只累积负向偏移 s_pos max(0.0, s_pos x - k) s_neg min(0.0, s_neg x k) signals.append(1 if s_pos h or s_neg -h else 0) return np.array(signals)参数k是允许的漂移幅度取 0.5 表示允许残差在正负半个标准差内自由波动h是控制限经验起点取 5 个标准差。当控制图连续报警时优先检查该时段内是否发生过断面测量、水位计换装或基面改算。5.2 上下游水量平衡的快速偏差定位空间维度的验证方法是水量平衡对任一河段下游站流量应约等于上游站流量加区间入流减区间取水。做快速复核时不需要精确计算用日平均流量对比即可# down 为下游站日均流量up 为上游站日均流量 # inflow 为区间支流或雨洪的粗略估值无资料时可取 0 balance_diff down - up - inflow balance_rate balance_diff / down * 100 alert_days balance_rate[balance_rate.abs() 20]偏差率超过 20% 的日期列出后优先查区间降水记录和取水口调度记录而不是直接怀疑下游整编结果。如果偏差在时间上连续多日存在且方向一致大概率是其中某一站的水位流量关系曲线过期需要重新定线。把 CUSUM 报警时段和水量平衡偏差时段做交集往往能直接命中问题节点这就是整编规范中合理性检查落到代码后最有效率的一种用法。本文还有配套的精品资源点击获取
返回列表