一种基于可视化技术的水文数据展示系统设计

2021-02-18 02:17苏南
科学与生活 2021年30期
关键词:数据表线程异构

摘要:提出一种基于可视化技术Echarts的水文数据处理、展示系统设计方案。详细介绍了基于thinkphp架构和数据可视化技术Echarts在系统中应用,和基于水文数据库的两种分布部署和同步方案;并以某水文站数据为例,展示了系统的水文数据可视化的效果。

1 概述

水文数据能够为认识一定范围内的水文变化提供重要参考,其应用技术涉及原始数据的检测和处理,数据的可视化技术可以被利用到水文数据的处理工作中。把海量水文数据通过可视化分析和展示,能够对水文研究提供更直观的数据分析成果,为更加准确得把握水文数据提供一定的帮助。本文提出一种水文数据处理展示系统设计方案,力求为水文相关研究和管理人员提供直观生动的视觉展示效果,进一步提高水文相关研究和水文相关管理的效率。

2系统总体设计

2.1 体系架构设计

硬件层中的水文测量终端通过移动网络与接入互联网的数据中心服务器进行传输数据,数据保存于数据中心的存储设备上,用户可以通过智能终端请求访问数据。水文数据的测量、传输、存储、处理、分析、展示和访问应答,通过整个软件层来完成。

水文数据处理展示系统位于水文数据平台的软件层,运行于数据接收、存储和应用架构管理层之上,基于Thinkphp框架运用MVC三层架构管理模式构建系统,在模型层对数据进行读写操作,在控制层使用可变窗口滤波算法对数据进行可视化优化,在视图层使用echarts技术对数据进行展示。

2.2基于Tinkphp架构系统架构

ThinkPHP是一个遵循Apache2开源协议PHP开发框架,使用面向对象的开发结构和MVC模式,支持多种数据库以及PDO扩展,其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件。可以基于模型层、控制层和视图层的分层思想使用这些组件用于满足系统应用和水文数据处理所需的功能。

系统使用ThinkPHP模型层解决水文原始数据的访问问题,比如获取流量、流速水位等水文数据和系统权限、用户和配置信息等;控制层用于水文数据的处理和业务逻辑,比如数据的滤波平滑处理、异常值去除、流量计算等逻辑功能;视图层主要是用于处理数据的可视化展示和用户界面的UI交互等,比如数据的可视化图表和系统后台管理界面等。

2.3基于Echarts的数据可视化设计

ECharts,一个使用 JavaScript 实现的开源可视化库,兼容主流的浏览器,底层是依赖ZRender这种轻量级的矢量图形库,提供可交互和可定制的数据可视化图表集合,如折线图、柱状图、散点图、饼图、K线图等,还有用于统计、地理数据、关系数据、多维数据的可视化工具图等,并且支持图与图之间的混搭。本系统使用用折线图对比三日水位变化趋势,用堆叠图展示河流的流量,用散点线性回归图展示两组数据的率定关系。

2.3.1实时数据可视化展示

实时的水文数据涉及的流速、流量、水位等信息可以通过Echarts是较为直观的展示出来,依据水文数据的特点可以选择静态加载和异步动态加载两种方式,这两种方式分别用于不同频率的采样数据。一般当展示截止到请求时间节点数据时,采用静态加载方式;当需要显示请求加载数据时间节点以后的数据时,采用异步动态加载数据,采样时间达到秒级的使用异步动态实时加载数据会有较好的显示效果。本系统是基于HADCP设备,采样时间为12秒,故采用静态加载方式。

2.3.2历史数据的可视化

本系统提供历史数据展示,除了提供自定义日期时间的查询外,还提供了按周、月、年快捷查询方式;展示方式采用复合坐标折线图,同时展示流速、过水面积、实时流量、水位和累计流量。对于历史时间查询和展示,需要兼顾数据量的大小与终端性能的平衡。

2.3.3分层数据的可视化

对于水流的流速测量,本系统是对流水纵剖面上不同深度的流速进行测量,通过一定算法计算出此剖面的流速,系统可以展示某一纵剖面分层数据,

3数据库实时同步设计

对于重要的水文原始测量数据,有些应用场景需要实时保存于不同数据库,这些数据库可能是不同数据库服务器上运行的不同类型的数据管理系统,有些还需要异构转换等功能。本系统采取主从复制功能解决同构实时数据备份,使用触发器解决异构数据数据库的异构转换同步等功能。

3.1同构数据库的主从复制设计

对于相同结构的数据复制可使用数据库的Replication机制完成,这种机制的原理是通过将数据库的某一台主节点的日志数据复制到其它从机上,并重新执行一遍来实现。

当主节点上的数据发生改变时,则将其改变写入名叫操作日志的二进制日志文件中,从节点会在一定时间间隔内对主节点的操作日志进行探测,如果发生改变,则开始一个I/O 线程请求主节点操作日志事件,同时主节点为每个I/O线程启动一个复制线程,用于向其发送操作日志事件,并保存在从节点本地的中继日志中,从节点将启动SQL线程从中继日志中读取并在本地重放,使得其数据和主节点的保持一致,最后I/O 线程和SQL 线程将进入睡眠状态以便下一次被唤醒。

3.2异构数据库的主从同步设计

基于触发器的主从单向实时同步数据库机制,是为了解决异构数据库关于数据的实时同步问题。

在主数据库中建立与远程同步数据表结构相同的缓存数据表,远程数据表中的数据通过数据库的Federation引擎保持实时同步,实时监控缓存数据表,当缓存数据表的数据发生改变时,Federation引擎就会启动远程存储进程将数据改变同步到远程数据库中,同时将远程存储的反馈信息回传给缓存数据表,以便保持远程同步数据表和缓存数据表的数据一致性;缓存数据表的数据是源数据表的触发器写入的,具体写入过程是当源数据表的数据发生改变时,比如进行增、删、更新操作时,都会启动相应的触发器,触发器函数内部可根据异构数据处理要求调用异构数据转换函数完成异构数据转换,然后触发器就会将转换后的数据写入缓存数据库,然后Federation引擎按照上述过程完成远程同步数据表的数据同步。

4 结束语

基于水文数据的可视化系统为水文研究提供了更为直观形象的水文数据分析成果,为水文的研究和利用提供了有益的帮助;本文在现有成熟技术的基础上,将数据可视化技术运用于水文数据研究,并具体展示了基于某水文站实际水文数据的可视化效果,同时文章还提供了解决水文数据的分布存储和数据同步的方案,为水文数据存储和利用提供了一种可行的方法。

参考文献:

[1]周启云,许新华,付昱榕.基于Echarts的可视化学情分析系统设计与实现[J].信息技术与信息化,2020:116-119.

[2]李兴勇.基于ECharts组件的外汇形势动态监测方案设计[J].电脑知识与技术,2017

[3]刘勘,周晓峥,周洞汝.数据可视化的研究与发展[J].计算机工程,2002:9-10+71.

[4]李秀珍.基于MVC的Think PHP5框架研究[J].现代信息科技,2020,4(14):90-92.

[5] 任立胜.基于ThinkPHP框架的网站集群建设方式和应用研究[J].中国新通信. 2020(05)

[6]陸叶杉.系统数据迁移常见问题及案例分析[J].计算机科学,2019,46(6A):412-416.

[7] 周云才.利用可视化技术进行分类分析[J].汉江石油学院学报,2004,26(6):343-344.

[8]成波,江波,李红清. 菜子湖湿地生态数据库管理系统的设计与实现[J].水资源保护,2020,36(6):46-52.

作者简介:

苏南,1989.1,男,硕士研究生,工程师,水利部水文仪器及岩土工程仪器质量监督检验测试中心,江苏南京,210012,水文仪器检测

猜你喜欢
数据表线程异构
离散异构线性多智能体系统的输出一致性
试论同课异构之“同”与“异”
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
深度揭示小数本质的课堂教学——四位名师《小数的意义》同课异构的分析与启示
凝聚与铺张——孙绍振教授《以丑、呆为美》两岸同课异构教学观摩后记
Java多线程产生安全问题及对策分析
采用ScheduledThreadPoolExecutor执行定时重试任务时内存溢出的分析及解决
Java的多线程技术探讨