APP下载

基于WPF的GIS组件的研究与开发

2010-08-07陈晨李健张涛

网络安全技术与应用 2010年4期
关键词:开发人员绘制组件

陈晨 李健 张涛

北京工业大学计算机学院 北京 100124

0 前言

地理信息系统(Geographic Information System,GIS)是一种基于计算机的工具,它可以对在地球上存在的东西和发生的事件进行成图和分析。GIS是地理和计算机结合的产物,人们的生产和生活中80%以上的信息和地理空间位置有关,GIS近年来得到了广泛关注和迅猛发展。

近年来 GIS组件化发展趋势迅速,组件式平台包括:Microsoft的COM、ActiveX控件,ESRI和MapInfo也分别推出了MapObjects和MapX。但是用户体验方面相对薄弱,为此本课题研究选用.Net3.0的 WPF,开发人员和设计人员可以通过 WPF创建更好的视觉效果、不同的用户体验。同时为了以后适应更多的基于WPF的GIS相关系统,我们可以直接复用此课题研发的组件,提高开发效率,减少成本。

GDI/GDI+是当今Windows桌面应用程序的主流图形库,GDI/GDI+图形系统已经形成了很多年。它提供了2D图形和文本功能,以及受限的图像处理功能。

在WPF中,引入一种新的图形合成引擎使2D/3D渲染效果以及动画效果绚丽。高生产效率一直是微软技术的一贯特点,WPF是对图像编程更高层次的封装,因此可以带来更快的开发速度。使用 GDI/GDI+再加上复杂的几何学知识,编写大量代码实现的效果,在 WPF下面只需要简单的几行XAML代码。WPF也有弱点,由于是对 Direct3D的一层managed的封装,在2D应用中其绘制效率较之GDI/GDI+相对不高。

1 界面显示技术

随着人们对用户体验和视觉冲击力追求不断地提高,客户对GIS应用的展示效果要求也逐渐增多,他们的要求不仅限于传统桌面风格的操作菜单、GIS标绘静态展现的形式。

无论是实现GIS应用还是GIS组件,对于地理数据的绘制都是实现GIS很重要的一步,能否到选择合适的界面显示技术会对GIS组件绘制部分的最终效果以及开发效率造成很大的影响,所以挑选合适的界面显示技术尤为重要,经过学习调研,对比介绍一下微软的各种界面显示技术:

(1)GDI

GDI不仅提供了图形图像的绘制功能,同时还对硬件显示进行了更高层次的抽象。换句话说,它将硬件的复杂性封装在了GDI API中,用户使用起来更加方便。

(2)GDI+

顾名思义,GDI+是作为GDI的扩展而被引入到Windows中的。它提供了很多GDI所没有的扩展功能,例如对JPG和PNG图像格式支持,渐变阴影和抗锯齿等。无论是 GDI还是 GDI+,它们最大的局限就是不支持硬件加速,同时无法展现动画和3D图像。

(3)DirectX

正如在前面所分析的那样,GDI及其扩展 GDI+的一个最大问题就是不支持硬件加速和动画。这对于游戏开发者来说,是无法接受的。为了解决这个问题,微软开发了DirectX。DirectX能够很好的利用硬件加速,能够支持3D,全彩图像,流媒体等等,非常适合游戏工业等对图形图像处理要求比较高的领域。

(4)WPF

WPF是微软新一代图形系统,运行在.NET Framework 3.0架构下,为用户界面、2D/3D 图形、文档和媒体提供了统一的描述和操作方法。基于DirectX技术的WPF不仅带来了前所未有的3D界面,而且其图形向量渲染引擎也大大改进了传统的2D界面。因为WPF是在DirectX的基础上实现的,所以开发人员可以利用WPF创建简单的UI元素,还可以更进一步,开发自定义的UI元素,例如网格(Grid),流文档(FlowDocument)和椭圆(Ellipse)等。还可以利用WPF创建轻量级动画。

依据客户的客观要求即实现类似游戏界面风格的GIS应用展示系统,以及上述界面显示技术对比来分析:现在大部分流行的GIS应用系统和GIS组件界面整体还是没有改变传统Windows的风格,即便开发人员通过图片资源进行美化,用户体验方面也没有改变传统的对话框、菜单等操作方式,这样的系统适合应用,但是不适合绚丽的展示;开发人员也想到应用DirectX进行GIS应用展示系统的界面显示进行实现,凭借DirectX对硬件加速、动画、3D方面的支持,DirectX绝对可以制作出绚丽的界面,但是我们所开发的GIS应用展示系统很大一部分还在于功能,应用DirectX开发界面需要编写大量的代码去实现预期的效果,这样大量的工作量则被消耗在界面编写上;在来看封装了DirectX的WPF,WPF支持开发人员创建特殊的 UI元素,所以设计人员可以大胆的想象华丽的显示界面和独特的界面用户体验,还可以轻松创建轻量级的动画展示流程、演练相关的需求。应用 WPF开发适合于客户对于界面的展示需求,而且应用 WPF制作界面的开发效率要远高于DirectX,基于对界面展示效果和开发效率的考虑,所以选用WPF技术开发GIS应用展示系统是一种趋势。

2 GIS组件整体架构

本文通过研究、学习国内外成功GIS组件范例的思想和方法,并且结合以前已有的相关开发经验,研究、设计GIS组件的总体结构。主要的设计原则:要将各个功能系统划分独立,在保证良好性能的同时,兼顾可扩展性。组件设计框架如图1。

图1 基于WPF的GIS组件体系结构

应用面向对象的数据结构存储从GIS数据读出的信息,线、面、文字等信息,然后通过 WPF底层绘制函数绘制几何图元,在此需要研究找到 WPF中比底层的绘制方案,经过对WPF的学习,并进行性能方面的测试得到下述结论:

(1)应用WPF中的System.Windows.Shapes.Polyline类对解析后的线进行绘制。

(2)应用WPF中的System.Windows.Shapes.Polygon类对解析后的区域进行绘制。

(3)应用WPF中的System.Windows.Controls.TextBlock类对解析后的文字进行绘制。

3 GIS组件实现的关键技术

3.1 绘制数据实体

应用面向对象的数据结构存储从GIS数据读出的信息,线、面、文字等信息,然后通过 WPF底层绘制函数绘制几何图元,在此需要研究找到 WPF中比底层的绘制方案,经过对WPF的学习,并进行性能方面的测试得到下述结论:

(1)应用WPF中的System.Windows.Shapes.Polyline类对解析后的线进行绘制。

(2)应用WPF中的System.Windows.Shapes.Polygon类对解析后的区域进行绘制。

(3)应用WPF中的System.Windows.Controls.TextBlock类对解析后的文字进行绘制。

3.2 绘制算法优化

实践证明WPF的绘制效率不是很高,由于是对Direct3D的一层managed的封装,性能成为我们关心的问题,尤其是在用户交互的过程中,比如用户对地图进行拖拽,实现拖拽比较简单的方法是以用户拖拽到位置的中心点进行重新绘制,GIS数据相当庞大,如果频繁重新绘制,会使拖拽效果很不流畅,所以需要绘制部分有很强的调度能力,实现通过提前绘制屏幕面积4倍的区域,如图2所示,使用户在一定范围内拖拽流畅。通过二维矩阵变换的方式对原有屏幕上的图元进行平移变换。

图2 预绘制区域

4 总结

随着人们对用户体验和视觉冲击力追求不断地提高,GIS组件将会被应用到更炫的应用程序中,然而,由于当今的大部分GIS组件界面仍是基于Windows窗口创建通过GDI实现,导致应用程序中的视感官效果受到了很大限制。为了实现 GIS组件效果的更广泛使用,本文以如何开发基于.Net3.0的WPF技术的GIS基本组件功能为主要内容,希望能对不同的用户提供参考。

[1] 胡振文.地理信息系统原理与应用.中国铁道出版社.2006.

[2] Charles Petzold.A Guide to the Microsoft Window Presentation Foundation. Publishing House of Electronics Industry.2008.

[3] 李胜乐.Mapinfo地理信息系统二次开发实例.电子工业出版社.2004.

[4] 王占全.地理信息系统(GIS)开发工程案例精选.人民邮电出版社.2006.

[5] Charles Petzold著,蔡学镛译.Windows Presentation Foundation程序设计指南.2008.

猜你喜欢

开发人员绘制组件
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
超萌小鹿课程表
Semtech发布LoRa Basics 以加速物联网应用
放学后
风起新一代光伏组件膜层:SSG纳米自清洁膜层
后悔了?教你隐藏开发人员选项
在转变中绘制新蓝图
VBA在宗地图绘制中的应用