地面自动站气象要素网络共享平台的实现

2014-07-07 02:44符凤平吴哲红冯新建陈贞宏
中低纬山地气象 2014年3期
关键词:纵坐标气象要素曲线图

符凤平,吴哲红,冯新建,陈贞宏

(贵州省安顺市气象局,贵州 安顺 561000)

1 引言

自2012年3月31日20时起执行新的地面自动站气象要素数据文件格式以后,由于其文件命名和内容格式均与以前有所不同,数据文件格式发生较大变化,导致部分气象业务服务应用软件无法继续使用,气象业务服务、科研开发工作受到不同程度的影响。相关技术人员曾利用地面自动站资料异地备份服务器上的资料,对自动站逐日气象要素进行了开发与应用,但由于程序采用C/S工作方式,安装与使用均不太方便,造成对异地备份服务器上的资源利用不足,地面自动站异地备份系统未能充分发挥作用。

至目前为止,在地面自动站气象要素网络共享方面的开发较少,造成地面自动站气象要素的共享程度不高,自动站资料未能充分发挥效益。为了改善以上所述现状,充分发挥地面自动站气象要素数据的使用效率,结合气象业务、服务及管理的实际需要,非常有必要对地面自动站气象要素数据进行开发与应用。

本平台采用C/S和B/S两种软件体系结构,最终实现地面自动站气象要素的Web共享。由于面向用户的前端程序采取B/S工作模式,维护与操作较为简便,适合使用对象较广,对于提高气象业务服务、科研及管理水平,具有一定的积极意义。

2 平台简介

2.1 主要结构

平台主要分为后台模块和前台模块两部分。后台模块主要实现地面自动站气象要素入库与补调等功能,包含逐时要素和逐日要素入库与补调两部分子程序,其程序可集中或分散运行于同一网段内的任何一台计算机上。其中“逐时要素入库程序”实现定时读取存放在省级服务器上的长Z文件,“逐日要素入库程序”实现定时读取本地异地备份服务器上的B文件。前台模块主要实现逐时要素和逐日要素基于Web方式下的显示与查询、统计与报表输出、各类统计图生成等功能。平台主要结构见图1。

2.2 技术方法

基于省—地—县气象光纤通信网和局域网,以Windows 7操作系统为开发平台,分别采用C/S和B/S两种结构。后台模块的实现,基于C/S工作模式,使用VB编程语言和SQL Server数据库技术,实现逐时、逐日气象要素的入库及补调。前台模块的实现,基于B/S工作模式,使用ASP开发环境、VML语言、VBScript与JavaScript脚本语言等技术,实现要素显示与查询、自动统计与Excel报表输出、各类统计图生成等功能。

图1 平台主要结构

2.3 平台主要实现功能

2.3.1 后台模块 主要实现逐时、逐日气象要素的入库与补调。逐时气象要素入库程序主要读取各自动站逐时上传到省级服务器的数据文件,其文件格式主要参考中国气象局综合观测司组织制定并于2012年3月31日20时起开始执行的《地面气象要素数据文件格式(V1.0)》。

逐日要素入库程序分老站和新站两部分。老站(即ZQZ-C2自动站)入库程序主要读取地(市)级异地备份服务器BaseData子目录下的B文件。新站(即DZZ4新型自动站)入库程序主要读取省级服务器上的自动站长Z文件,其中最高气温、最低气温、降水、蒸发、日照等数据来源于每天20时的长Z文件,平均气温来源于每天02、08、14、20 4个时次的气温平均值。读出的逐时或逐日气象要素,通过一定计算或格式转换后再写入数据库。

2.3.2 前台模块[1]显示与查询:主要以表格方式实现逐时和逐日气象要素的显示与查询,显示的气象要素均已进行格式转换,如要素观测时间,已从世界时转换为北京时。显示主界面以30 s自动刷新,显示最新逐时气象要素信息。在显示界面,链接入日期控件,方便对历史气象要素进行查询。

统计与报表输出:分别实现按日、旬、月对自动站逐日气象资料进行统计。统计时,事先选择日期、气象要素、自动站名等,经过一定的计算或转换后,即可将统计信息直接导入到Excel报表文件,打开或保存该文件均可。

曲线图生成:可在线生成时序图和三线图,从生成的“要素时序图”,可动态监控自动站各气象要素过去24 h的变化情况,从“要素三线图”可动态监控各自动站每月每天固定时次气温、水汽压、本站气压等要素的变化趋势。

3 各部分功能简介

平台实现功能中,部分功能如逐时气象要素的自动入库与补调、显示与查询、统计与报表输出等,在笔者已发表的论文中已有介绍,这里主要介绍其它部分功能。

3.1 后台部分功能

3.1.1 逐日气象要素入库 基于地—县气象光纤通信网和局域网,自动读取地(市)级异地备份服务器BaseData目录下的B文件,定时将逐日气象要素读取入库。B文件是一个Access数据库文件,其包含的tabPrimObservData1表存放每个时次的要素值,该表中的DryBulbTemp字段代表干球温度,PrecipitationAmount字段记录定时降水量(仅02时、08时、14时、20时有记录),利用这两个字段,可分别计算出日平均气温与日降水。B文件中的tabPrimObservData2表存放每日要素值,如 EvapanAmount字段代表小蒸发,EvapgaugeAmount字段代表大蒸发,SunshineSum字段代表日照。读出的逐日气象要素在经过一定计算或格式转换后,再写入SQL Server数据库。逐日要素入库流程见图2。

3.1.2 逐日气象要素补调 主要实现两种补调功能,第1种补调方式,即自动读取系统日期所在当月1日到当日的B文件。第2种补调方式,即读取系统日期所在上月每天的B文件。通过这两种方式将各站逐日气象要素补调入库,并设置进度条提示补调进程。

3.2 前台部分功能

3.2.1 VML 语言简介[2]VML(Vector Markup Language矢量可标记语言)是一种图形编程语言。矢量的图形意味着图形被放大或缩小时,其质量不受任何影响。VML相当于IE里面的画笔,结合脚本语言,可在 IE中绘制矢量图形。ASP架构与VML语言的几何原理如图3所示。中间层为Web服务器,通过ADO和数据库进行数据交换,可从数据层中查询出信息。在表示层,通过在ASP文件页面中嵌入VML语言,可动态生成各种Web矢量图形。

3.2.2 时序图的实现 主要实现气温、相对湿度、小时降水量等气象要素在当前系统时间过去24 h的变化曲线。图4为气温时序图生成界面。

图2 逐日气象要素入库流程

图3 ASP与VML几何原理图

图4 气温时序图生成界面

这里以生成过去24 h气温变化曲线为例,简述其实现方法及步骤。

①首先确定年、月、日、站名等参数,从数据库表dmxx中读出气温值。由于SQL Server数据库dmxx表中各气象要素的存放使用世界时,在读取数据库生成曲线图前,须使用时间函数如Year()、Month()、Day()和转换函数DATESERIAL()将其转换为北京时。

②建立时间与气温要素对应关系的坐标系。时间作为坐标系的横坐标值,横坐标实行动态处理,其序列值随系统时间变化而动态改变,始终显示当前系统时间过去24 h的序列值。在实现时,首先获取当前系统时间,将其作为时间横坐标极大值,再回推取得前24 h各时次的时间值,作为对应各时次的坐标值,循环生成24条坐标竖线,分别对应24h的各个时次,当前系统时间前24h的时间值为坐标原点。温度要素作为坐标系的纵坐标值,纵坐标的上下限取值范围根据该时段的气温极值作动态调整[3]。

③定义数组total(1,2),作为横纵坐标值参数。其中,total(0,1)代表横坐标字符串,total(1,1)代表纵坐标字符串。生成曲线图时经过一定的转换后,再生成横纵坐标具体值。在计算横坐标时,将23时作为间隔时间,分别从数据库中读取相应的气温值,然后将两次读取的字符串相加,形成最终的横纵坐标字符串。

④定义曲线图参数和坐标参数。定义的参数主要包括:曲线图居左居顶距离、图表宽度、图表高度、图表标题、X轴单位、Y轴单位等。

⑤定义背景颜色,计算系列参数值,最后画出曲线。计算的参数主要包括纵坐标最大值、横纵坐标间距等。画出曲线前,先分别画出横竖线条。以下是画气温变化曲线的主要代码:

for i=1 to num1‘num1代表横坐标深度

response.Write "<div id='line_"&i&"'style='display:"&displaystr&";'> "

for j=0 to num2-2‘num2代表纵坐标深度

this_hight1=cint(line_code(i,j+1)/(5*item_hight)*10000)‘item_hight代表纵坐标间距

this_hight2=cint(line_code(i,j+2)/(5*item_hight)*10000)

response.Write"<v:line…>"

response.Write " <o:extrusion v:ext='view'…/>"

next

3.2.3 三线图的实现 主要实现每月08时、14时、20时各自动站气温、水汽压、本站气压等3个气象要素的变化曲线,并可进行历史查询。为了方便浏览,根据3个气象要素值的大概范围,画图时使用双坐标系,气温和水汽压使用一个坐标系,本站气压使用另一个坐标系。三线图的实现方法与步骤简述如下:

①确定y4、m4、d4等参数值。通过计算,得出分别代表年、月、日、站名等的参数 y4、m4、d4、zm1,然后从数据库dmxx表中读出相应的气温、水汽压、本站气压3个要素值。不同自动站之间切换时,采用表单的 post提交方式,然后使用 Request.QueryString命令获取传递的站名参数。

②定义二位数组total2(d4,3),并赋初值。二位数组total2(d4,3)中的d4为第①步骤中计算出来的日期,代表横坐标最大值。在进行二位数组定义后首先赋初值,定义线条名称、颜色、宽度、类型、折点类型等参数,如total2(0,1)="气温,#FF0000,1.5,1,3",其中#FF0000 代表气温曲线颜色,1.5 代表线条宽度,1代表线条类型,3代表折点类型。total2(0,2)和total2(0,3)分别定义水汽压和本站气压的曲线参数。

③定义曲线图和坐标参数。主要定义曲线图标题、两个坐标的Y轴单位、居左居顶距离、曲线图宽度和高度、隔线条数、隔线颜色、底板颜色等参数。

④分别计算两个坐标系的Y轴最大值。首先分别取得气温和水汽压数组、本站气压数组中(第1行、第1列除外)最大的数据temp1和temp1_1,然后通过计算取得两个坐标系Y轴的最大值temp4和temp4_1。

⑤计算坐标相关参数。如坐标线左侧距离left_width、距左侧距离left_x、坐标高度TTAH、坐标宽度TLAW。

⑥画底板、横向等分线条、Y轴左侧横线、Y轴右侧横线、Y轴线右侧坐标等。

根据以上步骤计算出来的各种参数,结合Response.write"<v:shape>”命令,即可画出。

⑦画出Y轴左侧线坐标、坐标线x,y、右侧Y轴坐标线等,取出各种线条参数值最后即可分别画出3条曲线。

程序代码略。

4 结语

基于C/S和B/S两种工作模式,使用相关技术与方法,建立地面自动站气象要素网络共享平台,实现逐时气象要素和逐日气象要素的入库与补调、显示与查询、统计与报表输出、曲线图生成等功能。平台的建立,有效实现了地面自动站气象要素的网络共享,扩展了自动站数据的应用,为气象要素数据使用者提供了一套实用高效的数据分析工具,使地面自动站气象要素的开发与应用更加深入。通过该平台,用户不仅可以及时把握气象要素值及其变化趋势,对气温、雨量等关键气象要素过去24 h内极值产生时段的获取更是准确及时,尤其是平台的显示与查询、在线统计、曲线图生成等功能,为更精细、快捷、准确的气象业务服务提供了强有力的支撑,在其它如业务管理、气象科研等领域,均有一定的使用价值。

[1]符凤平,吴哲红,褚丽君,等.基于WEB方式的地面自动站逐时气象要素共享平台[J].贵州气象,2012,36(6):50-53.

[2]陈娴,刘开文,王蓉玲,等.VML项目开发实践[M].北京:中国铁道出版社,2004.

[3]刘平,白滔,等.气象要素ASP时间序列图的实现方法[J].贵州气象,2010,3(34):35-38.

猜你喜欢
纵坐标气象要素曲线图
·更正·
更正
勘 误
成都电网夏季最大电力负荷变化特征及其与气象要素的关系
秦皇岛煤价周曲线图
秦皇岛煤价周曲线图
秦皇岛煤价周曲线图
秦皇岛煤价周曲线图
河蟹养殖水温预报模型研究
探测环境变化对临沭站气象要素的影响