自动气象站数据预处理方法
2017-03-06张美玲陈龙辛明月殷红
张美玲++陈龙++辛明月++殷红
摘要 对自动气象站的数据进行质量检验,并利用C#语言将文本文件格式的气象数据输入到SQL Service书库中,用SQL语言进行修改、查询、维护,减轻了数据使用者从气象数据源文件中提取各种主要气象信息的工作量。
关键词 自动气象站;数据预处理;质量控制;程序设计
中图分类号 P415.1+2 文献标识码 B 文章编号 1007-5739(2017)01-0203-03
自动气象站是由电子设备或计算机控制的自动进行气象观测和资料收集传输的气象站,是一种自动收集、处理、存储或传输气象信息的装置[1]。它每隔一定时间,就会自动采集一次气象数据,实现了对多种气象数据的实时观测,并将观测的数据实时传输到控制终端,减轻了人工观测的劳动强度,有效提高了工作效率。
自从自动气象站投入使用以来,很多学者对其数据能更好地使用进行了研究,主要是数据的质量控制、处理以及维护等。数据的质量控制包括2种:一种是对历史数据的质量控制;另一种是实时质量控制。世界气象组织认为,自动气象站资料实时质量控制应在2个层面控制:一是在观测台站进行基本质量控制,如王建庄等[2]在观测台站做过实时质量控制;二是在数据处理中心进行,如王海军等[3]对数据处理中心做过实时质量控制。本文是对历史数据进行质量控制。
目前,气象数据处理常见的方法是用程序对自动气象站数据进行处理,从而减轻了数据使用者从气象数据源文件中提取各种主要气象信息的工作量[4]。高 杰等[5]应用C++语言开发研制自动气象站数据质量检查系统;冉桂平等[6]应用Visual Basic 6.0与SQL Server 2000相结合,采用SQL结构化数据查询语言,建立起基于C/S方式地自动气象站资料综合管理应用系统;谢 光等[7]基于VB.NET技术研究了地面自动气象站数据库;张秀英等[8]应用C#语言结合SQL Server 2000数据库开发研制乌海两要素自动气象站数据接收系统。
自动气象站采集的数据是以.txt的形式保存的,每隔10 min传输1次。文本文件格式的数据不利于进行计算、统计等,而气象要素多、数据量大,如何能更好地处理大量数据,就成为一个非常重要的问题。鉴于此,本文应用C#语言结合SQL Server 2008数据库对沈阳市自动气象站的数据进行处理,旨在为沈阳市自动气象站数据处理提供一些建议。
1 开发工具及运行环境
1.1 开发工具
本文用的开发工具是C#。C#语言是当前使用非常广泛的一种开发语言,其用途广泛,既可以开发面向窗口的应用程序,也可以开发面向网页的B/S系統。对于现在既需要作应用程序又要作网络查询系统来说,用C#来开发是最合适的。
1.2 运行环境
运行环境是目前使用最广泛的数据库系统SQL Server[9]。
2 自动气象站数据处理实现过程
2.1 自动气象站数据质量检验
中国气象局在全国范围内使用的地面测报业务软件OSSMO 2004版,其实时地面常规要素数据文件简称ZZ文件,保存了自动站每分钟实时采集的所有数据[10-11]。
自动气象站数据质量控制贯彻在设计、选购、测试、安装、运行全过程中,现主要对输出的数据进行质量检验,即各气象要素的检验。检验通常遵循以下规则①各要素是否符合正常的变化规律;②各要素的测量值是否符合相互间的关系;③极值及出现时间是否有反常现象;④当资料出现反常时,应从相关情况分析其合理性;⑤当月统计值(平均值、合计值、极值)出现明显反常时,应用时空资料比较[12]。
用气候极值范围检查、内部一致性检查、时间一致性检查、空间一致性检查,对自动气象站的实时资料进行自动质量控制。
2.1.1 日极值与定时值的比较检查。日最低气压≤定时气压≤日最高气压;日最低气温≤定时气温≤日最高气温;定时风速≤日最大风速;日最小相对湿度≤定时相对湿度。
2.1.2 要素的相关检查。海平面气压≥本站气压(海拔高度低于0 m的台站除外);极大风速≥最大风速。
2.1.3 气候极值比较检查。最高本站气压<1 050.0 hPa,日最低本站气压>600.0 hPa;最高气温<50.0 ℃,日最低气温 >-55.0 ℃;定时降水量<200 mm;日最大风速<65.0 m/s;日极大风速<75.0 m/s。
2.2 自动气象站数据入库
2.2.1 自动气象站采集的原始数据。自动气象站实时地面气象数据传输文件是指气象站通过自动气象站或人工观测的地面气象记录实时形成的数据文件,该文件可作为实时上传的地面气象报告,其文件组成见表1。
文件名中:“Z_O_AWS_ST_C5、Z_O_SAD_ST_C5、Z_O_ AWS_DAY_C5、Z_R_AWS_C5”为固定编码;“IIiii”为测站的区站号;“yyyyMMddhhmmss”为文件生成的时间(国际时),“yyyy”为年,4位;“MM”为月,2位;“dd”为日,2位;“hh”为小时,2位;“mm”表示为分钟,2位;“ss”为秒,2位[12]。
图1为L1003气象站2009年5月19日16:00的实时数据文件,数据记录如图2所示,其中记事本内各数据记录包含的内容如图3所示。
2.2.2 数据导入和数据入库。本文利用C#语言编程,将自动气象站输出的文件导入到SQL数据库中的表文件。在沈阳市自动气象站大约有82个,因此采集的数据量很庞大,其中每个自动气象站10 min记录1次数据,1 d的数据作为一个文件夹储存起来。如此庞大的数据用Excel来处理很不方便,可通过编程将这些数据导入到数据库中进行处理。数据文件的导入过程如图4所示,导入后的数据在数据库中存在的形式如图5所示,每个自动气象站1年的数据为1个表。
在数据库中打开L1005(站名两家子)自动气象站2008年的监测信息,部分结果如图6所示。
2.2.3 数据修改。修改输入到SQL Server数据库中的自动气象站数据明显的错误。如L1003区站监测信息表中观测时间“20080501142000”被错误地写成了“20080101142000”。修改的具体操作步骤如下:①鼠标右键单击数据表L1003区站2008年监测信息,在弹出的快捷菜单中选择“编辑前200行”命令(图7);②在弹出的对话框中将观测时间内的错误记录“20080101142000”改成“20080501142000”即可(图8),最后单击保存按钮。其他字段如有错误,修改步骤同上。
2.2.4 数据查询。在SQL Server数据库中,对其数据进行查询比较方便,简单的SQL语言即可实现。例如:查找沈阳市L1003站2008年5月的数据,查询界面及结果分别见图9、10,过程如下:
USE [MR-KFGL]
SELECT 气温,观测时间
from [dbo].[L1003区站监测信息]
where 观测时间 between 20080501001000 and 2008053 1235000
2.2.5 自动气象站数据维护。数据库在使用的过程中必须进行定期的维护,如更新数据库统计信息、执行数据库备份等,以确保数据库一直处于最佳的运行状态。SQL Server提供了维护计划向导,用户可以创建一个维护计划,对从列表中选择的数据库按计划的间隔定期运行维护计划[13-14]。对自动气象站的数据要及时备份。
3 结语
运用C#语言编写的程序和SQL Server数据库系统实现自动气象站数据处理的过程,该系统能进行自动气象站的数据入库、数据修改、数据查询和数据庫维护等功能,减轻了数据使用者从气象数据源文件中提取各种主要气象信息的工作量。程序处理气象数据方法利于使用者更好地应用数据,查询便宜、灵活,方便进行一些简单修改,维护起来也比较简单。
4 参考文献
[1] 李黄.自动气象站实用手册[M].北京:气象出版社,2007.
[2] 王建庄,许沛林.Ⅱ型自动气象站数据采集的实时质量控制[J].广东气象,2009,31(5):57-58.
[3] 王海军,杨志彪,杨代才,等.自动气象站实时资料自动质量控制方法及其应用[J].气象,2007,33(10):102-109.
[4] 窦以文,屈玉贵,陶士伟,等.北京自动气象站实时数据质量控制应用[J].气象,2008,34(8):77-81.
[5] 高杰,张海娜.地面自动气象站数据质量检查系统[J].辽宁气象,2004(2):39-40.
[6] 冉桂平,胡学敏,付晋.自动气象站资料综合管理应用系统[J].电脑知识与技术,2007,1(6):1658-1687.
[7] 谢光,贾保先.基于.NET技术的数据库技术与应用[J].数字技术与应用,2016(8):120.
[8] 张秀英,王继东.乌海两要素自动气象站数据接收系统软件的设计与实现[J].内蒙古气象,2009(1):40-41.
[9] 孙明丽.SQL Service 2005数据库系统开发完全手册[M].北京:人民邮电出版社,2007:98.
[10] 中国气象局监测网络司.地面气象测报业务系统软件操作手册[M].北京:气象出版社,2004:1-192.
[11] 中国气象局.地面气象观测数据文件和记录薄表格式[M].北京:气象出版社,2005:l-173.
[12] 胡玉峰.自动气象站原理与测量方法[M].北京:气象出版社,2004:124-126.
[13] 张孝峰,李刚,李来民.自动气象站信息数据库业务系统开发与应用[J].山东气象,2004,24(3):25.
[14] 庄子明.基于XML的数据库技术及应用[J].计算机工程,2002,28(1):119-121.