基于Python 的平均流量自动计算报送系统的设计与实现

2024-02-27 05:26
陕西水利 2024年2期
关键词:水情测站水文

方 昱

(商洛水文水资源勘测中心,陕西 商洛 726000)

日、旬、月平均流量信息报送是水情工作的重要任务之一。平均流量数据不能直接获取,需要通过计算获得。传统的计算方法是对一日不同时间观测的水位对应的流量采用算术平均法或面积包围法进行计算得到日平均流量。进入汛期,人工观测水位次数增加,特别是洪水期,水位变化起伏大,观测数据要反映洪水变化过程,因观测时距不等使用面积包围法计算比较繁琐,用时长、时效性差,计算过程中易出现错误,数据准确性难保证。同时,对于水位涨落急剧的河流,人工观测的水位计算出来的平均流量未必能够真实反映河流的实际平均流量。

随着水文自动化监测设施的建成,水位观测实现24 小时自动化在线监测。水位自动采集、自动传输、自动入库、自动检索,时效性强、质量高,为水文自动化打下基础。水位自动采集数据密集,能真实反映河道洪水变化过程。利用入库流量数据,进行平均流量的自动计算,能确保时效性和准确性,同时解放人力,提高测验能力。通过发挥现代科技的强大功能,可为水文工作带来更加便捷的数据处理和信息提升技术。

在此背景下,本文通过在商洛水文中心从事水情工作的实践,应用Python、pymssql、JSON、SQL Server 等相关技术,开发设计编写日、旬、月平均流量的自动计算报送系统。

1 相关技术介绍

1.1 Python

Python 是一门比较流行的编程语言,它提供了高效的数据结构,还能简单有效地面向对象编程。使用Python3.7 版本可以兼容win7 及以上的系统和Windowsserver2008 及以上的系统。

1.2 pymssql

pymssql 是一种SQL Server 的简化数据库接口,用于为Python 提供与SQL Server 连接的接口。使用该接口即可直接访问SQL Server 数据库,对数据库中的数据进行查询、修改等操作。

1.3 JSON

JSON 是JavaScript Object Notation 的简称,是一种轻量级的数据交互格式。使用JSON 格式的文件来存储本系统所需要的相关数据可以避免使用文本文件存储数据时由于空行或其他原因引发的一些未知错误。

1.4 SQL Server

SQL Server 数据库是Microsoft 开发设计的一个关系数据库智能管理系统(RDBMS),现在是全世界主流数据库之一,它具备方便使用、可伸缩性好、相关软件集成程度高等优势。

由于商洛水文水资源勘测中心所使用的数据库本身就为SQL Server,故本次开发直接针对SQL Server 数据库进行开发。

2 平均流量自动计算报送系统功能设计

通过对平均流量的计算方法及工作要求的分析,开发设计了能够实现该工作的相关功能,包括:①定时触发功能;②逐日平均流量计算功能;③旬、月平均流量计算功能;④自动报送平均流量入库功能。

2.1 定时触发功能

平均流量报送工作为每日8 时,要实现自动化计算并报送,系统就必须能够根据时间自动触发相关操作。该功能会不断监视系统的当前时间,当时间到达8 时整的时候,自动触发计算及报送功能。

2.2 日平均流量计算功能

该功能为系统核心功能。该功能会直接从水情实时信息数据库中读取对应测站在对应时间段内的流量数据,然后计算出日平均流量。《水文资料整编规范》(SL/T 247-2020)中要求以面积包围法求得的日平均流量作为标准值,因此本系统使用面积包围法进行计算(见图1),公式如下:

图1 面积包围法计算示意图

式中:Q为日平均流量,m3/s;a、b、c…n为观测时距,h;Q0、Q1、Q2…Qn为相应时刻的瞬时流量,m3/s。

我看到一个忙碌的身影,抵达古樟后,他就和几位摄影家一起,一直在顺光与逆光等诸多因素中纠结,想要为这次诗会找一个最佳的背景。

当无0 时或24 时的瞬时流量时,应根据前后相邻流量直线插补求得。

水位及流量数据在进入水情实时数据库之前由信息平台对异常数据进行筛查,本系统只对数据完整性进行检查。使用面积包围法进行日平均流量计算时,需要有0 时和24 时的流量数据,系统在读取流量数据后,会自动检查是否包含这两个数据。如果读取到的数据中没有包含这两个数据,那么系统会读取前一天的最后一条数据和计算当日的第一条数据通过内插法计算出0 时的流量数据;读取后一天的第一条数据和当日计算时间的最后一条数据通过内插法计算出24 时的流量数据。在数据通过完整性检查后,系统会使用面积包围法计算当日的日平均流量。

2.3 旬、月平均流量计算功能

《水文资料整编规范》中规定月平均流量以月内各日日平均值的总数除以该月的日数得之。因此,程序会在每月的1 日、11 日、21 日8 时,先计算前一天的日平均流量,然后从数据库中读取对应旬的每日日平均流量,最后使用算术平均法计算得到旬平均流量。在1 日8 时还会读取上一月所有的日平均流量通过算数平均法计算得到上一月的月平均流量。

2.4 自动报送入库功能

通过一系列计算后得到的平均流量数据,系统会通过测站编码、标志时间和统计时段标志来查询该条流量数据是否已经存在,若已经存在则会取消插入;若对应数据不存在,则会将平均流量信息插入到对应的数据库表中,达到自动报送的目的。这样做是为了避免当自动检测设备出现故障时,人工录入的数据被覆盖的问题。

3 数据库设计

系统读取的流量数据水情表为根据《实时雨水情数据库表结构与标识符标准》(SL 323-2011)中河道水情表ST_RIVER_R 所建,见表1。

表1 河道水情表ST_RIVER_R 表结构

系统在进行计算时,只需要读取该表中的测站编码STCD、时间TM 和流量Q 这三个字段即可进行日平均流量的计算。

系统报送平均流量的表为根据《实时雨水情数据库表结构与标识符标准》(SL 323-2011)中河道水情多日均值表ST_RVAV_R 所建,见表2。

表2 河道水情多日均值表ST_RVAV_R 表结构

系统在写入数据时会写入测站编码STCD、标志时间IDTM、统计时段标志STTDRCD 和平均流量AVQ 这四个字段,平均水位AVZ 由于没有下达任务,所以没有写入实时数据库。其中,统计时段标志STTDRCD 是根据规范中所规定的对应编码,在写入对应时段统计类型的数据时写入对应的代码。例如:日均流量的STTDRCD 代码为1,旬均流量为4,月均流量为5。统计时段长及其代码见表3。

表3 统计时段长及其代码

4 系统实现与应用

图2 系统JSON 格式配置文件

本系统的测站列表、报讯曲线以及数据库相关配置信息均通过JSON 格式的文件来存储,测站列表中前一个为测站编码后一个为测站名称,系统在计算时通过读取配置中的测站编码,然后到数据库中查询该站当日计算所需要的水位信息。数据库的相关配置也是写在JSON 格式的文件中,此处不再罗列。系统界面见图3。

图3 系统运行界面

右上角时间为系统当前时间,中间为系统日志,系统的每一次写入或取消操作均会显示在系统日志上,方便值班人员进行查看对比。当系统遇到错误时,例如:流量数据已存在取消插入时,会用红色字体醒目标出进行提示,时间、测站信息、正常入库的水位与流量等信息则会以蓝色字体标出。每一条信息都会标注出时间戳,方便值班人员检查系统时间是否有问题。

计算过程及报送过程全部在后台进行,启动系统时会直接执行一次所有测站的前一日平均流量的计算及入库操作,之后会在每日的8 时整自动触发一次,不需要人工操作。值班人员只需要每日8 时后通过数据库查询系统查看报送的流量是否在合理范围内,并与人工上报的平均流量进行对照。

5 结论

本文设计并实现了一个可以自动计算报送平均流量的系统,与传统人工观测计算并报送数据的方法相比较,本系统在自动监测设施的支持下,可以通过更加密集的河道水情信息观测,使得所计算的平均水位能够更加真实地反映河道的实际情况,使平均流量数据更加准确。同时,系统自动计算速度快、耗时少、计算结果准确,可以减轻基层水文测站的一部分工作量,提升工作效率,降低失误率。因此,本文所开发的系统具有一定的实用价值。

目前本文所介绍的系统已经在商洛水文水资源勘测中心开展试验运行,后续将对试验所得到的数据继续进行对比分析,来进一步验证本系统的相关计算数据是否符合要求。

猜你喜欢
水情测站水文
2022年《中国水文年报》发布
GNSS钟差估计中的两种测站选取策略分析
水文
水文水资源管理
曹新刚
全球GPS测站垂向周年变化统计改正模型的建立
测站分布对GPS解算ERP的影响分析
甜水情
水文
2011年辽宁省汛期水情分析