宁夏近地层高空秒级数据服务功能的设计与实现
2021-07-30徐晓庆陈增境
徐晓庆,张 智*,崔 巍,陈增境
(1.中国气象局旱区特色农业气象灾害监测预警与风险管理重点实验室,宁夏 银川 750002;2.宁夏气象防灾及重点实验室,宁夏 银川 750002)
近年来,人们对雾、霾等天气越来越重视,对高空秒级数据的需求越来越多。目前,气象资料应用服务软件的开发主要是地面资料,而高空气象资料的应用分析工作相对较少,如吴兴洋等[1]指出高空全月观测数据文件的关键是对高空观测基础数据文件(秒数据文件)进行质控;陈中钰等[2]基于L 波段探空综合观测的逐秒数据制定了秒数据质量控制方法,发现该方法可以很好地检查出L 波段探空综合观测秒数据的错误;张明[3]、陆杰[4]、闵昌红等[5]分别利用高空秒级数据、等压面层数据、大气边界层数据研究了鄂西南、广西、贵阳等地的高空风、规定等压面层温度和高空逆温特征;李茂等[6]开展了高空和地面观测资料交互应用研究,确立了调取高空或地面资料做交互订正应用的最佳处理方案;高雅洁等[7]设计开发了高空BUFR 报文与XML 报文传输软件,适合台站探空数据传输;张颖梅等[8]对L 波段高空气象观测系统软件的升级技巧进行了总结。这些分析研究多是业务技术总结,或是利用高空气象资料开展气候变化分析,而该设计是通过网页的形式直接显示高空气象数据。
高空秒级数据是精度最高的高空观测资料,利用高空秒级数据可以准确地找到逆温层,为雾、霾预报研究提供重要的数据支撑。目前高空秒级数据只能从CIMISS 数据库中获取,且获取过程十分繁琐,登录API 接口页面后不仅需要从各种接口中选择高空秒级资料接口,而且需要选择相关的观测要素,获取数据十分不便。因此,设计开发高空秒级数据应用服务软件十分必要。
该软件从CIMISS 数据库中读取近地层2 km内高空秒级数据,按照《常规高空气象观测业务手册》技术规定,采用内插法[9]对近地层高空秒级数据进行等压间隔、等高间隔处理,开发不同观测要素(气压、位势高度、温度)的查询网页,能够以表格、剖面图等形式显示各气象观测要素的高度变化,可为气象预测预报研究、气象服务提供数据服务。
1 软件设计
1.1 开发环境
该系统基于B/S 架构的ASP.NET 设计,数据库为CIMISS 系统的Oracle 数据库,使用CIMISS 系统提供的API 接口直接调取数据;网页前台使用JavaScript 技术,网页后台使用C#作为开发语言,还用到了Ajax、JSON 和动态链接库等关键技术。
1.2 设计思路
1.2.1 功能模块设计 该功能模块分为数据查询和绘制剖面图页两部分,见图1。
图1 功能模块图
(1)数据查询。选择观测要素(气压、温度、相对湿度、风速和风向)、查询方式(等压、等高和全部)、日期类型(按日期、时间段、同期)进行查询,并以表格方式显示,同时可将查询结果导出,存储为Excel格式文件。
(2)剖面图绘制。选择观测要素(气压、温度、相对湿度、风速)、查询方式(等压、等高和全部)、查询时间进行查询,并以剖面图方式展示,同时可将查询结果导出为png 格式文件。
1.2.2 后台设计 按照气象业务人员选择的查询条件,传入后台获取数据,对数据进行处理后再通过前台网页显示,设计流程见图2。
图2 设计流程图
以下是具体设计过程:
(1)根据前台的查询条件,利用Ajax 方法访问后台。查询内容有时间、观测要素(气压、位势高度、温度、相对湿度、风速和风向)、等压(高)间隔和不同时段(连续时段、同期时段、跨年时段)。将这些条件组织成Ajax 的形式,传入后台。
(2)从CIMISS 数据库中查询数据,数据预处理。数据库中查询到的气压、温度、相对湿度、风速、风向会有缺测数据,需对缺测数据进行删除处理,只保留符合查询条件的数据。预处理后的数据是数据库中的随机数据,非预期顺序。为了便于使用内插法计算数据,需对获取的数据进行排序。根据时间、位势高度进行升序排列,保证同一时刻的数据按位势高度升序排列。将预处理后的数据,存入数组。
(3)判断查询的是全部数据,还是等间隔数据,若是等间隔数据,则数据进行内插处理。数据库查询到的数据是逐秒记录,位势高度值和气压值并不是等间隔,因此需进行内插法处理。
(4)将整理后的数据,解析成json 标准格式,传入前台。将上一步产生的字符串,组织成json 串,并通过Ajax 方法传入前台。
(5)用表格或垂直剖面图显示数据。
2 算法设计
等高和等压的内插法类似,以等高为例,设计流程见图3。
图3 等高内插法流程图
具体步骤如下:
第1步 存放在数组中的位势高度是由低到高排序的,因此,第1 个数组中存放的位势高度为起始高度0,把第1 个数组中的值依次存入字符串a 中。
第2步 根据前台传来的间隔高度k,查找接下来的数组中的位势高度是否存在,值为nk(n=1,2,3,...,i)的位势高度。若存在,将数组中的值继续存入字符串a 中;若不存在,则继续下一步的判断。
第3步 判断:前一个数组中的位势高度 ①若符合这个判断条件,使用内插法,即(前一个数组中对应的要素值+后一个数组中对应的要素值求和)/2,求出相应的气压、位势高度、温度、相对湿度、风速和风向,将求出的值继续存入字符串a中,并且间隔高度nk 的值增加为(n+1)k。接着对下一个数组继续步骤3 的判断。 ②若不符合这个判断条件,则判断下一个数组的位势高度是否满足步骤3 的判断条件。 第4步 依次循环判断所有数组,直至所有数组都判断完毕。 CIMISS 数据库中高空资料存储了中国高空定时值资料、高空秒级资料、高空分钟数据、闪电定位等资料,软件只读取银川高空观测站高空秒级资料。 CIMISS 的API 提供了多种检索高空秒级资料的接口,本文采用按时间段、站号方式getUparEleBy-TimeRangeAndStaID 检索高空秒级数据表UPAR_CHN_MUL_SEC。 气象业务一般需要的是近地面2 km 的数据,而CIMISS 数据库中高空秒级资料一般能达到25 km左右,而银川海拔高度约1.1 km,因此平台的位势高度控制在3.2 km。 前台网页查询条件分为3 部分:观测要素、查询方式和日期类型。观测要素包括气压、温度、相对湿度、风速、风向等全部要素。查询方式分为等压、等高和全部。若选择等压,根据业务需求将等压间距分为10,20 hPa;若选择等高,根据业务需求将等高间距分为50,100,200 m;若选择全部,则显示所有数据。日期类型包括按日期查询、按时间段查询和按同期查询。将这些条件组织成Ajax 的形式,传入后台。 (1)预处理数据,剔除温度、气压、湿度、风速和风向中缺测的数据,并对数据排序。 (2)判断是查询原始数据,还是等压(高)间隔数据。若是等压(高)间隔数据则需采用内插法进行内插。 (1)表格的形式。将查询的数据采用bootstrap格式直接显示出来,并能将查询的结果导出。如图4所示,选择全部气象要素(温度、气压、湿度、风速、风向和位势高度),按日期、10 hPa 等压间隔查询。 图4 宁夏高空秒级数据表格显示图 (2)剖面图的方式。根据查询结果可以采用echarts方式显示温度、湿度、风速中的一种垂直变化剖面图,也可以全部显示,图片有导出功能。如图5 所示,选择全部气象要素(温度、湿度、风速),按日期、100 m等高间隔查询。 图5 宁夏高空秒级数据(温度、湿度、风速)垂直剖面图 对music 接口直接调用和该软件界面调用的100 个时次数据进行统计分析,去除接口异常时次,正常情况下,调用处理前的数据平均需要32 s,数据量约4 600 条。处理后的数据见表1。 表1 服务性能表 经过内插法处理后数据按照等高或等压的方式展示,大大减少了数据量;展示方式按照相应规律展示,便于气象业务人员使用,但是查询时间增加了3 s,查询速度有所下降。 本文主要研究CIMISS 近地层高空秒级数据的处理。利用内插法将高空秒级资料处理成等压(高)间隔的数据,并将气象要素用垂直变化的方法表示。原先只能通过CIMISS 的API 接口页面手动调用高空资料,气象业务人员不仅需要学习页面接口的使用方式,而且获得的数据是非预期的,且只能以表格的形式全部显示,气象业务人员使用时还需加工处理成预期数据,使用不便。经过内插法处理后,数据按照等高或等压的方式展示,虽然查询速度略微变慢,但是大大减少了数据量,展示方式可以按照等高或等压方式展示。气象业务人员根据实际需要在该查询软件页面选择查询条件,查询出来的数据不仅能以表格的方式显示,还能以剖面图的形式显示,并且可以下载表格和剖面图,方便了业务人员的使用,提高了高空秒级资料的利用效率。3 功能实现
3.1 数据来源
3.2 确定位势高度
3.3 页面组织
3.4 后台数据处理
3.5 输出方式
3.6 服务性能
4 结论