引言
当前大连局正在进行气象现代化工作,装备保障中心的硬件也在不停的更新,相应的软件平台也继续优化和改进,借此之际,利用局内课题申报的契机,自主研发重要装备激光雷达的数据监控平台恰逢其时,本着“业务优化、提高效率、服务优先”的原则,积极对激光雷达数据进行研究,研发监控平台,及时存储雷达数据,同时做好数据解析和展示工作也是部门紧急需求。目前平台已经研发完毕,投入业务运行。
1平台系统简介
1.1主要内容
激光雷达探测资料监控平台的主要内容:首先基于Python脚本编写激光雷达数据解报程序,整理并获取激光雷达的观测质量数据,基于数据搭建大连装备中心的激光雷达本地化数据库,设计符合逻辑的表结构,通过Python Flask开发包含对激光雷达数据查询、统计、导出等功能的业务平台,同时实现激光雷达数据到报系统的实时运行监控,对业务运行出现数据采集传输等故障时能及时发出声音警报,让业务人员及时发现并处理报警情况。
技术难点和关键问题:
1) 整理激光雷达数据,编写激光雷达数据解报程序;
2)设计科学的激光雷达数据库关系表,建立激光雷达本地化数据库;
3)基于Python Flask技术搭建成果共享查询平台,实现网站建设;
4)实现激光雷达数据的运行监控及故障警报,为数据的及时上传提供保障;
5)开发激光雷达数据查询、统计、导出等功能;
6)利用相关解析算法,得出激光雷达产品后向散射系数,并实时显示。
1.2技术框架
整个平台为B/S架构,基于Python的Flask框架设计完成,设计分为前台和后台。前台主要利用LayUI进行界面设计搭建,后台利用Ajax提交请求来完成对数据的采集和查询工作。平台的数据主要是激光雷达的FTP传输实现数据搜集工作。平台利用Anaconda3的虚拟环境(base) D:\web_flask\songxiuyu>conda activate base来发布服务。前台主要分为标题栏,操作栏和显示栏,监控平台的系统框架如图1所示,本地MySQL数据库和Flask框架部署在内网服务器,通过Ajax网页显示模块分为历史展示、实时监控和系统配置三个模块进行分类显示。
图1 监控平台框架结构图
2 数据处理
2.1 激光雷达数据解析
根据数据格式对数据进行读取,再对数据进行方位标定和背景去噪后,接着利用Fernald反演方法来解析激光雷达数据。
根据激光雷达方程,
这里的激光雷达比和参考高度是未知量,此处取经验值50和12km。
2.2 平台数据库表设计
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,基本功能都能准确无误的给予数据支持。根据激光雷达解析值建立激光雷达监控表和后向反射系数表,通过合理的设计表字段和表关系,以便建立最优查询SQL语句。
(1)激光雷达到报监控表设计,建立jgradar配置表,该配置表包含激光雷达到报时间、应到数据个数、实到数据个数、数据缺测明细、监控入库时间等字段。实际情况是激光雷达会在整点01分至整点30分到报29个数据文件,每分钟1个数据文件,针对此情况设计监控表。
(2)激光雷达后向反射系数表设计,建立jgradarhxfs配置表,该配置表包含3个字段,主要是时间,距离和值。主要不同距离对应的值之间的关系表。
jgradar表主要字段如表1所示。
2.3 Python监控脚本开发
(1)监控脚本开发
通过jiankong.py读取监控文件夹里激光雷达的个数并完成监控信息入库工作。脚本里主要依据激光雷达文件名来处理数据的,激光雷达的文件命名形如“RM2141300.023899”格式,RM是名头,“2141300”对应2021年4月13日00时,其中10月对应A,11月对应B,12月对应C。监控信息入库主要依靠一下代码实现:
ms = MSSQL(host='ip,user='root',pwd='password',db='dbname')
sql="select count(*) from jgradar where datetime = '" +instime.strftime("%Y-%m-%d %H:00:00") + "'"
aresult = ms.ExecQuery(sql)
if(aresult[0][0] == 0):
sqlin = "insert into jgradar (datetime,ydao,sdao,deil,intime) values('" + instime.strftime("%Y-%m-%d %H:00:00") + "','29','" + str(n) + "','" + qcf_list + "','" + instime.strftime("%Y-%m-%d %H:%M:%S") + "')"
ms.ExecNonQuery(sqlin)
else:
sqlup = "update jgradar set sdao = '" + str(n) + "',deil = '" + qcf_list + "' where datetime = '" + instime.strftime("%Y-%m-%d %H:00:00") + "'"
ms.ExecNonQuery(sqlup)
(2)入库脚本开发
通过以上Python脚本获取的数据监控信息通过SQL语句实时的入库到对应的数据表保存即可。入库之前需要及时判断数据库表中是否存在当前监控记录,若存在则更新,不存在插入即可。该操作利用Windows计划任务定时每日间隔5分钟启动对应Python脚本任务即可实现不间断数据监控任务,计划定时任务设置如图2所示。
图2 Python脚本计划任务设置
3数据显示
基于Flask框架的网页显示结果主要通过Ajax技术获取数据以Json数据格式在前台绑定 bootstrapTable.js和Echarts.js分别显示,bootstrapTable主要以表格形式展示,echarts主要以图形形式展示。主要获取代码如下:
$.ajax({
<a href="url:\" {:u('home="" system="" "="">url:"{:U('Home/System/funtion')}", //url对应后台操作函数
type: "POST",
cache: false,
success :function(data){
//此处根据获取获取成功的data数据绑定相应的js控件显示即可
…
}
3.1 激光雷达监控显示
激光雷达监控模块主要展示一天24小时激光雷达到报率情况,不同的到报率显示不同的颜色来展示提醒功能,同时配置了声音报警功能,如果确保情况及时通知值班业务人员。激光雷达实时缺报明细以表格形式展示,界面简单明了,能及时显示时次缺报情况,界面如图3所示。
图3 激光雷达监控平台
3.2 激光雷达数据和图形显示
激光雷达的数据主要显示时间、时间对应的高度、高度观测值三个要素。由于激光雷达高度值多达1000个,导致界面显示加载速度慢,代码及时调整策略,根据日期来加载个例时间提高查询效率。图形分为日查询和个例查询,主要界面如图4、图5所示。
4 结论
大连市激光雷达资料监控平台由装备中心业务人员自主研发,根据日常监控业务量身定做,为业务人员保障激光雷达数据提供保障,优化了工作流程,提高了工作效率。目前该监控平台已经业务值班中发挥了作用,后续会在此平台基础上增加大气成分产品的监控,为装备保障监控业务提供技术支撑。在功能增加基础上,继续完善代码和界面美化工作,为后续开发打下基础。
参考文献
[1]江崟,谭明艳,吴迪.深圳市气象监测综合业务平台的设计 与实现[J].广东气象,2010,32(3):57-59.
[2]李源鸿,敖振浪,李建勇,等.广东省地面气象综合探测全网 实时监控系统[J].广东气象,2007,29( 4):5-7.
[3]梁慎青,石小英,梁苑苑,等. 广东省气象信息实时监视系统 的开发及应用[J]. 广东气象,2009,31(1):57-59.
作者姓名:宋秀瑜(1992.04),女,汉族,辽宁省大连市人,硕士研究生,工程师,主要从事装备保障维护,气象观测等工作。