论文部分内容阅读
摘要:自动气象站资料在气象业务工作中具有重要的价值。文章对ASP.NET与GDI 的某些方法进行了研究,利用ASP.NET实现在网页中以图表方式显示自动站数据库资料。
关键词:自动气象站;.NET;GDI
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)19-30080-02
Displaying the Data of Automatic Station Database Using the Method of .NET
QIN Rong-mao, YANG Hua
(Changji Meteorological Bureau,Changji 831100,China)
Abstract: The data of automatic weather station is very important in weather professional work. the article researched some method of ASP.NET and GDI ,and finished displaying the data of automatic station database.
Key words: automatic weather station; .NET; GDI
1 引言
自动站在我州开始运行以来,为预报服务提供了很多的数据资料。同时,通过开发部分应用软件,也已经建立了本地资料数据库。系统运转后,其收集的数据为科研人员的科研工作发挥了重要作用。但是也有不足之处,就是如何将数据库中的资料以图表的形式简洁、直观地显示给最终的普通用户,使他们也能够通过简单的操作就可以得到满意的结论。结合本部门系统内部网络构成,目前最好的方法就是利用互联网,采取网页的形式来实现资源共享。文章着重描述了在.NET环境下来实现网页图表显示的功能。
2 问题提出
目前,我州自动站实时数据能够自动进入到本地数据库服务器。只是尚未给用户提供一种合适的使用环境来充分地应用这些资料。而应用服务器上提供有WEB服务,是否可以通过在WEB页面上以图表的形式显示这些资料数据呢?经过多次实验,证明是切实可行的。
3 实现原理
WEB页面的生成采用ASP.NET技术实现。ASP.NET是一种编译语言,当客户端第一次调用ASP.NET页面的时候,其实是经过了一种比较复杂的编译过程,编译生产MSIL文件,存储到本地机,MSIL文件其实是一个中间语言的文件,然后此文件又通过JIT(Just in Time)编译器进行再编译,生成机器语言,这样你所调用的ASP.NET页面才展现出来,对于不同的机器,有着不同的JIT,也就被编译成不同机器语言,这就是微软公司大力鼓吹ASP.NET的所谓跨平台的原理。
当ASP.NET页面被编译成MSIL文件的时候,编译所使用的类库必须是受管代码文件(Managed Code),而ActiveX控件是已经被编译成机器语言的文件,他属于非受管代码文件(Unmanaged Code)。所以直接在ASP.NET调用MSChart组件是不可能的。虽然你可以利用.Net框架提供的工具把此MSChart组件转换成受管代码文件,但这个过程相对比较复杂,并且利用这种方法产生的图表速度相当慢,还有就是由MSChart组件自身所限制,对于复杂的图表,是无法利用他来生成的。
其实我们在各种.NET开发的网站中看到的图表并不是一个图表,而是一个图片。在服务器端产生图片,然后在图片上面画出想要显示给用户的各种信息,然后通过浏览器发送图片到客户端,从而形成图表。那么,图表的生成使用GDI 来实现,GDI 是从GDI演化而来的,但是在Visual Studio的以前版本中使用GDI是相当复杂的,而且工作量巨大。现在在GDI 中,微软已经帮我们解决了许多问题,因而使用GDI 编程将变得非常容易。
GDI 包含在System.Drawing.Dll集合中,所有的GDI 类包含在System.Drawing,System.Text,System.Printing,System.Internal,System.Imaging,System.Drawing2D以及System.Design等命名空间中。
上述技术方法就是本文要利用的方法。通过这些方法,就可以实现各种气象要素的图表显示。尤其针对气象资料中的温度、降水等的显示,下面就来介绍具体的实现方法。
4 实现方法
4.1 在.NET中提取数据库资料
在.NET Framework中,数据提供商作为应用程序和数据源之间的桥梁,提供了简单的数据库连接接口。一个.NET Framework数据提供商能从数据源返回查询结果,执行数据源上的命令。本网站中就利用.NET Framework中的SQL Server .NET Data Provider进行数据库的访问。
4.2 利用GDI 绘制图表
为了使用GDI 在.NET页面中画出图表,关键步骤主要有两步:其一,创建一个图片对象(Bitmap)。然后利用.Net FrameWork SDK所提供的方法在此图片对象上面画出自己想要的图形,譬如画线,画点等;其二,就是为了更适合传输,把此图片对象,以“Jpeg”格式保存,并显示出来。下面我们就来看看这二步的具体实现方法。
1)首先在ASP.NET页面创建一个动态图片,并显示出来。创建一个图片对象其实非常容易的,利用命名空间“System.drawing”中的“Bitmap”类来实现的,下列语句可以创建一个位图对象:
Bitmap image = new Bitmap (400,400); //创建一个“Bitmap”对象
修改“Bitmap”对象的二个参数来改变创建的位图对象的长和宽。通过Bitmap类的Save方法就可以显示已经创建的位图对象。由于位图文件要占用很多的空间,为了便于网络传输,一般转换成“Jpeg”或者“Gif”文件来保持。下面语句是把已经创建的位图对象,转换成“Jpeg”文件显示:image.Save(Response.OutputStream,ImageFormat.Jpeg); //以“Jpeg”格式保存此图片对象,在客户端显示出来。
2)如何给产生得图片上色。
其实给产生得图片上色是比较容易的,首先根据“Bitmap”对象创建一个“Graphic”对象,然后根据此“Graphic”对象的方法来确定上色的图形类型(譬如显示的图片为椭圆、正方形等)。
Bitmap image = new Bitmap (400,400);
Graphics g = Graphics.FromImage(image);
g.FillRectangle (new SolidBrush(Color.LightGreen),0,0,400,400)。
3)如何在图片上实现画线和写字。
在图片上写字是通过产生的“Graphic”对象的DrawString()方法来实现的,在调用此方法前,必须设置字体和刷子,具体调用方法是:
//写字
g. DrawString ("在图片上面写入文字", axesFont, blackBrush, 90, 20);
//画线
g. DrawLine (blackPen, 0, 2, 210, 250);
知道了这些基本知识,就可以利用数据库中的气象要素在WEB页面上绘制出我们需要的图表了。
5 结束语
本文在ASP.NET页面中利用.Net FrameWork SDK GDI+中提供的各种用以操作图形的方法,实现了气象要素在WEB页面中的显示,这样的过程虽然有点烦杂,但对实现复杂的图表是非常有用的。
参考文献:
[1] 王立丰. Visual C#.NET项目开发实用案例[M].科学技术出版社,2006.
[2] Mahesh Chand. GDI 图形程序设计[M].韩江,译.电子工业出版社,2005:144-150.
[3] 周鸣扬,曾洁玫. GDI 程序设计实例[M].中国水利水电出版社,2004:25-30.
关键词:自动气象站;.NET;GDI
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)19-30080-02
Displaying the Data of Automatic Station Database Using the Method of .NET
QIN Rong-mao, YANG Hua
(Changji Meteorological Bureau,Changji 831100,China)
Abstract: The data of automatic weather station is very important in weather professional work. the article researched some method of ASP.NET and GDI ,and finished displaying the data of automatic station database.
Key words: automatic weather station; .NET; GDI
1 引言
自动站在我州开始运行以来,为预报服务提供了很多的数据资料。同时,通过开发部分应用软件,也已经建立了本地资料数据库。系统运转后,其收集的数据为科研人员的科研工作发挥了重要作用。但是也有不足之处,就是如何将数据库中的资料以图表的形式简洁、直观地显示给最终的普通用户,使他们也能够通过简单的操作就可以得到满意的结论。结合本部门系统内部网络构成,目前最好的方法就是利用互联网,采取网页的形式来实现资源共享。文章着重描述了在.NET环境下来实现网页图表显示的功能。
2 问题提出
目前,我州自动站实时数据能够自动进入到本地数据库服务器。只是尚未给用户提供一种合适的使用环境来充分地应用这些资料。而应用服务器上提供有WEB服务,是否可以通过在WEB页面上以图表的形式显示这些资料数据呢?经过多次实验,证明是切实可行的。
3 实现原理
WEB页面的生成采用ASP.NET技术实现。ASP.NET是一种编译语言,当客户端第一次调用ASP.NET页面的时候,其实是经过了一种比较复杂的编译过程,编译生产MSIL文件,存储到本地机,MSIL文件其实是一个中间语言的文件,然后此文件又通过JIT(Just in Time)编译器进行再编译,生成机器语言,这样你所调用的ASP.NET页面才展现出来,对于不同的机器,有着不同的JIT,也就被编译成不同机器语言,这就是微软公司大力鼓吹ASP.NET的所谓跨平台的原理。
当ASP.NET页面被编译成MSIL文件的时候,编译所使用的类库必须是受管代码文件(Managed Code),而ActiveX控件是已经被编译成机器语言的文件,他属于非受管代码文件(Unmanaged Code)。所以直接在ASP.NET调用MSChart组件是不可能的。虽然你可以利用.Net框架提供的工具把此MSChart组件转换成受管代码文件,但这个过程相对比较复杂,并且利用这种方法产生的图表速度相当慢,还有就是由MSChart组件自身所限制,对于复杂的图表,是无法利用他来生成的。
其实我们在各种.NET开发的网站中看到的图表并不是一个图表,而是一个图片。在服务器端产生图片,然后在图片上面画出想要显示给用户的各种信息,然后通过浏览器发送图片到客户端,从而形成图表。那么,图表的生成使用GDI 来实现,GDI 是从GDI演化而来的,但是在Visual Studio的以前版本中使用GDI是相当复杂的,而且工作量巨大。现在在GDI 中,微软已经帮我们解决了许多问题,因而使用GDI 编程将变得非常容易。
GDI 包含在System.Drawing.Dll集合中,所有的GDI 类包含在System.Drawing,System.Text,System.Printing,System.Internal,System.Imaging,System.Drawing2D以及System.Design等命名空间中。
上述技术方法就是本文要利用的方法。通过这些方法,就可以实现各种气象要素的图表显示。尤其针对气象资料中的温度、降水等的显示,下面就来介绍具体的实现方法。
4 实现方法
4.1 在.NET中提取数据库资料
在.NET Framework中,数据提供商作为应用程序和数据源之间的桥梁,提供了简单的数据库连接接口。一个.NET Framework数据提供商能从数据源返回查询结果,执行数据源上的命令。本网站中就利用.NET Framework中的SQL Server .NET Data Provider进行数据库的访问。
4.2 利用GDI 绘制图表
为了使用GDI 在.NET页面中画出图表,关键步骤主要有两步:其一,创建一个图片对象(Bitmap)。然后利用.Net FrameWork SDK所提供的方法在此图片对象上面画出自己想要的图形,譬如画线,画点等;其二,就是为了更适合传输,把此图片对象,以“Jpeg”格式保存,并显示出来。下面我们就来看看这二步的具体实现方法。
1)首先在ASP.NET页面创建一个动态图片,并显示出来。创建一个图片对象其实非常容易的,利用命名空间“System.drawing”中的“Bitmap”类来实现的,下列语句可以创建一个位图对象:
Bitmap image = new Bitmap (400,400); //创建一个“Bitmap”对象
修改“Bitmap”对象的二个参数来改变创建的位图对象的长和宽。通过Bitmap类的Save方法就可以显示已经创建的位图对象。由于位图文件要占用很多的空间,为了便于网络传输,一般转换成“Jpeg”或者“Gif”文件来保持。下面语句是把已经创建的位图对象,转换成“Jpeg”文件显示:image.Save(Response.OutputStream,ImageFormat.Jpeg); //以“Jpeg”格式保存此图片对象,在客户端显示出来。
2)如何给产生得图片上色。
其实给产生得图片上色是比较容易的,首先根据“Bitmap”对象创建一个“Graphic”对象,然后根据此“Graphic”对象的方法来确定上色的图形类型(譬如显示的图片为椭圆、正方形等)。
Bitmap image = new Bitmap (400,400);
Graphics g = Graphics.FromImage(image);
g.FillRectangle (new SolidBrush(Color.LightGreen),0,0,400,400)。
3)如何在图片上实现画线和写字。
在图片上写字是通过产生的“Graphic”对象的DrawString()方法来实现的,在调用此方法前,必须设置字体和刷子,具体调用方法是:
//写字
g. DrawString ("在图片上面写入文字", axesFont, blackBrush, 90, 20);
//画线
g. DrawLine (blackPen, 0, 2, 210, 250);
知道了这些基本知识,就可以利用数据库中的气象要素在WEB页面上绘制出我们需要的图表了。
5 结束语
本文在ASP.NET页面中利用.Net FrameWork SDK GDI+中提供的各种用以操作图形的方法,实现了气象要素在WEB页面中的显示,这样的过程虽然有点烦杂,但对实现复杂的图表是非常有用的。
参考文献:
[1] 王立丰. Visual C#.NET项目开发实用案例[M].科学技术出版社,2006.
[2] Mahesh Chand. GDI 图形程序设计[M].韩江,译.电子工业出版社,2005:144-150.
[3] 周鸣扬,曾洁玫. GDI 程序设计实例[M].中国水利水电出版社,2004:25-30.