论文部分内容阅读
摘要 为了能够充分发挥区域站在山洪气象灾害监测中的作用,秦皇岛市开发了新的区域站数据查询显示系统,该系统能够监控各雨量点雨量信息并根据雨量达到的量级进行声音报警;能进行历史数据查询,并将结果导出为Word文档、Web文档或普通文本文件;还能根据已有雨量点信息通过插值和填色生成秦皇岛市降水分布图,便于以更直观的方式为地方政府服务。
关键词 区域气象站;数据查询;显示;系统设计;实现;河北秦皇岛
中图分类号 P415.1 2 文献标识码 A 文章编号 1007-5739(2015)13-0290-03
Design and Implementation of Data Inquiry and Display System of Qinhuangdao Regional Automatic
Meteorological Station
CHANG Ju-zheng 1 CUI Fen-e 2 YANG Jia 1 WU Ming-hao 1
(1 Meteorological Bureau of Qinglong Manchu Autonomous County in Hebei Province,Qinglong Hebei 066500; 2 Qinhuangdao Meteorological Bureau)
Abstract To make regional automatic meteorological station newly established play an effective role,new data query and display system of Qinhuangdao regional station was developed,which can monitor rainfall of all regional station,give voice alarm when rainfall of some station reach a certain level,and make the inquiry of historical data and export the result into word,html or txt document,generate rainfall distribution chart by interpolation.All these will be convenient of serving local government and civilian of Qinhuangdao City.
Key words regional automatic meteorological station;data inquiry;display;system design;implementation;Qinhuangdao Hebei
随着山洪工程项目的顺利实施,秦皇岛市的区域自动气象站无论是总数还是密度,都达到了前所未有的高度,原来所使用的雨量实时采集系统由于无法显示全部区域站雨量信息而无法满足需求;同时由于原系统数据库存放在省局,在市县局通过原客户端进行查询统计时存在数据保存周期较小、查询费时等缺点。进入汛期后,由于局地性强降水极易出现,原采集系统没显示出来的区域往往就有强降水发生,而这些地方又是山洪灾害频发地,所以对这些新建区域站的降水信息进行监控就显得尤为重要。鉴于以上几点,并结合台站使用要求,设计开发了一套新的区域站数据查询显示系统,囊括了秦皇岛市所有区域站的同时选择在本地架设数据库服务器,便于统一管理和提高查询统计时效,同时提供将查询结果按常用格式导出的功能,便于为地方政府和居民服务,也让后建的区域站发挥积极作用。
1 系统功能及架构
系统功能及架构如图1所示。系统采用C/S架构,数据入库客户端以省局数据库为数据源,在入库配置文件和定时器的作用下,从省局数据库查询最新更新过的数据并插入本地数据库,整个过程可以自动执行,也可以根据情况通过手动点击按钮执行;数据查询显示客户端则依托本地数据库提供了数据显示(雨量、温度)、历史数据查询、数据分析及数据导出等功能。对于数据显示功能,缺省情况下显示日累积雨量及最近整点时次的各区域站温度;历史数据查询则提供了任意时间段雨量和温度数据的查询统计功能;数据分析则可根据各区域站点的降水或温度数据插值后根据量级填充相应的颜色,得到雨量或温度分布情况;数据导出功能则可以将查询或插值分析产生的结果导出为Web页面或Word文件或简单的文本文件,方便用户制作各类服务材料;还可对各区域站雨量进行监控,当达到或超过指定量级时发声报警。
为了尽可能的减少系统开发成本,本地数据库采用开源的MySQL,安装和维护都简单易行,且功能足够强大而稳定[1]。入库客户端和数据查询显示客户端均采用Visual Studio 2010为开发平台,开发语言为C#[2]。
2 数据库设计
区域站数据每隔5 min便将采集数据以固定格式上传到省局,经处理后进入省局数据库服务器,为了便于数据的统一管理以及提高查询时效,新建本市区域站数据库系统,通过开发入库客户端软件定时从省局服务器查询新插入的数据并插入本地数据库。本地数据库首先需要建立一个存放本地区域站基本信息的StationList表,基本信息包括区站号、行政归属(所属的省、市、县)、经纬度信息等,以及用于存放区域站小时温度数据的Temperature表和存放区域站降水数据的Rain表,建立2张表的SQL语句如下。
建立Temperature表的SQL语句为:
CREATE TABLE Temperature(
stationID varchar(5) NOT NULL, observetime datetime NOT NULL,
hourtemp float DEFAULT NULL,
maxtemp int(11) DEFAULT NULL,
timemaxtemp varchar(8) DEFAULT NULL,
mintemp int(11) DEFAULT NULL,
timemintemp varchar(8) DEFAULT NULL,
createtime datetime DEFAULT NULL,
lastmodify datetime DEFAULT NULL,
PRIMARY KEY(stationID,observetime))
建立Rain表的SQL语句为:
CREATE TABLE Rain(
stationID varchar(5) NOT NULL,
observetime datetime NOT NULL,
createTime timestamp NOT NULL DEFAULT ′0000-00-00 00:00:00′,
lastmodify timestamp NOT NULL DEFAULT CURRENT_ TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
r1 tinyint(3) unsigned DEFAULT NULL,
r2 tinyint(3) unsigned DEFAULT NULL,
……
r60 tinyint(3) unsigned DEFAULT NULL,
PRIMARY KEY(stationID,observetime))
这2个表中,都有observetime、createTime、lastmodify 3个时间类型字段,observetime表示数据属于那个时次的观测数据,createTime表示该条记录被建立的时间,而lastmodify则表示该条记录最后被修改的时间,对于雨量数据由于每条记录包含了1 h内60 min的分钟雨量数据,如果观测到有降水,那么每隔5 min发出的数据都可能会刷新前面已插入数据,同时更新最后更新时间即lastmodify字段。
3 数据入库客户端设计
数据入库客户端界面设计如图2所示。整个界面简洁明了,其中各项参数如数据库IP、用户名、口令、数据库名等信息均存放在配置文件中,客户端启动时自动从配置文件中读取加载。测试按钮用于对应数据库服务器的连通性测试,操作命令分别用于手工拷贝数据、保存配置信息、退出客户端。
软件启动后自动最小化到托盘区,然后按照程序流程设定的循环进行数据入库操作,程序操作流程如图3所示。当程序启动后,首先从配置文件加载数据库连接参数,然后使用连接参数查询本地数据库获取本地区域站列表,然后启动定时器,开始周期为1 min的循环。根据2种数据的更新频率不同,设计温度数据每10 min拷贝1次,降水数据则1 min拷贝1次。拷贝数据的操作是以站为单位按照区域站列表进行循环,每个站都分别进行新数据的查询和插入。
在数据查询拷贝的过程中,不可避免会出现数据库操作异常的情况,这些异常会影响该次循环运行过程中的数据拷贝,但由于每次循环均会重复查询未插入的数据,所以本次循环未插入成功的数据会在后面循环过程中继续进行再次插入,直到成功为止。
4 数据查询显示客户端设计
4.1 主界面设计
数据查询显示客户端是最终提供给业务人员使用的,软件主界面用于显示查询结果,分为左、右2个部分。左边占据了整个窗口的大部分,显示以本地地图为背景的数据信息,缺省情况下显示日累积雨量,各区域站位置由经纬度定位,可以直观地显示数据在地理上的分布特性;右侧以表格的形式显示经过排序后的区域站数据信息。左、右2个部分还可以进行联动,当鼠标选中右边列表中某一行时,左边地图对应区域站将弹出信息,以更加醒目的形式显示该站点的详细信息如区站号、降水量或温度数值,弹出的信息显示一段时间后自动消失。
软件采用秦皇岛地图作为背景,各种数据就显示在背景地图之上,为了使地图随窗口大小进行等比例放大以确保程序可以在不同分辨率的显示器中正确显示,设置BackgroundImageLayout属性为Zoom,且最小值不得小于地图原值。各区域站在地图上位置可以通过如下公式来确定:
x=(longitude-xMin)×width/(xMax-xMin)
y=(yMax-latitude)×height/(yMax-yMin)
其中longitude、latitude分别代表区域站的经纬度,xMin、xMax、yMin、yMax分别代表秦皇岛市地理范围的最大最小经纬度,width和height则分别表示控件的长和宽,当窗口大小发生变化时,width和height也将发生变化,但其长宽比保持固定,以保持背景图像不变形。
软件启动后按照配置参数的设置定时从数据库读取数据,查询结果将用于填充右边的表格以及左边对应位置的数据显示控件,当数据有变化时则更新旧数据,并以闪烁的红色站标来加以提醒,当降水量超过某个量级时还会发声报警,提醒值班业务人员加以关注。
4.2 历史数据查询
历史数据查询主要用来查询历史时段的小时降水和小时温度数据。对于降水,以表格和图形的形式显示查询时段内各小时降水量及小时内各分钟的降水分布情况;对于温度除了以列表形式显示各小时的整点温度、1 h内最高最低温度及出现时间外,还以逐小时分布曲线的形式形象地显示了查询时段内温度的小时变化曲线。 4.3 插值分析
插值分析功能主要是根据各区域站雨量,插值后根据量级填充相应的颜色[3-4],填充颜色的选取严格按照国家标准执行。该部分功能主要采用在气象部门较为常用的Surfer软件来完成,产生的图形化结果很形象地显示了秦皇岛市降水的分布情况,可以更好地为地方政府进行服务。Surfer软件是美国Golden Software公司研制的基于Windows系列操作系统的插值绘图软件,是一个十分流行的小型软件。同时还可通过VB等编程语言将其强大的功能嵌入到用户开发的系统中[4]。
通过Surfer插值绘图流程如图4所示。第一步:通过查询数据库获取的站点数据经插值后生成格点数据。此处数据源是1个至少包含3列的文本文件,其中2列表示区域站的经纬度,1列表示降水量,还可以有其他的例如区站号或区站名等。Surfer缺省情况下是以第1列为经度、第2列为纬度、第3列为值,如果文件不是按照这个格式写入的,那么在进行插值时就需要手动指定。第二步:格点数据在地图文件的控制下经白化后生成新的格点文件。地图文件是表示秦皇岛市地理边界封闭曲线的数据文件,用于控制数据的范围,经白化后只对封闭曲线指定范围的数据予以保留。第三步:利用白化后的格点数据绘制等值线。第四步:将刚绘制的等值线根据量级填充相应颜色后生成成品图。
4.4 其他功能
其他功能包括数据导出和日志。数据导出功能可以将查询结果导出为Word文件格式或html格式或txt普通文本文件,可满足不同情况下的应用需求。其中降水数据是按照不同的县来排序的,同一个县按照降水量降序排列,如果是Word文件格式或网页文件格式,还可以以不同的颜色表示各个县区的第1个数据,这样很容易就找到各个县的数据列表,方便了各县业务人员进行查看。日志功能则主要用来记录各区域站雨量级别变化情况,当某个区域站开始降雨或降水量级别发生变化后发声报警,并产生1条日志信息,方便业务值班人员查看降水量的变化情况。
5 结语
秦皇岛区域站数据查询显示系统极大地方便了业务值班人员获取全部区域站的降水信息,使得新装的区域站在地方气象服务中发挥积极作用。该软件运行逾1年来,稳定可靠。但由于该软件后台的数据库来自于省局数据库,而不是直接来自区域站,故时效性稍差。另外,由于开发时间较短、开发经验有限以及调研不到位,整个系统难免会有不尽如人意的地方,这只能在以后的工作中不断加以改进和完善。
6 参考文献
[1] PAUL DuBois.MySQL权威指南[M].北京:机械工业出版社,2004.
[2] KARLI Watson,CHRISTIAN Nagel.C#入门经典 [M].5版.北京:清华大学出版社,2010.
[3] 任印国,魏永强.使用Surfer软件绘制地质图件和处理地质数据的方法[J].测绘技术装备,2006(1):35-37.
[4] 余祖玉,俞立军,王丽华.基于Surfer Automation技术的水文气象等值线图绘制[J].软件导刊,2002(6):157-158.
关键词 区域气象站;数据查询;显示;系统设计;实现;河北秦皇岛
中图分类号 P415.1 2 文献标识码 A 文章编号 1007-5739(2015)13-0290-03
Design and Implementation of Data Inquiry and Display System of Qinhuangdao Regional Automatic
Meteorological Station
CHANG Ju-zheng 1 CUI Fen-e 2 YANG Jia 1 WU Ming-hao 1
(1 Meteorological Bureau of Qinglong Manchu Autonomous County in Hebei Province,Qinglong Hebei 066500; 2 Qinhuangdao Meteorological Bureau)
Abstract To make regional automatic meteorological station newly established play an effective role,new data query and display system of Qinhuangdao regional station was developed,which can monitor rainfall of all regional station,give voice alarm when rainfall of some station reach a certain level,and make the inquiry of historical data and export the result into word,html or txt document,generate rainfall distribution chart by interpolation.All these will be convenient of serving local government and civilian of Qinhuangdao City.
Key words regional automatic meteorological station;data inquiry;display;system design;implementation;Qinhuangdao Hebei
随着山洪工程项目的顺利实施,秦皇岛市的区域自动气象站无论是总数还是密度,都达到了前所未有的高度,原来所使用的雨量实时采集系统由于无法显示全部区域站雨量信息而无法满足需求;同时由于原系统数据库存放在省局,在市县局通过原客户端进行查询统计时存在数据保存周期较小、查询费时等缺点。进入汛期后,由于局地性强降水极易出现,原采集系统没显示出来的区域往往就有强降水发生,而这些地方又是山洪灾害频发地,所以对这些新建区域站的降水信息进行监控就显得尤为重要。鉴于以上几点,并结合台站使用要求,设计开发了一套新的区域站数据查询显示系统,囊括了秦皇岛市所有区域站的同时选择在本地架设数据库服务器,便于统一管理和提高查询统计时效,同时提供将查询结果按常用格式导出的功能,便于为地方政府和居民服务,也让后建的区域站发挥积极作用。
1 系统功能及架构
系统功能及架构如图1所示。系统采用C/S架构,数据入库客户端以省局数据库为数据源,在入库配置文件和定时器的作用下,从省局数据库查询最新更新过的数据并插入本地数据库,整个过程可以自动执行,也可以根据情况通过手动点击按钮执行;数据查询显示客户端则依托本地数据库提供了数据显示(雨量、温度)、历史数据查询、数据分析及数据导出等功能。对于数据显示功能,缺省情况下显示日累积雨量及最近整点时次的各区域站温度;历史数据查询则提供了任意时间段雨量和温度数据的查询统计功能;数据分析则可根据各区域站点的降水或温度数据插值后根据量级填充相应的颜色,得到雨量或温度分布情况;数据导出功能则可以将查询或插值分析产生的结果导出为Web页面或Word文件或简单的文本文件,方便用户制作各类服务材料;还可对各区域站雨量进行监控,当达到或超过指定量级时发声报警。
为了尽可能的减少系统开发成本,本地数据库采用开源的MySQL,安装和维护都简单易行,且功能足够强大而稳定[1]。入库客户端和数据查询显示客户端均采用Visual Studio 2010为开发平台,开发语言为C#[2]。
2 数据库设计
区域站数据每隔5 min便将采集数据以固定格式上传到省局,经处理后进入省局数据库服务器,为了便于数据的统一管理以及提高查询时效,新建本市区域站数据库系统,通过开发入库客户端软件定时从省局服务器查询新插入的数据并插入本地数据库。本地数据库首先需要建立一个存放本地区域站基本信息的StationList表,基本信息包括区站号、行政归属(所属的省、市、县)、经纬度信息等,以及用于存放区域站小时温度数据的Temperature表和存放区域站降水数据的Rain表,建立2张表的SQL语句如下。
建立Temperature表的SQL语句为:
CREATE TABLE Temperature(
stationID varchar(5) NOT NULL, observetime datetime NOT NULL,
hourtemp float DEFAULT NULL,
maxtemp int(11) DEFAULT NULL,
timemaxtemp varchar(8) DEFAULT NULL,
mintemp int(11) DEFAULT NULL,
timemintemp varchar(8) DEFAULT NULL,
createtime datetime DEFAULT NULL,
lastmodify datetime DEFAULT NULL,
PRIMARY KEY(stationID,observetime))
建立Rain表的SQL语句为:
CREATE TABLE Rain(
stationID varchar(5) NOT NULL,
observetime datetime NOT NULL,
createTime timestamp NOT NULL DEFAULT ′0000-00-00 00:00:00′,
lastmodify timestamp NOT NULL DEFAULT CURRENT_ TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
r1 tinyint(3) unsigned DEFAULT NULL,
r2 tinyint(3) unsigned DEFAULT NULL,
……
r60 tinyint(3) unsigned DEFAULT NULL,
PRIMARY KEY(stationID,observetime))
这2个表中,都有observetime、createTime、lastmodify 3个时间类型字段,observetime表示数据属于那个时次的观测数据,createTime表示该条记录被建立的时间,而lastmodify则表示该条记录最后被修改的时间,对于雨量数据由于每条记录包含了1 h内60 min的分钟雨量数据,如果观测到有降水,那么每隔5 min发出的数据都可能会刷新前面已插入数据,同时更新最后更新时间即lastmodify字段。
3 数据入库客户端设计
数据入库客户端界面设计如图2所示。整个界面简洁明了,其中各项参数如数据库IP、用户名、口令、数据库名等信息均存放在配置文件中,客户端启动时自动从配置文件中读取加载。测试按钮用于对应数据库服务器的连通性测试,操作命令分别用于手工拷贝数据、保存配置信息、退出客户端。
软件启动后自动最小化到托盘区,然后按照程序流程设定的循环进行数据入库操作,程序操作流程如图3所示。当程序启动后,首先从配置文件加载数据库连接参数,然后使用连接参数查询本地数据库获取本地区域站列表,然后启动定时器,开始周期为1 min的循环。根据2种数据的更新频率不同,设计温度数据每10 min拷贝1次,降水数据则1 min拷贝1次。拷贝数据的操作是以站为单位按照区域站列表进行循环,每个站都分别进行新数据的查询和插入。
在数据查询拷贝的过程中,不可避免会出现数据库操作异常的情况,这些异常会影响该次循环运行过程中的数据拷贝,但由于每次循环均会重复查询未插入的数据,所以本次循环未插入成功的数据会在后面循环过程中继续进行再次插入,直到成功为止。
4 数据查询显示客户端设计
4.1 主界面设计
数据查询显示客户端是最终提供给业务人员使用的,软件主界面用于显示查询结果,分为左、右2个部分。左边占据了整个窗口的大部分,显示以本地地图为背景的数据信息,缺省情况下显示日累积雨量,各区域站位置由经纬度定位,可以直观地显示数据在地理上的分布特性;右侧以表格的形式显示经过排序后的区域站数据信息。左、右2个部分还可以进行联动,当鼠标选中右边列表中某一行时,左边地图对应区域站将弹出信息,以更加醒目的形式显示该站点的详细信息如区站号、降水量或温度数值,弹出的信息显示一段时间后自动消失。
软件采用秦皇岛地图作为背景,各种数据就显示在背景地图之上,为了使地图随窗口大小进行等比例放大以确保程序可以在不同分辨率的显示器中正确显示,设置BackgroundImageLayout属性为Zoom,且最小值不得小于地图原值。各区域站在地图上位置可以通过如下公式来确定:
x=(longitude-xMin)×width/(xMax-xMin)
y=(yMax-latitude)×height/(yMax-yMin)
其中longitude、latitude分别代表区域站的经纬度,xMin、xMax、yMin、yMax分别代表秦皇岛市地理范围的最大最小经纬度,width和height则分别表示控件的长和宽,当窗口大小发生变化时,width和height也将发生变化,但其长宽比保持固定,以保持背景图像不变形。
软件启动后按照配置参数的设置定时从数据库读取数据,查询结果将用于填充右边的表格以及左边对应位置的数据显示控件,当数据有变化时则更新旧数据,并以闪烁的红色站标来加以提醒,当降水量超过某个量级时还会发声报警,提醒值班业务人员加以关注。
4.2 历史数据查询
历史数据查询主要用来查询历史时段的小时降水和小时温度数据。对于降水,以表格和图形的形式显示查询时段内各小时降水量及小时内各分钟的降水分布情况;对于温度除了以列表形式显示各小时的整点温度、1 h内最高最低温度及出现时间外,还以逐小时分布曲线的形式形象地显示了查询时段内温度的小时变化曲线。 4.3 插值分析
插值分析功能主要是根据各区域站雨量,插值后根据量级填充相应的颜色[3-4],填充颜色的选取严格按照国家标准执行。该部分功能主要采用在气象部门较为常用的Surfer软件来完成,产生的图形化结果很形象地显示了秦皇岛市降水的分布情况,可以更好地为地方政府进行服务。Surfer软件是美国Golden Software公司研制的基于Windows系列操作系统的插值绘图软件,是一个十分流行的小型软件。同时还可通过VB等编程语言将其强大的功能嵌入到用户开发的系统中[4]。
通过Surfer插值绘图流程如图4所示。第一步:通过查询数据库获取的站点数据经插值后生成格点数据。此处数据源是1个至少包含3列的文本文件,其中2列表示区域站的经纬度,1列表示降水量,还可以有其他的例如区站号或区站名等。Surfer缺省情况下是以第1列为经度、第2列为纬度、第3列为值,如果文件不是按照这个格式写入的,那么在进行插值时就需要手动指定。第二步:格点数据在地图文件的控制下经白化后生成新的格点文件。地图文件是表示秦皇岛市地理边界封闭曲线的数据文件,用于控制数据的范围,经白化后只对封闭曲线指定范围的数据予以保留。第三步:利用白化后的格点数据绘制等值线。第四步:将刚绘制的等值线根据量级填充相应颜色后生成成品图。
4.4 其他功能
其他功能包括数据导出和日志。数据导出功能可以将查询结果导出为Word文件格式或html格式或txt普通文本文件,可满足不同情况下的应用需求。其中降水数据是按照不同的县来排序的,同一个县按照降水量降序排列,如果是Word文件格式或网页文件格式,还可以以不同的颜色表示各个县区的第1个数据,这样很容易就找到各个县的数据列表,方便了各县业务人员进行查看。日志功能则主要用来记录各区域站雨量级别变化情况,当某个区域站开始降雨或降水量级别发生变化后发声报警,并产生1条日志信息,方便业务值班人员查看降水量的变化情况。
5 结语
秦皇岛区域站数据查询显示系统极大地方便了业务值班人员获取全部区域站的降水信息,使得新装的区域站在地方气象服务中发挥积极作用。该软件运行逾1年来,稳定可靠。但由于该软件后台的数据库来自于省局数据库,而不是直接来自区域站,故时效性稍差。另外,由于开发时间较短、开发经验有限以及调研不到位,整个系统难免会有不尽如人意的地方,这只能在以后的工作中不断加以改进和完善。
6 参考文献
[1] PAUL DuBois.MySQL权威指南[M].北京:机械工业出版社,2004.
[2] KARLI Watson,CHRISTIAN Nagel.C#入门经典 [M].5版.北京:清华大学出版社,2010.
[3] 任印国,魏永强.使用Surfer软件绘制地质图件和处理地质数据的方法[J].测绘技术装备,2006(1):35-37.
[4] 余祖玉,俞立军,王丽华.基于Surfer Automation技术的水文气象等值线图绘制[J].软件导刊,2002(6):157-158.