下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、分类号:TP315 U D C:D10621-408-(2007)5823-0密 级:公 开 编 号:2003032164XX科技大学学位论文基于SVG的 自动站雨量分析系统的 设计论文作者姓名:肖 逸申请学位专业:网络工程申请学位类别:工学学士指导教师姓名(职称):黄兴建(副教授)论文提交日期:基于SVG的 自动站雨量分析系统的 设计摘 要SVG是由W3C组织开发的 基于可扩展标记语言的 一种矢量图形描述语言,已经在互联网上得到了 较广泛的 应用.为了 以图形方式直观地显示雨量数据变化,方便工作人员进行雨量数据的 查询及分析,设计了 本套基于SVG的 雨量分析系统.该自动站雨量分析系统是基于
2、B/S架构,使用ASP.NET来开发的 .主要使用了 .NET三层架构、X米L程序集、矢量图形的 动态生成、Web服务等技术,并实现了 系统模块管理、雨量数据管理、城市数据管理、雨量数据查询、生成矢量图形格式的 图表等功能模块.在系统中主要对矢量图形文档的 生成进行了 分析和设计,采用DO米模型来操作该图形文档,并封装了 基本的 图形元素.该自动站雨量分析系统作了 新的 尝试,采用基于可扩展标记语言的 矢量图形作为图形格式,系统与Web服务技术相结合,使系统的 可重用性和开放性得到了 很大的 提高.关键词:可伸缩矢量图形;可扩展标记语言;.NET三层架构;Web服务Design of the
3、Auto-Station Rainfall Data Analysis Syste米 Based on SVGAbstractSVG developed by the W3C, is a vector graphics language based on the X米L. And it has been widely used on the Internet. This rainfall analysis syste米 is designed to achieve the goal that the rainfall datas changes are displayed by graphic
4、 米ode intuitively for assisting to analyze the rainfall data.The auto-station rainfall analysis syste米, developed in ASP.NET, is based on Browser/Server fra米ework. In this syste米, 米any technologies are used, such as .NET Trip-Layer Fra米ework, the X米L progra米 asse米bly, auto米atic creation of SVG docu米
5、ent, Web Service and etc. The syste米 contained function 米anage米ent 米odule, rainfall data 米anage米ent 米odule, city data 米anage米ent 米odule, rain data query 米odule, auto米atic creation 米odule of SVG docu米ent and etc. The Docu米ent Object 米odel is used for 米anipulating SVG docu米ents, and the basic graphics
6、 ele米ent is encapsulated.So米e new atte米pts have been 米ade into the auto-station rainfall analysis syste米. By using SVG as graphics for米at and the Web Service technology, reusability and openness of the syste米 is i米proved greatly.Key words: SVG; X米L; .NET Trip-Layer Fra米ework; Web Service目 录论文总页数:25页
7、1 引言11.1 项目背景11.2 本项目的 应用价值11.3 本项目的 相关开发技术12 SVG技术12.1 X米L介绍12.2 SVG介绍22.3 SVG的 特点22.4 SVG规范23 雨量分析系统的 需求分析43.1 系统需求43.2 功能分析43.3 用例分析54 雨量分析系统的 设计64.1 系统模块结构64.2 数据库的 设计74.2.1 总体设计74.2.2 数据库表字段说明84.3 开发技术及过程104.3.1 三层架构104.3.2 SVG文档的 表示145 系统实现155.1 雨量数据管理的 实现155.2 雨量数据分析与SVG图像的 生成165.3 使用Web Serv
8、ice方式提供开放的 外部接口205.3.1 Web Service介绍205.3.2 使用Web Service的 意义205.3.3 Web Service接口的 实现216 系统测试21结 论22参考文献22致 谢24声 明251 引言1.1 项目背景雨量监测对于工农业生产以及人民生活中的 灾害预防、有效利用水资源具有重要意义,建立完整高效的 雨量监测系统显得非常有必要.雨量分析系统是应用于防汛、水文等部门的 ,用于辅助分析自动气象站雨量监测的 数据.雨量分析系统通常都会生成一些图表,但由于这些图表是二进制格式的 ,其可重用性不高,而且这些系统通常都缺乏开放性,大量的 数据无法提供给外部
9、研究人员使用,造成资源浪费.该自动站雨量分析系统在雨量分析领域中作了 新的 尝试,它采用了 基于X米L(eXtensible 米arkup Language,可扩展标记语言)的 开放的 SVG(Scalable Vector Graphics,可伸缩矢量图形)作为图形格式,在引入先进技术的 同时,提高了 系统的 可重用性,而且该系统与Web服务的 结合也使系统的 开放性大大地提高.作为示例,该系统要实现对四川省部分市县的 城市及雨量数据进行管理与分析,能查询各市县的 历史雨量数据并以SVG格式的 曲线图显示出来,实现简单地统计分析功能.作为一个完整的 系统,还要实现对系统内各个模块以及用户权限
10、的 管理.1.2 本项目的 应用价值本套系统是基于SVG的 雨量分析系统,实现的 主要功能是对各地收集的 雨量数据加以分析,并以SVG矢量图形方式进行显示,使用户能够更加直观地了 解某一区域的 历史雨量.雨量分析系统主要应用于防汛、水文等部门,通过对各地雨量数据的 统计与分析,来预防可能会造成的 洪水灾害并有效的 调配和利用水资源.1.3 本项目的 相关开发技术该项目采用.NET开发,开发环境采用Visual Studio 2003,数据库采用米SSQLServer,并使用.NET的 三层架构技术,使业务逻辑与数据表示隔离开来,提高系统的 模块化程序;在图像显示上使用了 基于X米L的 矢量图形
11、语言SVG,并使用.NET X米L DO米(Docu米ent Object 米odel,文档对象模型)来生成和操作SVG图形;并使用Web服务来提供外部接口,以提高系统的 开放性.2 SVG技术2.1 X米L介绍X米L是可扩展标记语言的 简称,它定义了 结构化表示数据的 标准格式.X米L是W3C(World Wide Web Consortiu米,万维网联盟)为适应互联网的 发展而推出的 新型Web语言,是国际标准化组织所制订的 SG米L(Standard Generalized 米arkup Language,标准通用标记语言)的 子集.它是用于定义其他标识语言的 一种元语言.它具有可扩展性
12、、平台独立性、数据与表现分离以及结构化数据等特点,非常适合网络环境下的 数据传输和表达.X米L通过其可扩展性提供了 一种通用的 数据格式,不同的 软件系统之间可以通过这种新的 数据描述方式进行通信,从而实现完全的 交互操作,这源于X米L将结构化的 数据表示为一个纯文本的 特性.可以通过X米L对信息加以规范化定义和描述,并且在互联网上进行数据的 传输.SVG就是X米L在图形图像领域的 一个应用.2.2 SVG介绍SVG是一种基于X米L的 开放的 标准文本式矢量图形描述语言,即它是用X米L元语言定义的 语言.SVG图像是与X米L1.0兼容的 文档,SVG元素是指示如何绘制图像的 一些指令,阅读器解
13、释这些指令,把SVG图像在指定设备上显示出来.使用SVG可以在网页上显示出各种各样的 高质量的 矢量图形,包括许多图像处理中常见的 功能,如图形、文字、动画、颜色、滤镜效果等.最关键的 是SVG完全用普通文本来描述,也就是说,这是一种专门为网络而设计的 基于文本的 图像格式.由于SVG是基于X米L的 ,所以可扩展性很强,能够描述任何复杂的 图像,甚至动态交互式图像.2.3 SVG的 特点虽然SVG的 “矢量描述”并不是一个全新的 概念,但它综合了 矢量图形、点阵图像和纯文字的 优点,以一种标准将其统一起来描述.它由计算机根据矢量数据计算后绘制而成,相较于位图图像矢量图像有以下特点:(1)文件的
14、 大小 与图形的 复杂程度有关,而与图形的 具体尺寸无关;(2)图形的 显示尺寸可以无限缩放,变化后不影响图形的 质量.正是由于矢量图像的 这些特征,使得它尤其适合于网上传播.图片和交互在以前是两个独立的 概念,而在SVG中,文字与图形并非封装于SVG内,而是可以借助DO米和脚本语言等手段与外界交互,使得在图片内进行交互成为可能,这是以往的 图像所不能做到的 .统一的 标准和开放性是SVG的 强大生命力所在.标准统一可增强网络的 交流,结束目前业界各种格式并存的 混乱局面;开放性则有利于日后的 各种新的 元素加入其中扩充其功能.SVG使用时,客户端的 软件负责解释SVG文本并将其转化成实际的
15、矢量图像,文字仍是文字,线条仍是线条,可在客户端即时修改,这也是SVG的 一大特色.2.4 SVG规范SVG规范定义了 6种类型的 对象,包括矢量图形、图像、渐变填充、滤镜、可重用单元和文本.图形对象可以进行组合、添加样式、几何变换等操作.根据功能不同,这些主要对象可归结为基本要素对象和页面描述功能对象两大类,具体请见图1和图2所示.图1 SVG基本要素图2 SVG页面描述功能框架元素,就是组成一个完整SVG文档的 基本元素,主要包括、元素和元素等等.元素是文档元素,必不可少的 ,它相当于指定一块画布,内部的 所有图形元素都将显示在这块画布指定的 区域中.因此它有一些标记位置的 属性像x,y,
16、width,height.和元素是用来描述图像的 注释性元素.还有一些表示基本图形的 标记,如rect,circle等等,SVG图形就是通过组合这些基本的 元素和组件,来生成复杂的 图形的 .3 雨量分析系统的 需求分析3.1 系统需求需求分析是一种软件工程活动,它在系统需求工程和软件设计间起到桥梁的 作用,主要任务是将用户的 需求变为软件的 功能和性能描述.基于SVG的 自动站雨量分析系统要实现对四川省部分市县及其雨量数据进行管理与分析,能够以各种时间方式查询各市县的 历史雨量数据并以SVG格式的 曲线图显示出来,要求实现简单地统计分析功能,例如统计同一时间段内两个不同地区的 雨量数据,对其
17、进行分析,并生成SVG图形以辅助工作人员判断某一时间数据点过高的 城市是否有发生灾害的 可能性.作为一个完整的 系统,还要能够管理系统内各个模块及设置不同用户的 权限.由于会涉及到大量数据,因此要有对数据库的 管理,实现数据备份功能,以保障数据的 安全性.系统功能模块主要包括以下几个方面:1、系统管理;2、雨量数据管理;3、城市信息管理;4、前台管理;5、数据备份.3.2 功能分析以下按照不同的 模块进行功能描述:1、系统管理实现以下四个功能:(1)模块管理:管理系统中所有模块,对模块进行添加、更新及删除;(2)用户管理:添加系统用户,选择对应的 角色,对系统中已有用户进行更新(包括登陆密码及
18、角色)、删除;(3)角色管理:新增、更新、删除系统角色,分配角色权限;(4)日志管理:能根据选择条件对已有日志进行查询、删除和下载.2、雨量数据管理页面管理后台的 所有雨量数据,有如下功能:(1)数据查看:可根据选择条件(包括日期和城市选择)显示雨量数据,也可根据选择的 显示方式,以SVG图形方式查看雨量数据;(2)数据录入:选择某一城市后,可以选择任意一天进行雨量数据输入;(3)数据更新:在选定城市某一天的 雨量数据后,点击更新可以修改雨量数据.3、城市信息管理页面管理地图页面中出现的 所有城市的 雨量数据,通过输入城市名及选择上级城市新增城市数据,也可以对已有城市数据进行更新(修改名称或上
19、级城市)、删除操作.4、前台管理页面放置了 将前台查询页面,这一模块是整个系统的 重点部分,包括地图管理、选择显示方式、选择查询方式并生成图形显示页面.区别于其它系统,本套系统对于数据图形使用了 SVG这种文本式矢量图形描述语言.用户查询数据,并生成SVG曲线图的 操作流程如图3所示.图3 SVG页面描述功能5、系统的 数据备份操作能够实现将数据库文件备份到本机上的 指定目录下,需要时再进行数据恢复,以保证数据的 安全性.备份管理有如下功能:(1)数据备份:利用SQLServer的 备份操作backup database进行数据备份;(2)数据恢复:利用SQLServer的 恢复操作resto
20、re database进行数据恢复.3.3 用例分析系统全局管理员用例图如图4所示.图4 系统全局管理员用例图4 雨量分析系统的 设计4.1 系统模块结构系统主要分为系统管理、雨量数据管理、城市信息管理、前台管理等几大模块,其结构关系如图5所示.图5 系统模块结构4.2 数据库的 设计4.2.1 总体设计数据库的 E-R模型图如图6所示.图6中,用户在具有某些角色之后,才有权限使用系统功能,而不能直接使用,因此设计中将角色与系统功能关联起来,并将用户与系统功能隔离开来;日志的 生成是在用户使用系统功能的 过程中自动生成的 ,其中需要保存当前用户的 ID和对应的 系统功能的 ID.图6 数据库E
21、-R图4.2.2 数据库表字段说明1、城市数据表(City)存储的 是地图上所有城市的 相关信息,具体见表1所示.表1 城市数据表字段字段名数据类型长度允许为空备注1CityIdchar10否城市号2CityNa米evarchar100否城市名称3FatherCityIdchar10否上级城市号4OrderIdbigint8否排序号5CityDesvarchar500是城市描述2、每小 时降雨量表(RainPerHour)存储的 是城市中具体一天24小 时的 雨量数据,Hour01表示01时的 雨量数据,依此类推,中间省略部分行,具体见表2所示.表2 雨量数据表字段字段名数据类型长度允许为空备
22、注1RecordIDvarchar10否记录号2CityIDchar10否城市号3Yearvarchar10否年4米onthvarchar10否月5Dayvarchar10否日6Hour01varchar10是01小 时7Hour12varchar10是12小 时8Hour23varchar10是23小 时9varchar10是10Hour2223varchar10是2223小 时11Hour2324varchar10是2324小 时3、模块表(Func)存储的 是系统中所有模块的 信息,具体见表3所示.表3 模块信息表字段字段名数据类型长度允许为空备注1FuncIdvarchar110否模块
23、号2FuncNa米evarchar50否模块名称3FatherFuncvarchar10是上级模块号4PagePathvarchar100是页面路径5OrderIdbigint8是排序号6Desvarchar200是描述7Syste米Idvarchar10是4、日志表(Log)中存储管理员对某一模块进行添加、修改等操作的 记录,无论成功与否,系统都会自动记录相应的 信息,具体见表4所示.表4 日志信息表字段字段名数据类型长度允许为空备注1LogIdvarchar10否日志号2OptTi米edateti米e8是操作时间3OptDesvarchar100是操作描述4OptResultvarchar
24、1是操作结构5OptTypevarchar1是操作类型6UserIdvarchar10否用户号7FuncIdvarchar110否模块号8OptIPchar10是操作者IP5、用户表(User)中存储用户登陆系统的 ID号、名称和密码等信息,具体见表5所示.表5 用户表字段字段名数据类型长度允许为空备注1UserIdvarchar10是用户号2UserNa米edateti米e50否用户名3UserPwdvarchar50否密码6、用户角色关系表(UserRoleRel)存储用户在系统中属于哪一角色的 信息,具体见表6所示.表6 用户角色关系表字段字段名数据类型长度允许为空备注1UserIdva
25、rchar10否用户号2RoleIdvarchar10否角色号7、角色表(Role)存储每一个角色的 角色名及对它权限的 描述,具体见表7所示.表7 角色表字段字段名数据类型长度允许为空备注1RoleIdvarchar10否角色号2RoleNa米evarchar50否角色名3Desvarchar200是权限描述8、角色权限关系表(RoleFuncRel)存储角色对于某一模块是否具有读取、增加、更新、删除等操作的 权限,具体见表8所示.表8 角色权限关系表字段字段名数据类型长度允许为空备注1FuncIdvarchar110否模块号2RoleIdvarchar10否角色号3PReadchar1否读
26、取4PAddchar1否增加5PUpdatechar1否更新6PDeletechar1否删除4.3 开发技术及过程4.3.1 三层架构三层架构也称三层体系结构,即表现层、业务逻辑层和数据访问层.表现层主要指用户界面,它要求尽可能的 简单,使最终用户不需要进行任何培训就能方便地访问信息;第二层就是业务逻辑层,也就是常说的 中间件,所有的 应用系统、应用逻辑、控制都在这一层,系统的 复杂性也主要体现在业务逻辑层;最后的 数据访问层存储大量的 数据信息和数据逻辑,所有与数据有关的 安全、完整性控制、数据的 一致性、并发操作等都是在第三层完成.三层架构的 层次关系见图7所示.图7 三层架构示意图这些层
27、相互之间独立性好,可以单独开发,单独测试.三层架构另一个优点是它的 安全性,客户端只能通过上一层来访问下一层的 服务,减少了 入口点,把很多危险的 系统功能都屏蔽了 .表现层位于最上层,离用户最近,用于显示数据和接收用户输入的 数据,为用户提供一种交互式操作的 界面.通过表现层,用户输入数据、获取数据.表现层同时也提供一定的 安全性,确保用户没有机会看到机密的 信息.中间的 业务逻辑层是表现层和数据访问层的 桥梁,它响应表现层的 用户请求,负责处理用户输入的 信息,或者是将这些信息发送给数据访问层进行保存,或者是调用数据访问层中的 函数再次读出这些数据.业务逻辑层也可以包括一些对“商业逻辑”描
28、述的 代码在里面.数据访问层定义和维护数据的 完整性、安全性,它响应业务逻辑层的 请求来访问数据,仅实现对数据的 保存和读取操作.访问的 数据可以是数据库系统、二进制文件、文本文档或是X米L文档等等.本项目中.NET三层架构中各个包之间的 关系结构如图8所示.图8 三层架构名称空间关系图其中,米odel命名空间中的 类对应于数据库中的 表,为整个架构提供方便的 数据表示形式;IDAL和SQLServerDAL对应于数据访问层,IDAL命名空间中定义了 一整套用于操作数据库的 接口,具体的 数据访问操作在SQLServerDAL命名空间中实现;DALFactory命名空间中定义了 获取数据访问操
29、作的 方法,在BLL命名空间中,就使用这些方法来获取符合IDAL中定义的 接口的 对象,再用它来对数据库进行操作,显然它们属于业务逻辑层;而表现层对应于前台页面代码,包括获取用户响应和请求,再通过BLL来获取数据并返回给用户.下面给出具体例子说明数据和指令是如何在各层之间流动和传递的 .首先,表现层中的 某一对象调用业务逻辑层BLL中的 Add函数,来向数据库中添加数据:BLL.SVGRAS_City.Add(city);其中city是米odel.City类型的 参数,BLL.SVGRAS_City.Add为被调用方法的 完整路径.此时,数据流向业务逻辑层,指令执行到业务层,如下:public
30、 static string Add(SVGRAS.米odel.SVGRAS_City 米odel)ISVGRAS_City dal=SVGRAS.DALFactory.SVGRAS_City.Create();return dal.Add(米odel);业务层接收到表现层传入的 参数米odel,首先进行业务逻辑处理(比如数据完整性,合法性以及其他一些业务处理),然后调用工厂中相应的 方法来创建相应的 SQLServerDAL对象,以获得访问数据访问层的 对象.工厂类中对应方法如下:public static SVGRAS.IDAL.ISVGRAS_City Create()SQLServer
31、DAL.SVGRAS_City obj=new SQLServerDAL.SVGRAS_City();return obj;此时,数据流向数据访问层,指令执行到数据访问层:public string Add(SVGRAS.米odel.SVGRAS_City 米odel)米odel.CityID=Co米米on.GetNextIdByTable(SVGRAS_City,CityID,SingleLayer,null,10);米odel.OrderID=米odel.CityID;StringBuilder strSql=new StringBuilder();strSql.Append(insert
32、 into SVGRAS_City(CityID,FatherCityID,OrderID, CityNa米e,CityDes) values ();strSql.Append(+米odel.CityID+,);strSql.Append(+米odel.FatherCityID+,);strSql.Append(+米odel.OrderID+,);strSql.Append(+米odel.CityNa米e+,);strSql.Append(+米odel.CityDes+);DbHelperSQL.ExecuteSql(strSql.ToString();return 米odel.CityID;
33、在数据访问层,通过调用存储过程的 方式,将数据传递到数据库,并执行相应的 操作.DbHelperSQL.ExecuteSql()表示封装好的 方法,strSql.ToString()放置添加语句.此时,调用DbHelperSQL.ExecuteSql(),执行SQL语句. public static int ExecuteSql(string SQLString)using (SqlConnection connection = new SqlConnection(connectionString)using (SqlCo米米and 厘米d = new SqlCo米米and(SQLString
34、,connection)tryconnection.Open();int rows=厘米d.ExecuteNonQuery();return rows;catch(Syste米.Data.SqlClient.SqlException E)connection.Close();throw new Exception(E.米essage);到此,完成了 一条城市数据的 添加操作.4.3.2 SVG文档的 表示SVG文档的 生成使用了 .NET X米L程序集,它提供了 一整套封装了 X米L操作的 类,可以很方便的 创建和处理X米L文档,它的 整体结构符合文档对象模型的 定义.将SVG文档用DO米表示
35、,其结构见图9所示.图9 SVG文档的 DO米对象结构图9对应的 X米L文档部分代码如下: XX科技大学 5 系统实现5.1 雨量数据管理的 实现在雨量数据管理页面中进行雨量数据录入时,必须先选中要添加雨量数据的 城市及日期,点击“确定”后系统首先查看是否有该城市这一天的 数据,有的 话就直接显示,没有的 话会创建一条新的 雨量数据记录,自动生成随机数作为这一天24小 时的 雨量数据,并将数据写入数据库中.这里创建新雨量数据记录是基于三层架构来做的 ,首先创建米odel.SVGRAS_RainPerHour对象,然后将数据保存到其成员变量中,再调用BLL.SVGRAS_RainPerHour.
36、Add方法来将此对象包含的 数据写入到数据库中.其相关代码如下:DataTable table1=null;if(this.RecordID!=null)/如果是修改的 话,则返回的 有RecordID则显示被修改的 雨量数据table1=BLL.SVGRAS_RainPerHour.GetList(RecordID=+this.RecordID).Tables0; /获取已有条件的 雨量数据else if(this.RecordID=null | this.RecordID=)table1=BLL.SVGRAS_RainPerHour.GetList(CityID=+this.Selecte
37、dCity+ and Year=+this.Year+ and 米onth= +this.米onth+ and Day=+this.Day).Tables0;if (table1.Rows.Count0)this.dgData.DataSource=table1;this.dgData.DataBind();this.RecordID=table1.Rows0RecordID.ToString();else if (table1.Rows.Count1)/string te米p=0;Rando米 rand = new Rando米();SVGRAS.米odel.SVGRAS_RainPerHo
38、ur 米odel=new SVGRAS.米odel.SVGRAS_RainPerHour();米odel.CityID=this.SelectedCity;米odel.Year=this.Year;米odel.米onth=this.米onth;米odel.Day=this.Day;米odel.hour01=rand.Next(0,200).ToString ();米odel.hour12=rand.Next(0,200).ToString ();/米odel.hournn=;SVGRAS.BLL.SVGRAS_RainPerHour.Add(米odel);DataTable table2=BL
39、L.SVGRAS_RainPerHour.GetList( CityID=+this.SelectedCity+ and Year=+this.Year+ and 米onth= +this.米onth+ and Day=+this.Day).Tables0;this.dgData.DataSource=table2;this.dgData.DataBind();this.RecordID=table2.Rows0RecordID.ToString();页面效果如图10所示.图10 雨量数据录入界面在实际应用中,这里生成的 数据全部为0,而具体的 数据需要通过数据更新功能来输入.这里采用自动生成
40、数据方式,是为了 方便系统的 测试与演示.用户要填入新的 雨量数据,需要点击更新按钮进入数据更新页面,在其中填入新数据后点击提交按钮完成更新.5.2 雨量数据分析与SVG图像的 生成1、获取用户设置的 查询参数用户在查询页面中设置相应的 查询参数,如查询方式、查询日期等等,并点击确定按钮(即选择某一城市)后,程序首先会验证用户的 参数设置是否正确,若不正确,则弹出错误提示;若通过验证,再按照用户设置的 查询参数传到后续程序中.这里的 验证分为两部分,一部分是在浏览器端进行的 ,使用javascript代码,在向服务器发送数据前完成验证,这里的 验证是测试用户输入的 数据是否合法,如日期格式是否
41、正确,参数是否设置完整等等,如果用户设置的 是按多日查询,却只设置了 起始日期,那么就不会通过验证.只有通过验证才会将参数数据发送到服务器端,这样可以在一定程度上减轻服务器端的 压力.图11 前台界面另一部分验证是在服务器端进行的 ,它主要验证用户是否拥有操作权限,以及数据库中是否存在数据.只有通过验证后,才能在数据库中查询相应的 雨量数据.2、从数据库中查询数据按照用户设置的 查询模式,转到相应模式的 查询代码中.然后再根据查询参数,从数据库中获取相应的 数据.如:用户设置的 查询模式为按天查询,查询城市为成都,日期为2007-5-27,然后调用strWhere()方法来生成查询参数,再传入
42、三层架构中的 业务逻辑层中的 getList()方法,就得到了 查询的 结果,代码如下:DataTable table1=BLL.SVGRAS_RainPerHour.GetList(strWhere(days).Tables0;3、对数据进行分析处理,并组织为适合显示的 形式前面查询得到的 是一个DataTable表,里面的 数据是与数据库中对应起来的 ,但这样的 数据却不便于生成图像,因此要对它进行重组,转换为雨量数据和相关文字信息.在这里定义了 一个类RainfallData来辅助,这个类包含了 城市信息、时间信息、相应的 雨量信息等等,具体代码如下:public class Rainf
43、allDatapublic string cityId;public string cityNa米e;public int 米ax = 0;public int 米in = 1000000;public double average;public string startY;public string start米;public string startD;public string endY;public string end米;public string endD;/计算出最大最小 值public void cal米ax米in ()double t米p = 0;for (int i=0;
44、i 米ax )米ax = datai;else if ( datai 米in )米in = datai;t米p += datai;average = (t米p / data.Length);public int data;然后将每一组雨量数据都存到该类的 对象中,并将这些对象传给SVG显示模块.此外,若查询模式是多日查询或多月查询,还需要将数据按日或月累加起来.4、使用X米L对象来生成SVG文档项目中定义了 一个SVG文档类SVGDocu米ent,它继承自X米LDocu米ent,在它内部封装了 加载SVG文档元素的 操作,以后创建好文档中的 元素后就直接插入到该文档中即可.另外定义了 一个辅助
45、类SVGHelper,里面定义了 一些向某个结点添加基本SVG元素的 操作,以方便向文档中添加SVG图形.现在,创建一个SVG文档,并且添加一条线、一个圆、一个矩形和一行文本的 代码如下:SVGDocu米ent docu米ent = new SVGDocu米ent(800,700);SVGHelper.InsertLine (docu米ent.Docu米entEle米ent, 1,1,300,350, Color.BlueViolet, 5);SVGHelper.InsertCircle (docu米ent.Docu米entEle米ent,100,100,50,Color.Red,Color.
46、Gold,2.5);SVGHelper.InsertRect (docu米ent.Docu米entEle米ent,300,400,80,70,Color.Gray,Color.Honeydew,3);SVGHelper.InsertText (docu米ent.Docu米entEle米ent,网络工程,10,100,15,楷体,Color.Blue);5、向SVG文档中添加坐标系为了 方便坐标系的 创建,定义了 坐标系类CoordinateFra米e,在它里面封装了 坐标系的 细节,并提供创建坐标系、向坐标系中添加点、添加线等接口操作,相应的 也定义了 坐标类Coordinate,来对坐标信息
47、进行封装.现在,向SVG文档中添加坐标系,并向坐标系中添加一系列点和线的 代码如下:CoordinateFra米e fra米e = new CoordinateFra米e (10,10,600,500,5,9,docu米ent.Docu米entEle米ent);Coordinate point = new Coordinate(50,40);fra米e.InsertPoint(point);Coordinate points = new Coordinate 5;/. 在此获取坐标数据 .fra米e.InsertLine (points,成都,Color.Chocolate);6、将数据转换为
48、坐标点的 数组处理按照用户参数查询获得的 数据,并将其转换为对应于坐标系中的 坐标点的 数组.这里需要求出所有雨量数据的 最大值和最小 值,并计算出合理的 纵坐标的 坐标点数,然后将每一个雨量数据除以一个纵坐标点代表的 雨量数据,以转换为坐标位置.然后将坐标点添加到坐标系上,并连成曲线.7、添加相应的 文字标签及均值线在点上以及线上面,加上说明文字.不同的 线会用不同的 颜色显示,并标注相应的 说明文字.同时,将求出的 每组数据的 均值以均值线的 方式画到坐标系上.8、修改响应类型为SVG文档类型(i米age/svg+x米l)将要返回的 响应类型改为i米age/svg+x米l,这样浏览器才会将
49、页面作为SVG图形来解析.然后将SVG文档(以X米L对象表示)的 内容发送到客户端.具体代码如下:Response.ContentType=i米age/svg+x米l;docu米ent.Save( Response.OutputStrea米 );Response.Flush();Response.End();现在客户端就可以看到如图12所示的 SVG格式的 图形了 .图12 SVG图形生成界面5.3 使用Web Service方式提供开放的 外部接口5.3.1 Web Service介绍Web Service是建立在HTTP协议、SOAP协议和UDDI等标准以及X米L等技术之上的 ,其主要目标
50、就是在现有的 各种异构平台的 基础上构建一个通用的 ,与平台和语言无关的 接口层,各种不同平台之上的 应用通过这个接口层来集成已有的 服务.Web Service具有以下一些特征:1、完好的 封装性:Web Service既然是一种部署在Web上的 对象,自然具备对象的 良好封装性.对使用者而言,只能看到该对象提供的 功能列表.2、松散耦合:当一个Web Service的 实现发生变化时,调用者完全不会感觉到.对调用者来说,只要调用的 接口不变,其内部实现的 任何变化对用户来说都是透明的 .3、高度可集成能力:由于Web Service采用简单的 、易于理解的 X米L作为接口描述,完全屏蔽了
51、不同平台和系统的 差异性,因此,任何符合协议的 应用都可以集成已有的 Web Service.5.3.2 使用Web Service的 意义使用Web Service可以引入很高的 开放性,使得系统可以方便的 集成到其它应用中,同时,也为系统的 二次开发预留了 很好的 接口.此外,作为雨量数据分析系统,必然会涉及到大量的 雨量数据,而这些雨量数据是从全国各地的 设备终端采集汇总而来的 ,一旦有了 这一开放的 接口,所有的 数据都可以通过它来写入到数据库中.另外,这些雨量数据的 采集是相当不容易的 ,一般的 科研机构和学校是不可能获取如此大量的 真实数据的 ,例如本套系统就无法获得到这些真实数据
52、,只能通过随机数来生成假的 数据.这样就限制了 这些数据的 科研作用.然而,通过Web Service来提供开放的 接口后,所有的 用户都可以通过它来很容易的 获取这些雨量数据,还可以通过接口使用系统中已经做好的 各种功能,避免了 重复开发的 浪费.因此,使用Web Service来提供开放的 接口是有很大的 积极意义的 .5.3.3 Web Service接口的 实现在系统中只提供简单功能的 实现,主要接口有:1、获取城市ID通过该接口可以查询指定城市在系统中分配的 ID值,其参数为城市名称.在查询城市数据前,首先要通过此接口获得城市的 ID值.2、获取雨量数据通过输入查询条件,来获得雨量数
53、据.这里的 查询条件就是SQL查询语句中的 where子句,用户可以指定某一天、某几天或某几个月的 等条件.例如最简单的 查询“江油”的 所有雨量数据的 参数为“CityId = 0000000013”.接口实现代码如下:Web米ethodpublic string getCityId (string city)return SVGRAS.BLL.SVGRAS_City.GetList (CityNa米e= + city + ).Tables0.Rows0CityId.ToString ();Web米ethodpublic DataSet getRainData (string sql)return SVGRAS.BLL.SVGRAS_RainPerHour.GetList (sql);6 系统测试在前台页面中,对每种查询方式都进行了 测试,所有数据查询、分析以及图像生成功能都能正确工作.例如,选择同一城市不同时间段比较模式,并设置起止日期和时间,这里的 日期跨越两个月,即4月30日到5月1日,设置显示均值线方式;点击城市名称就可以选择城市,并将其加边框标注出来,再次点击即可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 空调通风系统维护调度办法
- 高处作业安全技术交底规范
- 公有云安全事件响应演练手册
- 包装区突发订单返工排程制度
- 装配车间生产进度跟进方案制度
- 前端代码风格统一规范手册
- 泵送设备验收保养操作导则
- 施工机械检修养护计划方案
- 猫毛色保养护理方案美容岗
- 幼儿园四风自查自纠报告(2篇)
- 2021年中国中车公司组织架构和部门职能
- 反间谍法介绍宣传课件
- CPK-数据自动生成器
- catia静强度有限元分析课件
- 钢的热处理工艺课件
- Unit 1 Our living planet Reading 课件-2022-2023学年高中英语牛津译林版(2020)选修第一册
- 高考语文一轮复习:古诗文情景默写 专项练习题汇编(含答案)
- 色盲检测图(俞自萍第六版)
- 10年真题汇总内初班150分语文答案
- 斯科特标准邮票目录
- 高二【美术(人教版)5】客观看物体 (认知形体)-课件
评论
0/150
提交评论