一种基于ExtJs的风玫瑰图绘制方法

文档序号:6525465阅读:322来源:国知局
一种基于ExtJs的风玫瑰图绘制方法
【专利摘要】本发明提供一种基于ExtJs的风玫瑰图绘制方法,数据增强预处理引擎进程对不同形式的原始风要素数据进行统一处理存放到数据库中;风玫瑰图数据提供服务进程根据定时条件从数据库中获得风玫瑰图数据进行数据解析、组装并向前台提供风玫瑰统计数据;玫瑰图绘制组件“WindRoseChart”配置风玫瑰图的不同的显示方式,将其配置到ExtJs的Panel组件中并与风玫瑰图的数据集绑定,同时利用ExtJs事件机制异步判定数据到达后更新玫瑰图。本发明的方法部署方便,能快速准确的在前端渲染及定时更新风玫瑰图,为Web信息系统前端玫瑰图的开发提供了充分的支持,并能方便快捷的接入到所需要绘制玫瑰图的Web信息系统中。
【专利说明】—种基于ExtJs的风玫瑰图绘制方法
【技术领域】
[0001]本发明涉及一种基于ExtJs的风玫瑰图绘制方法,属于气象领域。
【背景技术】
[0002]风玫瑰图主要分为风向玫瑰图和风速玫瑰图两种。风速玫瑰图是指一个给定地点一段时间内统计各风向上不同等级风的平均风速然后绘制在极坐标中的八个或十六个方位上。风向玫瑰图主要用来表示一个给定地点一段时间内不同风向上的风所出现的频率,按风向从外向中心吹,描在用八个或十六个方位。风玫瑰图还有其他形式,在极坐标系中的八个或十六个罗盘方位即表示风频又能表示风速。
[0003]风玫瑰图作为一种气象科学专用图表,能很好的反映过去风向发生的频率及方向上的风速大小情况,能很方便的得知当地的主导风向,同时预示着未来风向发生频率的趋势。
[0004]随着气象信息服务的细化和深化,目前它不仅出现在公众气象信息系统中,而且也逐渐在其他非气象部门提供的气象信息系统中出现。我们应该正确认识风玫瑰图,它在城市建设,城市规划中的功能区布局、高层建筑物设计,化学仓库及核电站选址,机场建设及气候研究,消防安全以及在环保和公共卫生等领域中都有非常广泛的应用。同时,世界各国都把开发利用新能源和可再生能源放到国家能源发展的优先地位,而在新能源中风能技术最为成熟,风电发展最为迅速,而风玫瑰图作为风电场建设前期必不可少的步骤一“风能资源评估”的主要工具,越来越受到能源领域的建设者和规划者的重视。随着风电场管理的逐步科学化,风玫瑰图也逐渐被应用到发电调度计划当中以及风功率预测预报系统中。
[0005]但目前绘制风向玫瑰图的专业软件不多见,业务中多使用传统的办公软件Excel来将统计好的资料手工绘制成所需的玫瑰图,另外还有些利用如VC++、VB等可视化开发语言来绘制玫瑰图,但所绘制的效果并不美观有时也并不理想,同时其可移植性也是一个问题。
[0006]随着Extjs、Jquery等Web前端技术的发展促使了许多公众气象信息系统、风电场实时监控系统、风功率预测系统等与风要素数据相关的应用系统向B/S架构转变,在这种背景下采用传统绘制方法所绘制的玫瑰图难以方便快捷地接入到B/S架构的应用系统中,其优势已不复存在。
[0007]另外,各地风玫瑰图均带有强烈的地区特征,不同的数据采集系统对所采集的风要素数据存储方式也并不完全统一。
[0008]各地区风向玫瑰图需要统计风向、风速,对16个方向、不同风级出现次数进行统计,再依据此数据计算频率,选择频率比例尺,按16个风向绘图,形象、直观、真切地反映出某时段某地区不同方位风向的频率特征,过程虽然简单,但工作量大,往往需几年甚至几十年该地区大量风向资料积累。所以在Web系统中绘制玫瑰图时采用传统的请求服务端脚本的方式获取风要素数据势必会因为统计数据量大造成占有过多网络带宽以至请求失败的结果。
【发明内容】

[0009]为了解决以上问题,本文发明了一种基于Extjs的风玫瑰图的绘制方法,首先对不同类型的风要素数据进行统一处理,其次利用Extjs所支持的Websocket与后台服务进程通信获取风要素统计数据,最后利用ExtJs异步事件传递机制通知前端自定义扩展的玫瑰图绘制组件快速正确绘制出效果美观的风玫瑰图。
[0010]本发明是针对传统玫瑰图绘制方法中存在的问题和局限性,发明一种基于ExtJs的玫瑰图绘制方法。该方法可定时自动预处理统计绘制玫瑰图所需风要素数据,能够从后台高效的获取统计数据生成玫瑰图。该方法可以快速接入到气象系统、风电场实时监控等Web应用系统中,同时可用于风电场、城市规划建设的参考。
[0011]本发明提出的一种基于ExtJs的玫瑰图绘制方法,其特征在于,包括:
[0012]I)确定原始风要素数据类型以及定时统计时间;
[0013]2)数据预处理引擎根据定时统计时间对不同形式的原始风要素数据进行预处理,最终形成不同等级的风在16个风向上出现的次数;并将统计结果数据统一存储到统计结果数据库中;
[0014]3)风玫瑰图数据提供服务进程,从统计结果数据库中获得风玫瑰图数据,并根据风玫瑰图数据解析格式进行组装数据。
[0015]风玫瑰图数据解析格式具体为:json数据格式或xml数据格式,风玫瑰图数据解析格式与风玫瑰图绘制的请求数据格式相对应。
[0016]所述的风玫瑰图数据提供服务进程支持wss协议的websocket,并提供向前台提供风玫瑰统计数据的函数签名。在其启动之前确定所述的风玫瑰图数据解析格式;读取统计结果数据根据所述的风玫瑰图数据解析格式将统计结果数据解析成风玫瑰图显示所需的数据格式。
[0017]所述的风玫瑰图数据提供服务进程统一管理Web客户端,将连接到所述的风玫瑰图数据提供服务进程的所有的客户端注册到管理队列中,当定时推送时间到达时依次遍历管理队列中注册的Web客户端对象,将风玫瑰图数据推送到前端;同时所述的风玫瑰图数据提供服务进程还支持事件触发推送风玫瑰图数据到前端。
[0018]在Extjs雷达图基础上扩展的玫瑰图绘制组件“WindRoseChart”,并很方便的将其配置到ExtJs的面板(Panel)组件中并与风玫瑰图的数据集(Store)绑定,然后基于Extjs所支持的wss协议的websocket向所述的风玫瑰图数据提供服务进程请求获取所需的Json格式或Xml格式的统计数据加载到风玫瑰图的数据集(Store)之后利用ExtJs事件机制异步判定数据到达后通知“WindRoseChart”更新数据进而显示新的玫瑰图。
[0019]该方法还支持手动输入所统计的风要素数据,然后经过数据增强预处理引擎处理之后存库并通过所述的风玫瑰图数据提供服务进程推动到前台通知Extjs前端更新玫瑰图。
[0020]Extjs端Web通信管理通用类“Ext.sac.router.Router”,用于与所述风玫瑰图数据提供服务进程通信;
[0021]Extjs端WebSocket服务通用公共类,用于与所述风玫瑰图数据提供服务进程建立连接;[0022]Extjs回调函数通用公共类,根据自定义函数签名来调用自定义的函数进行事务处理;
[0023]Extjs雷达图组件基础上自定义扩展的玫瑰图绘制组件“WindRoseChart” ;
[0024]将所述Ext js雷达图基础上扩展的玫瑰图绘制组件“WindRoseChart”渲染到ExtJs的面板组件中并与风玫瑰图的数据集绑定,风玫瑰图的数据集加载数据时利用Extjs的事件传递机制通知“WindRoseChart”更新数据。
[0025]Extjs 端 Web 通信管理通用类“Ext.sac.router.Router”,创建所述 WebSocket 服务通用公共类并为其注册 “dataarrived”,“connected”,“disconnected”,“datasent” 事件响应函数;
[0026]Extjs端Web通信管理通用类“Ext.sac.router.Router”,通过发送队列、等候队列、等候挂起队列来统一管理所有请求操作,同时当监听到“dataarrived”时通过所述回调函数通用公共类的实例对接收的数据进行所需的处理。
[0027]所述Extjs 端 WebSocket 服务通用公共类完成 “dataarrived”, “connected”,“disconnected”, “datasent” 事件的添加,当打开 Websocket 实例时触发“connected”,关闭Websocket实例时触发“disconnected”,当Websocket实例向后台发送数据时触发“datasent”事件;Websocket实例时监听到数据到达时触发“dataarrived”事件。
[0028]本发明的特点和所达到的有益效果:
[0029]首先,数据增强预处理引擎能够定时对形式不统一的原始风速风向数据进行预处理,其预处理的结果是统一的。为了快速的提供月统计数据和年统计数据,数据增强预处理引擎通过所设置的不同的定时条件将采集设备所采集的数据常包含10分钟、15分钟的平均值结果进行数据统计,获得按小时或者日平均风速、风向的统计结果,然后再进行月和年统计数据的计算。
[0030]其次,该方法前端Extjs和风玫瑰图数据提供服务进程利用WebSocket直接通信并利用Extjs的事件传递机制更新风玫瑰图的数据store进而通知“WindRoseChart”组件刷新风玫瑰图。直接利用websocket通信还可以根据所设定的条件定时的向前台推送统计数据,如定时向前台推送日平均风速、风向统计数据,前台会将数据到达的事件传递给ExtJs的风玫瑰图的数据store,数据store准备好之后会将事件继续传递到“WindRoseChart”组件从而达到定时动态更新风玫瑰图的目的。
[0031]再次,ExtJs本身已经将模型、数据和显示分层,只需将所述的“WindRoseChart”组件配置给Extjs的显示层(如Extjs的Panel组件),然后再将模型、显示层与数据store关联就可以利用Extjs本身自动更新进而触发自定义的事件。
[0032]最后,该方法对网络带宽的要求很低,只需获得后台服务进程统计的最终结果便可,从而可以通过ExtJs快速的在Web浏览器中渲染并生成玫瑰图。
[0033]以上特点使得本发明方法对以下功能的实现有重要意义:
[0034]本发明支持后台定时推送及前端请求数据的方式更新风玫瑰图;能够快速准确的在前端渲染效果美观的风玫瑰图、方便快捷的接入到所需要绘制玫瑰图的Web信息管理系统中;还支持将历史的风要素数据的统计结果手动导入到数据增强预处理引擎中完成预处理后存库并进行统计,然后推送统计数据到前端生成风玫瑰图;具有易于部署,移植方便、可扩展性强的特点。【专利附图】

【附图说明】
[0035]图1:本发明实施例一种ExtJs的玫瑰图绘制方法分成结构图。
[0036]图2:本发明实施例一种基于ExtJs的玫瑰图绘制方法流程图。
[0037]图3:本发明实施例一种基于ExtJs的玫瑰图绘制方法风玫瑰图柱状展示方式。
[0038]图4:本发明实施例一种基于ExtJs的玫瑰图绘制方法风玫瑰图折线展示方式。
[0039]图5:本发明实施例一种基于ExtJs的玫瑰图绘制方法风玫瑰图历史数据原始数据。
【具体实施方式】
[0040]为了使本领域技术人员能进一步了解本发明的特征及其技术内容,请参阅以下有关本发明的详细说明与附图,附图提供参考及说明并非用来限制本发明。
[0041]下面结合附图,对本发明的特征和技术方案进行整体描述,然后再给出具体的实施实例。
[0042]参见图1和图2,详细说明本发明一种基于ExtJs的玫瑰图绘制方法过程。
[0043]步骤101,确定数据预处理引擎进程和风玫瑰图数据提供服务进程默认启动参数。
[0044]1.数据预处理引擎进程的风要素类型数据参数约定为三种类型标识。
[0045]DataType:1代表原始数据库中提供两个风速矢量。
[0046]DataType: 2代表原始数据库中直接提供平均风速和平均风向信息。
[0047]DataType:3原始数据库中提供的风速和风向数据由不同的采集设备所采集。
[0048]2.数据预处理引擎进程的读取数据模式参数配置约定两种读取数据模式标识。
[0049]ReadDataModel: auto代表自动从数据库中读取原始风要素数据;
[0050]ReadDataModel: artificial代表从指定目录中读取人工统计的风要素数据。本实施例支持CVS格式的文件数据,文件格式并不限于此,可根据具体的文件数据的存储格式调整文件解析程序。
[0051]3.风玫瑰图数据提供服务进程的数据解析格式默认参数约定两种数据解析格式。
[0052]AnalysisType:1代表数据组装成为Json格式的数据;
[0053]AnalysisType: 2代表数据组装成xml格式的数据。
[0054]步骤102,启动数据预处理引擎进程进行数据预处理、启动风玫瑰图数据提供服务进程与前端交互。
[0055]1.数据预处理引擎进程作为后台服务进程启动后即进行数据的预处理和统计。
[0056]I)若原始风要素数据类为所述的“DataType:1 ”,表示原始数据库中提供两个风速矢量,说明从风速采集没备中得到的数据分别为南北方向的风速:vx、东两方向的风速:vy,和垂直方向的风速时程vz。则数据预处理引擎进程预处理步骤为:
[0057]步骤102_1)求平均风速和风向,求平均风速和风向时不考虑垂直风。
[0058]首先计算南北方向、东西方向的风速时程的平均值&和\,之后根据式(I)求得平均风速F,即
【权利要求】
1.一种基于Extjs的风玫瑰图绘制方法,其特征在于,包括: 1)确定原始风要素数据类型以及定时统计时间; 2)数据预处理引擎根据定时统计时间对不同形式的原始风要素数据进行预处理,最终形成不同等级的风在16个风向上出现的次数;并将统计结果数据统一存储到统计结果数据库中; 3)风玫瑰图数据提供服务进程,从统计结果数据库中获得风玫瑰图数据,并根据风玫瑰图数据解析格式进行组装数据。
2.根据权利要求1所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,所述原始风要素数据类型包括:类型一:风速、风向等风要素数据按固定时间间隔统一存储;类型二:南北方向风速矢量和东西方向风速矢量按固定时间间隔统一存储;类型三:风速数据和风向数据分别由不同的数据设备采集并分开存储。
3.根据权利要求1所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,所述数据预处理引擎作为后台服务进程对不同数据类型的原始风要素数据进行预处理统计,具体为:根据原始风要素数据类型标识参数调用不同的数据预处理模块,对原始风要素数据进行统计处理,生成十二乘十六维的数组,然后将处理结果统一的进行数据库存储。
4.根据权利要求1所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,步骤3)中,首先确定风玫瑰图数据解析格式,确定定时推送的时间参数。
5.根据权利要求1所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,所述的风玫瑰图数据解析格式为json数据格式或xml数据格式,所述的风玫瑰图数据解析格式与风玫瑰图绘制的请求数据格式相对应。·
6.根据权利要求1所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,所述的风玫瑰图数据提供服务进程支持WSS协议的websocket,通过向前端提供风玫瑰统计数据的函数签名来与前端完成数据通信;在其启动之前确定所述的风玫瑰图数据解析格式;读取统计结果数据根据所述的风玫瑰图数据解析格式将统计结果数据解析成风玫瑰图显示所需的数据格式。
7.根据权利要求1所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,所述的风玫瑰图数据提供服务进程统一管理Web客户端,将连接到所述的风玫瑰图数据提供服务进程的所有的客户端注册到管理队列中,当定时推送时间到达时依次遍历管理队列中注册的Web客户端对象,将风玫瑰图数据推送到前端;同时所述的风玫瑰图数据提供服务进程还支持事件触发推送风玫瑰图数据到前端。
8.根据权利要求6或7所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,Extjs端Web通信管理通用类“Ext.sac.router.Router”,用于与所述风玫瑰图数据提供服务进程通信; Extjs端WebSocket服务通用公共类,用于与所述风玫瑰图数据提供服务进程建立连接; Extjs回调函数通用公共类,根据自定义函数签名来调用自定义的函数进行事务处理; Extjs雷达图组件基础上自定义扩展的玫瑰图绘制组件“WindRoseChart” ; 将所述Extjs雷达图基础上扩展的玫瑰图绘制组件“WindRoseChart”渲染到ExtJs的面板组件中并与风玫瑰图的数据集绑定,风玫瑰图的数据集加载数据时利用Extjs的事件传递机制通知“WindRoseChart”更新数据。
9.根据权利要求8所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,Extjs端Web通信管理通用类“Ext.sac.router.Router”,创建所述WebSocket服务通用公共类并为其注册 “dataarrived,,,“connected,,,“disconnected,,,“datasent,,事件响应函数; Extjs端Web通信管理通用类“Ext.sac.router.Router”,通过发送队列、等候队列、等候挂起队列来统一管理所有请求操作,同时当监听到“dataairived”时通过所述回调函数通用公共类的实例对接收的数据进行所需的处理。
10.根据权利要求9所述的基于ExtJs的风玫瑰图绘制方法,其特征在于,所述Extjs端 WebSocket 服务通用公共类完成 “dataarrived”,“connected”,“disconnected,,,“datasent”事件的添加,当打开Websocket实例时触发“connected”,关闭Websocket实例时触发“disconnected”,当Websocket实例向后台发送数据时触发“datasent”事件;Websocket实例时监听到数据到`达时触发“dataarrived”事件。
【文档编号】G06F17/50GK103714209SQ201310723907
【公开日】2014年4月9日 申请日期:2013年12月25日 优先权日:2013年12月25日
【发明者】禇红健, 包德梅, 王媛媛, 王志心, 李佑文, 岳以洋, 罗存 申请人:国电南京自动化股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1