吴昱驹 龙群 何昌奋
(珠江水文水资源勘测中心 广东省广州市 510380)
感潮河段的水文资料不同于一般的内陆径流河道。
海洋潮汐的周期变化规律近似于正弦曲线。而在感潮河段的潮水位,受潮汐、上游径流和风浪等多重影响,潮水位呈类似潮汐的周期性变化,高潮、低潮交替出现。与潮水位类似,感潮河段的流量也呈周期性变化,涨急、涨憩、落急、落憩依次循环出现。随着潮水位、潮流的周期性变化,一个潮流期内悬移质含沙量也出现两个沙峰[2]。
感潮河段复杂多变,在水文资料整编定线方面,因无法建立稳定的水位流量关系,单一关系不能满足要求。感潮河段传统上常采用定潮汐要素法、合轴相关法等处理推流。随着在线测流系统的普及,应用代表流速法推流逐步成为主流,通过实测逐时流速进行流量整编。
针对感潮河段水文资料特点,提出以下潮水位处理方法供整编软件参考。本文所有涉及算法在.NET Framework 4.0下用C#编程语言实现。
高(低)潮是潮水位的特征值,通过软件的自动识别能够极大地提高潮水位整编效率。
2.1.1 高潮位的识别
下面以高潮为例说明软件自动识别高潮。高潮是一个潮流期内的水位最高值,存在以下特点:
ZH=max(Zt),Ts≤t≤Te
其中ZH为高潮潮位,Zt为t时刻潮位,Ts、Te为潮流期开始和结束时刻。
另根据潮水位过程线接近正弦曲线的特性,高潮出现在波峰位置。利用该特点可设置时间Δt作为判据,若Zt大于等于其前、后Δt时间范围内的所有数据,Zt即可判断为高潮,否则不是高潮。低潮的识别同理。
通过该方法遍历全年的水位数据,即可识别全年高(低)潮。
2.1.2 出现时刻识别
在潮水位观测中,水位采集间隔一般采用5min,水位观测精确到0.01m。仍以高潮为例,当发生高潮时,高潮位会持续几分钟乃至几十分钟(即平潮),这将导致潮流期内最大值不唯一,因此上一节的方法仅可识别高潮潮位,无法识别高潮出现位置。不妨通过上节所述算法,先将所有高潮数据标记出来,如图1 所示,标记出6个高潮数据。
通常将平潮期中间时刻作为高潮时刻,此时带来第二个问题:若平潮期间数据个数为奇数,毫无疑问中间时刻为高潮时刻;若平潮期间数据个数为偶数(如图1 ,有6个高潮数据),若取中间附近的前者(第3个)或后者(第4个)会带来统计偏差。最好是通过一定的方法,将取前者、后者的次数平均分配。
图1:高潮附近过程线图
图2
针对该问题,引入“奇取后,偶取前”的规则,将偶数个高潮出现时刻平均分配。
设平潮期间出现偶数个高潮数据,其第一个数据为当年第n个数据。因总个数为偶数,其后的高潮数据个数必为奇数,最后一个可表示为n+(2k+1)。平潮期中间时刻在即n+k+0.5处。此时以n+k的奇偶作为判据,若n+k为奇数,则取n+k+1(后者)为高潮时刻;若n+k为偶数,则取n+k(前者)为高潮时刻。通过对(n+k+0.5)进行“四舍六入,奇进偶舍”保留至整数位,即可完成以上规则。同理,对于奇数个高潮数据的情况可以直接计算得出。
综上,无论是奇数或偶数个的情况,高潮出现位置均可表示为:
其中,N表示高潮出现在第N个数据,s为首个高潮出现在第s个数据,e为最末高潮出现的位置,Round为“四舍六入”函数,第2个参数表示保留的小数位。低潮同理进行识别。
2.1.3 算法实现流程
以下简述计算机软件算法进行识别流程。
(1)定义高低潮位识别函数。输入任意时刻潮位数据Z,同其前后Δt时间内的数据进行对比,若Z大于等于所有区间内的数据,则对数据标记“H”表示其为高潮;若Z小于等于所有区间内的数据,则对数据标记“L”表示其为低潮;两者都不是,标记为“o”。
(2)遍历所有数据进行标记,得到与数据对应的高低潮类别序列,过滤掉“o”仅保留标记“H”、“L”,如:“HHHHLLHLLLH……”。
(3)计算相同标记的首尾位置,应用公式计算中间位置。对中间位置进行“四舍六入”运算,作为保留标记位置,其余位置标记为“o”。余下标记“H”、“L”即为对应的高(低)潮。算例如图2所示。
在水文站水位观测中,常因仪器故障、水毁等多种原因导致数据缺失,水文中常用线性插补方法对缺失数据进行插补。在感潮河段中,水位变化过程曲线近似于正弦曲线,用线性插补不符合实际情况。
本文提出采用三次样条曲线插值法进行插补,可以减少插补工作计算量,对比实测数据取得较好的拟合效果。
2.2.1 三次样条插值算法
设有节点(x1,y1)、(x2,y2)…(xn,yn):
x:a=x1 y:y1y2… yn 其中,a、b为插值的边界点。 三次样条曲线S(x)是一个分段函数,n个节点将区间分为n-1个分段。应满足以下条件: 在区间[a,b]中的分段区间[xi,xi+1]中,S(x)存在一个三次多项式函数Si(x)(i=1,2,…,n)。 满足yi=S(xi)。 S(x)、一阶导数S'(x)、二阶导数S''(x)在[a,b]中连续,即S(x)曲线是光滑的。 综上,三次样条曲线可统一用下式表示: 其中,ai、bi、ci、di代表三次多项式方程的未知参数。关于样条曲线的方程解法非本文重点,可利用现有多种算法实现求解。在C#下可采用Math.NET Numerics开源数值计算库可以实现。 2.2.2 潮水位插补 在潮水位的插值中,以缺失数据段的时间始、末作为插值区间[Ts,Te]。通常可用数据缺失经历的秒数来表示时间,则插值函数定义域x∈[0,Te-Ts]。 对于缺测数据,可通过比例插值法、相关插补法、综合过程线插补法等,采用相邻水文站数据插补出本站缺失数据段的部分节点数据(如高潮潮位、低潮潮位、出现时刻等)。插补后可得到以下节点: (0,y0),(t1,Y1),(t2,Y2),…(ti,Yi),(Te-Ts,yn) 其中: (0,y0)是数据缺失前,最后一个正常观测的潮水位y0; (ti,Yi)是数据缺失期间插补得到的数据,ti是距(0,y0)经历的时间,Yi是对应的潮水位; (Te-Ts,yn)是数据观测恢复后,第一个正常观测的潮水位yn。 根据以上序列构造三次样条方程,即解出[Ts,Te]区间内任意时刻的潮水位。 2.2.3 节点选取及精度对比 采用实测数据对比插值拟合精度。采用某潮水位站实测数据,假定当日缺测,仅保留缺测始末、高(低)潮数据,验证拟合精度。 拟合曲线共六个节点,其中首、尾分别是缺测前、后最近的实测数据,中间四个节点为当日的高潮和低潮。可以看出,曲线经过每个节点,在高潮附近拟合较好,低潮附近拟合偏差稍大。原因是低潮时潮汐影响较弱,曲线主要受径流控制。同时还可以看到,虽曲线经过第一个低潮点(6:10附近),但该点已不是拟合曲线上的低潮点,与插补的假定矛盾。 针对上述问题,可通过增加节点解决。鉴于低潮拟合较差,增加的节点应偏向于低潮附近。在两个低潮前后附近各增加一个节点,对拟合效果有较大的提升作用。 增加节点后,约58%数据误差在[0,0.02]区间,而误差在[0,0.04]的占78%。可见该方法有较高的拟合精度。计算8个节点即可较好拟合全天的潮水位。 综上,三次样条曲线可以较好的拟合潮水位数据,曲线节点应选取在高潮、低潮、以及低潮前后附近。该方法除应用于插补拟合外,还可用于加密人工观测数据。通过人工观测的少量数据作为曲线节点,可将数据频次扩展加密。 开展感潮水文资料软件处理技术研究,对于水文现代化,实现自动化、信息化具有重要意义。不仅可以缩短资料整编时间,提高效率,还能大量节省人力物力。本文在感潮水文资料部分问题上,提出了可行的解决办法,为完善资料整编软件提供思路。3 结语