APP下载

海量时空大气电场数据的压缩存储与共享

2016-08-05路明月郑建琴邵一丹

计算机应用与软件 2016年7期
关键词:压缩算法海量电场

路明月 郑建琴 刘 彬 王 轩 邵一丹

1(江苏省气象灾害重点实验室(南京信息工程大学) 江苏 南京 210044)2(南京信息工程大学遥感学院 江苏 南京 210044)



海量时空大气电场数据的压缩存储与共享

路明月1,2郑建琴1刘彬1王轩1邵一丹1

1(江苏省气象灾害重点实验室(南京信息工程大学)江苏 南京 210044)2(南京信息工程大学遥感学院江苏 南京 210044)

摘要大气电场数据能够很好地表征地面大气电场的变化情况,对于研究雷电的发生发展具有重要意义。针对电场数据的时空海量特性给数据的存储共享以及专业分析使用都带来很大困难这一问题,根据电场数据随时间起伏变化的特点,提出时间分割基础上的压缩组织存储算法。该算法能够确保在电场数据“波动段无损”的前提下,有效降低电场冗余数据的存储,节省存储空间,提高海量数据的查询效率;基于“波动段”与“非波动段”的组织结构进一步增加了数据检索查询的灵活性。在此基础上本文基于WCF(Windows Communication Foundation)技术实现对电场数据及其压缩操作算法等的服务共享。最后采用实际电场数据进行了实例实现,充分验证了该压缩存储算法以及共享机制的有效性与可行性,能够为海量电场数据高效的专业分析使用提供支持。

关键词电场数据压缩存储共享

0引言

大气中时刻存在电场[1,2],地面大气电场数据反映了电场测站周围的雷暴云电荷量大小变化,是大气物理的一个基本要素,也是气象部门判断雷暴的重要指标[3-6]。对于大气电场数据进行专业的深入分析研究能够帮助我们更好地认识雷暴天气的变化机理及其发展过程。很多学者针对电场数据进行了分析研究,吴亭等根据2004年-2005年大气观测资料分析北京地区大气电场与部分大气要素间的关系[7];徐栋璞等将2009年夏季近地面大气电场资料应用经验模态分解(EMD)方法分析,分解出雷暴和晴天天气大气电场的不同时间尺度变化分量,并提取两类天气状态下的大气电场振荡特征进行对比[8];潘家利等通过大气电场资料结合闪电定位和多普勒雷达资料,研究小范围雷暴天气大气电场特征,寻找雷暴发生时大气电场强度的预警阈值以及预警时间值[9];张义军等利用青藏高原东部地区的大气电场数据提出了不同雷暴的降水会产生不同的地面电场特性[10];柴瑞等通过2007年6月浙江省嵊县的电场观测资料得出电场数据会随闪电出现发生快变抖动现象,进而提高了雷暴预警的准确率[11];郭秀峰等探讨了尖端建筑物的高度、宽度、位置对大气电场畸变的影响,促进了雷电防护机理的研究[12];谭涌波等发现环境电场阈值与金属尖端高度呈明显的负相关,随着高度增大而线性减小,为今后研究雷暴云起电过程与内部电荷结构作了一定的基础[13]。这些对大气电场数据的分析研究对雷暴天气认知以及预警预报有着重要的借鉴意义[14,15]。然而就大气电场数据本身而言,有着数据存储量大,时空性强的特点,尤其是在晴好天气时,其常规的存储方式,会造成大量的数据冗余存储,给数据的高效查询分析等都带来了很大的障碍。而目前的相关研究中,也多数着重于数据规律的探讨,对于海量电场数据更有效地组织存储以及更好地共享使用鲜有涉及。基于此本文面向时空海量电场数据的高效存储检索与查询设计了时间分割基础上的压缩组织存储算法,有效降低了电场冗余数据的存储,节省了存储空间,提高了数据查询访问效率。在此基础上本文采用WCF技术进行封装,设计相关的服务接口,实现了电场数据的共享,为电场海量数据的有效分析使用提供支持。

1海量时空电场数据组织存储方案

目前对于电场数据的常规存储方式是一条探测数据对应一条记录,就其一秒钟一个探测数据的频率计算,一天产生60×60×24=86 400条数据记录。随着时间的推移,这种常规的存储方式极大地消耗存储资源,降低海量电场数据的查询与专业分析效率。尤其是在晴好的天气中,探测到的数据基本没有变化,逐条存储还会造成大量的数据冗余,增加电场数据的存储成本。

考虑到电场数据的时空动态性,本文首先以“天”为记录单位对其进行组织存储。即设计特定的数据结构,将一天的电场数据存储为数据表中的一条记录,这样一年也仅为365条记录,10年不过3650条记录,能够大大减少数据表中记录的条数,从而能够以“天”为单位快速定位到对应的电场数据记录,极大地缩短了海量数据查询时间;在此基础上,本文对某一天的数据再按照时间进行等距离分段,各段电场数据分别存储在当前记录的各个对应字段中,如此可以支持某天某时间段电场数据的检索查询,使得检索更加灵活高效。考虑在天气晴好时间内电场数据波动变化很小的特征,本文对于每一段的电场数据再次进行基于波动变化幅度的压缩,以在最大程度上减少冗余,提高存储效率。在使用时,根据某日某时间段的查询要求,从对应的字段中快速其取出所需要的电场数据,进行解压缩操作,继而提供给用户使用。本文中某天电场数据的数据组织与存储方案示意图如图1所示。

图1 某全天电场数据组织与存储方案示意图

基于上述存储,可以将同一个探测设备获取的数据存储作为一张独立的表,以设备的编号作为数据表的名称。而在该表中的字段结构中可以包含:1) 隐含数据日期的记录名称Idname(型如E140708代表14年7月8日的探测数据);2) 电场的分段压缩数据存储字段(字段名称隐含对应的时间段信息 如S0408,代表4点至8点时间段的电场数据,时间分段可以根据实际情况确定);3) 辅助信息字段。这种结构能够利用名字来快速检索到某时间段内的电场数据,提高查询的效率以及灵活性。其逻辑结构如表1所示。

表1 D001(001为数据对应的探测设备)

2电场数据分段压缩组织算法

上述方案中,分段后的数据压缩是减少电场数据冗余存储的关键,因此本文针对设计了相应的电场数据结构及其压缩算法。

2.1压缩算法思想

电场数据的冗余主要存在于两个方面:一个是大量时间信息的存储;一个是无波动数据的重复存储。因此,本文的压缩算法针对这两个方面入手。首先设定波动阈值,对该段电场数据进行波动段和无波动段识别,并分别记录各段的起始时间(消除大量时间信息的存储);对于无波动段,记录其在这段时间内的平均数值(消除重复数值存储);而对于有波动段,则依次记录在该段时间内所有电场数值信息(确保有波动数据的无损性)。这种压缩方案能够很好地确保波动时期数据的“无损性”,减少“无波动”数据以及重复时间信息的冗余存储,很好地保留了电场数据中有价值的信息以支持电场数据的专业分析。在极端晴好的天气下,只需要存储一组起始时间以及电场的平均数值;即便在极端变化的情况下,只需要存储一组起始时间,以及各个时间点的数值即可,可以减少了大量日期时间信息的冗余存储。

2.2数据结构设计

根据上述压缩思想,需要设计特定的数据结构以便更好的实现压缩操作。基本压缩段的内存数据结构设计,伪码表示如下:

//基本压缩单元

Class EDataCell {

beginTime 日期类型

endTime 日期类型

values 数据串类型

}

//电场压缩数据段(基本压缩单元组成)

Class EDataSegment

{

EDataCell[]

//基本压缩单元数组

}

在基本压缩单元的数据结构中,beginTime用于记录该段数据的起始时间;endTime用于记录该段数据的终止时间;values用于记录该段时间内的数据,对于无波动数据段仅存储一个平均值,对于波动数据段则依次存储该时间段内的电场数值;这种数据结构设计有效地将有波动数据和无波动数据段的表达进行统一,并且能够根据所存储的数值个数来判断当前该段是否为波动段,为波动段数据的查询提供了支持,更加增加了数据应用的灵活性。

通过电场压缩数据段的数据结构可以看出若干基本压缩单元组成电场压缩数据段,将此电场压缩数据段序列化为二进制数据后就可以存储到数据库的字段中以备查询应用。

2.3压缩算法实现

根据上述的压缩算法思想以及设计的数据结构,其算法实现的关键在于波动段与非波动段的自动判定与提取。可推知压缩之后得到的波动段与非波动段一定是相互间隔的,并且上一段的结束点即是下一段的开始点,这个规律能够在很大程度上清晰算法的实现思路。其中需要特别注意非波动段的“有效性”判别,避免出现过于零碎的非波动段(比如在两个波动段之间短暂的非波动段),以提取出真正的“有效非波动段”。因此,需要设定一个时间长度阈值(△d),只有当非波动段的长度大于这个时间长度阈值(△d)时,才会被判定为独立的有效非波动段,否则将其归并到波动段中存储,以进一步确保波动段的“无损性”及“完整性”。根据上述的分析,算法实现步骤如下:

1) 设定波动阈值(△w,判断是否波动)以及时间长度阈值(△d,有效的非波动段最小长度)。

截断取直型负反转是指一个冲断系后缘被一个新形成的陡倾张性断层所取直、截断,但不涉及冲断层两侧重复出现的地层。老30-桩海10井近东西向地震剖面显示,该区燕山末期发育了走向北东、倾向北西的一系列缓倾角逆断层,当逆断层逆冲受阻时,便切层逆冲形成若干个逆断层,构成叠瓦冲断组合。喜山早期,在逆冲断层应力集中的后缘,被正断层截切并反向下滑,形成负反转构造(图1),并形成花状构造。其显著特征为:该断裂向深部延伸,归并于变缓的断层面上,并处于纯拉张状态而无收缩,在断层上升盘则保留原逆冲形态,这种取直型负反转主要在桩西潜山北部与埕北凹陷结合部的老30-292井区发育。

2) 判定数据起始段是波动段还是非波动段(第一个数据是波动段的起始点还是非波动段的起始点):

从当前数据的起始点开始,首先记录点起始点时间,连续向后遍历△d个电场数据,是否有数据与当前数据的数值差大于△w,如果有,则当前点为波动段的起始点,否则,为非波动段起始点。

3) 识别当前数据段的结束点:

(1) 如果该段是波动段,则寻找该波动段的结束点。

① 遍历之后的各点,判断当前点的后面△d个电场数据,是否有波动数据(与当前点数值之差大于△w阈值),如果没有则表明当前点即为波动段的结束点;否则继续进行下一点的判别,直至找到符合条件的本波动段结束点,或者至数据结束点。

② 记录该结束点的时间,同时将起始点至该结束点之间的电场数据依次保存至values字段中。

(2) 如果该段是非波动段,则寻找该非波动段的结束点。

① 遍历之后的各点,判断当前点是否有波动(与起始点数值之差大于△w阈值),如果有则表明当前点即为非波动段的结束点;否则继续进行下一点的判别,直至找到符合条件的本非波动段结束点,或者至数据结束点。

② 记录该结束点的时间,同时将起始点至该结束点之间的电场数据平均值保存至values字段中。

4) 将步骤3中获得的结束点及其数据作为下一段的起始点,同时根据波动段与非波动段的相互间隔性,获得下一段的波动性,重复步骤3的操作完成下一段的压缩操作。

5) 依此直至电场数据的最后一个数据,并将最后一个数据作为最后一段的结束点进行处理。

6) 将上述步骤获得的多段数据存放在数组变量中,完成该电场数据的压缩,算法完毕。

2.4压缩算法分析

同上述的压缩算法可以看出:1) 对于无波动段的处理是有损压缩,用无波动段的平均值代替该段中的实际数值(差值控制在阈值△w之内);而在波动段则是无损压缩,在最大程度上保证波动段的“原装性”; 2) 压缩后的数据“波动段”与“非波动段”的交界点的数据重复存储,并且在两段存储的数据会有差异,主要原因是非波动段这段数据是这段数据的平均值,而“非波动段”的数据是真实值,因此在解压时,要使用波动段的数值来作为交界处的数据,以确保波动段数据的无损性;3) 无论在“波动段”还是在“非波动段”压缩之后的数据中仅仅记录了该段起始以及结束时刻的时间,节省了中间段的时间信息存储,因此在解压时缩时,算法会默认以固定时间长度单位(目前电场数据多为一秒一个数据)对应存储的电场数据,如果原有的电场数据中间缺少某些时刻的观测数据,如果在“非波动段” 缺失,影响不大,但是如果在“波动段”缺失,则该缺失时刻后面的数据自动向前补齐缺失的数据,造成电场数据的整体“前移”。因此在使用该算法前要确保数据的质量,进行一定的数据处理确保数据的“无缺失”。在本文算法实现中采取的方法是:“零碎缺失”采用平均插值方法补齐;“大时间缺失”则对这段数据统一赋予“无效值”(如-9999),即作为特殊的“一段”处理。

按照这种算法压缩之后的数据,能够起到明显的压缩效果。以SqlServer数据库的存储为例,日期类型占用8个字节存储,单精度类型也是占用8个字节。则一天的电场数据正常情况下的存储量为:1×24×60×60×(8+8)=1 382 400字节;采用本压缩算法在最好的情况下(即一天电场数据没有波动);则只需要存储两个时间以及一个单精度的电场数据,即:8×2+8=24字节,压缩比为:1 382 400/24=57 600;在最坏的情况下(即一天电场数据都为波动数据),需要存储两个时间以及各个电场数据,即8×2+1×24×60×60×8=691 216字节,压缩比为:1 382 400/691 216≈2;因此可见该算法对海量电场数据能够很好地压缩效果。

3基于WCF的电场数据共享服务设计

WCF是由微软开发的,面向服务的,将各种分布式技术整合到一起的一款软件。它提供了一致的开发框架,降低了系统开发周期,解决了不同网络和应用环境下数据和操作的共享以及异构系统间跨平台访问与操作等问题,实现了真正意义上的分布式计算。因此基于WCF,将电场数据的压缩/解压缩以及检索查询等操作过程进行封装,裸露相关接口实现电场数据及其服务的共享,因此整个操作处理过程对用户是屏蔽的,用户只要调用一个接口就可以获得所需要的数据,为客户的处理分析提供便捷的数据服务。其整体三层结构如图2所示。

图2 基于WCF的电场数据服务架构示意图

其中数据层主要指按照组织方案中设计的用于实际存储电场压缩数据数据库;而在WCF数据层实现电场数据的分段压缩算法,以及按照时间(段)、站点等多样式检索查询,并以接口的形式裸露服务,以供客户端调用;客户应用层则是客户根据需要直接调用服务接口进行相关数据的获取,对客户端而言,电场数据的压缩/解压缩等操作过程是完全屏蔽的,仅仅是调用一个服务接口即可获得所需要的服务。以此电场数据及其操作都得到最大程度的便捷共享,为电场数据的专业应用与分析提供服务支持。

4应用实例

为了更好地验证本文中对电场数据的压缩组织以及共享方法的正确性,借助气象行业专项课题的支撑,对其25个电场探测设备的探测数据进行了应用实践,取得了很好的应用效果。

在实例中每个电场检测设备每秒钟产生一个探测数值,产生的数据临时性存储在文本文件中等待压缩入库处理。在处理时按照本文的数据组织存储与共享设计方案,首先针对每一个电场探测设备创建对应的电场数据存储表单;继而创建WCF服务,在该服务中实现了电场数据的压缩/解压缩算法、存储入库方法、按照站点及时间(段)查询算法、某时间段内波动数据检索等操作,并共享了服务接口;继而设计了电场数据可视化查询客户端系统进行基于服务接口的电场数据调用,实验结果证明,压缩算法有效,尤其在晴好天气环境下,可以将数据进行最大程度的压缩,能够很好地适应气象领域的实际业务应用。

4.1电场数据压缩处理前后图形比较

本实例中开发了图形可视化平台,能够直观地看出电场数据的波动情况。本文将原始的电场数据与经过压缩处理后的电场数据在该可视化系统上集成显示,从图3中可以看出经过压缩处理后还原的数据与原始电场数据两者能够紧密贴合,达到了波动段无损压缩的设计效果。

图3 电场数据压缩处理前后的图形拟合对比图

4.2基于WCF数据共享服务的数据调用

本文设计了客户端程序对WCF的数据压缩存储以及多功能检索查询进行了验证。通过用户对图形化电场仪的交互拣选,获取对应的电场设备名称以及具体的时间日期,并将这两个参数传递给WCF服务 ,WCF服务从数据库中获取符合条件的电场数据(段)继而完成解压缩操作后,将完整的电场数据传递给客户段调用显示。其可视化效果如图4所示。实例证明相对于普通组织存储方式,本文的方案能够有效地减少对海量时空电场冗余数据的存储,提高时空数据的检索查询效率;对于客户端而言,其仅仅需要调用WCF服务接口,数据的时区分段、压缩存储以及解压查询等计算操作都由WCF服务在内部完成,反而大大减轻简化了客户端的操作及计算压力,需要注意的是这些优势是以增加WCF服务端的CPU计算压力为代价的。

图4 基于WCF服务的电场数据查询显示

5结语

随着信息科学技术的不断发展,电场数据作为重要的雷电监测数据,对其进行有效的科学分析,挖掘其所隐含的科学规律对于深入认识雷电发生发展的过程具有重要意义。而对于海量时空电场数据的高效组织存储以及共享提供更加便捷、高效、灵活的数据服务是进行专业分析研究的重要前提与基础。基于此本文提出的一种大地电场数据的压缩存储处理以及共享方法,在一定程度上弥补了当前海量时空电场数据组织存储以及共享方面的不足,优化了存储结构,节约了存储空间,其波动段的无损压缩最大程度上确保了电场数据的专业分析不受影响,同时进一步提高了电场数据检索查询的灵活性和高效性。并且通过WCF的服务共享,确保了客户端调用数据的快捷,减轻了客户端负载,实现了电场数据及其数据操作处理的服务共享,为相关领域的研究提供了很好的借鉴。

参考文献

[1] 张信华,黄元森,江彩英.闽北强对流天气的短时监测及判别方法研究[J].气象,2011,37(6):687-692.

[2] Chalmers J A.Atmospheric Electricity[M].London:Pergamon Press,1957:112-114.

[3] Rycroft M J,Israelsson S,Price C.The global atmospheric electric circuit solar activity and climate change[J].J Atmos Sol Terr Phys,2000:1563-1576.

[4] Rakov V A,Uman M A.Lightning:Physics and Effects[R].Cambridge:Cambridge University Press,2003:73-75.

[5] 张腾飞,许迎杰,张杰,等.云南省闪电活动时大气相对湿度结构特征[J].应用气象学报,2010,21(2):180-188.

[6] 孙景群.大气电学基础[M].北京:气象出版社,1987.

[7] 吴亭,吕伟涛,刘晓阳,等.北京地区不同天气条件下近地面大气电场特征[J].应用气象学报,2009,20(4):394-401.

[8] 徐栋璞,王振会,曾庆锋,等.近地面大气电场数据EMD方法分析[J].气象科技,2013,41(1):170-176.

[9] 潘家利,王明亮,吴海.基于大气电场的雷电监测预警技术研究[J].气象研究与应用,2012(9):94-98.

[10] 张义军,葛正谟,陈成品,等.青藏高原东部地区的大气电特征[J].高原气象,1998,17(2):135-141.

[11] 柴瑞,王振会,肖稳安,等.大气电场资料在雷电预警中应用[J].气象科技,2009,37(6):724-727.

[12] 郭秀峰,谭涌波,郭凤霞,等.建筑物尖端对大气电场畸变影响的数值计算[J].应用气象学报,2013,24(2):189-196.

[13] 谭涌波,朱俊儒,李洋超,等.孤立金属尖端的电晕触发阈值[J].应用气象学报,2014,25(3):339-346.

[14] 孟青,吕伟涛,姚雯,等.地面电场资料在雷电预警技术中的应用[J].气象,2005,31(9):30-33.

[15] 张敏锋,刘欣生,葛正谟.我国北方地区雷电活动的时空特征[J].高原气象,2000,19(3):277-284.

收稿日期:2014-11-29。国家自然科学基金项目(40901244);博士后基金项目(R2012B03);公益性行业科研专项(GYHY200806014)。路明月,副教授,主研领域:三维GIS及其数据模型,气象GIS理论与应用。郑建琴,硕士生。刘彬,硕士生。王轩,硕士生。邵一丹,硕士生。

中图分类号TP3

文献标识码A

DOI:10.3969/j.issn.1000-386x.2016.07.022

COMPRESSED STORAGE AND SHARING OF MASSIVE SPATIOTEMPORAL ATMOSPHERIC ELECTRIC FIELD DATA

Lu Mingyue1,2Zheng Jianqin1Liu Bin1Wang Xuan1Shao Yidan1

1(JiangsuKeyLaboratoryofMeteorologicalDisaster(NanjingUniversityofInformationScienceandTechnology),Nanjing210044,Jiangsu,China)2(SchoolofRemoteSensing,NanjingUniversityofInformationScienceandTechnology,Nanjing210044,Jiangsu,China)

AbstractThe atmospheric electric field data can indicate the fluctuation of atmospheric electric fields on the ground very well, which is significant to the research of thunder and lightning generation. However, the spatiotemporal and massive characteristic of electric field data brings much trouble to storing and sharing the data as well as data’s professional analysis and use. To solve this problem, in this paper, according to the characteristic that the electric field data fluctuates along with the time, we propose a time division-based compressed organisation storage algorithm. On the premise of “lossless in fluctuational segment” of the electric field data, it can ensure to effectively decrease the storage of redundant data of electric field, save the storage space and improve the efficiency of massive data query. Based on the organisation structure of “fluctuational segment” or “non-fluctuational segments”, the algorithm further increases the flexibility of data retrieval and query; according to this, we realise the services sharing for electric field data and its compression operation algorithm based on WCF technology. At last, we adopt the actual electric field data to implement the algorithm with example, which fully verifies the effectiveness and feasibility of the proposed compressed storage algorithm and sharing mechanism, this can provide the support for efficient professional analysis and use of the massive electric field data.

KeywordsElectric field dataCompressStorageSharing

猜你喜欢

压缩算法海量电场
一种傅里叶域海量数据高速谱聚类方法
巧用对称法 妙解电场题
基于参数识别的轨道电路监测数据压缩算法研究
海量快递垃圾正在“围城”——“绿色快递”势在必行
一种基于嵌入式实时操作系统Vxworks下的数据压缩技术
电场强度单个表达的比较
一个图形所蕴含的“海量”巧题
电场中六个常见物理量的大小比较
PMU数据预处理及压缩算法
感生电场与动生电场的等效性探究