基于ESRI Flex Viewer 框架的ArcGIS Server开发

2012-04-29 15:10熊学新古晓蓓华亮春
国土资源导刊 2012年4期

熊学新 古晓蓓 华亮春

摘要:本文主要介绍 Flex Viewer开发框架和构件,并基于ESRI Flex Viewer框架部署和构建Web的应用程序,并以此架构为基础开发某市的公共服务平台。

关键词:Flex;ArcGIS;ArcGIS Server;RIA;公共服务平台

WebGIS即万维网地理信息系统,是利用交互网络技术扩展和完善地理信息系统的一项技术。WebGIS实现技术总的归纳起来可以分为基于瘦客户端和胖客户端两种方案。基于瘦客户端的方案中客户端只采用标准的WEB技术,如HTTP、HTML和Javascript。胖客户端的发展则是通过下载安装插件来增强浏览器的能力。代表技术有Plug-in、ActiveX控件技术、Java Applet技术和SVG技术。瘦客户端的开发模式已经成为当前WebGIS的主流开发方式,基于B/S架构的WebGIS得到迅速发展,但是随着互联网影响的不断扩大,以及GIS技术广泛应用到各行各业中,人们已逐渐不满足于目前的WebGIS网页技术的表现效果和交互性,而希望WebGIS有类似C/S的表现效果和交互性。

RIA(Rich Internet Application,富互联网应用系统)是新一代网络应用程序,它把桌面应用程序的交互性和用户体验与传统的Web应用的部署灵活性和成本分析结合起来,具有无需刷新页面并提供快速界面响应等优点。

Flex与REST进行结合是目前非常热门的分布式系统解决方案之一。将这个方案应用到WebGIS中,就能轻便地建立起表现力丰富、交互性极好的基于Web的地图应用程序。本文基于Flex Viewer构架,重点介绍Flex Viewer框架的构建,部署针对Web的应用程序。

1Flex Viewer简介

ArcGIS Flex API是ArcGIS在RIA(富英特网应用)领域的第一个产品,因此选择了最为成熟的Flex/Flash平台。使用ArcGIS Flex API可以开发运行于浏览器中的Web应用,并且使地图的展示更加的美观。FlexViewer框架就是使用了arcgis flex API技术,集成了一个完整的用户界面和一些GIS常用的功能,使程序员更加专注于自己的业务逻辑而不是页面的设计。Flex Viewer的设计原则是SIMPLICITY(简单)。因为简单原则,Flex Viewer易于部署、配置和扩展。为了达到“简单”这个目的,Flex Viewer在设计和实现上未引入第三方框架。但是从其框架结构上,我们能捕捉到一些Flex框架中最佳实践的影子,比如事件机制就与PureMVC中的Notification机制类似。

2Flex Viewe架构

2.1 架构介绍

Flex Viewer框架的构建有助于开发和部署针对GeoWeb的应用程序,使得能够充分的发挥服务器端的空间服务的能力。服务器端的服务通过ArcGIS服务器和ArcGIS在线数据提供。地球空间信息服务可以由工作在软件即服务方式的服务提供商获得,比如ArcGIS在线数据库、ArcGIS服务器或者是像GeoRSS反馈、KML文件库以及JSON/REST数据等网络数据源。

2.2 Flex Viewer实例的生命周期

一个 Flex Viewer框架的实例从开始应用程序的设计到用户界面经历了一个简单的生命周期,期间主要的5个事件如下:

(1)Flash播放器从加载和运行容器文件开始一个Sample Flex Viewer框架的应用程序。

(2)这个Flex Viewer容器再从网络服务器加载XML格式的配置文件和皮肤文件并应用于整个应用程序。

(3)在配置文件的基础上,Flex Viewer容器会从ArcGIS在线数据和ArcGIS9.3服务器下载相关的地图信息,然后会从配置文件中加载并且在控制条上显示菜单和来自配置文件的标记信息。

(4)Flex Viewer容器的微件管理器会从XML配置文件指定的URLs下载并加载相关的微件文件(一般是swf文件)。

(5)用户利用控件来实现各种业务逻辑。

2.3 Flex Viewer容器

Flex Viewer容器使设计人员能够摆脱地图管理、地图导航、应用配置、组件间的通信、数据管理等繁重复杂的编程工作,专注于核心业务功能开发,尤其是那些利用ERSI公司的ArcGIS技术的网络应用开发人员。只需要在Flex Viewer应用程序的配置文件中增加配置项,就可以将功能以widget的形式快速部署到已有的Flex Viewer应用中。 Flex Viewer容器由一系列高内聚、低耦合组件组成。容器会把关注的任务交给相应的组件去完成。这种设计方法不但简化了代码维护和定制,而且缩小了模块编写过程中产生的阻力。

3配置Flex Viewer

3.1 config配置文件

对于Flex应用ArcGIS的浏览器有一个主配置文件名为config.xml ,这是默认的应用程序配置文件。它控制了系统外观、功能、应用程序和数据内容。它位于主flexviewer安装文件夹。 config.xml的内容可分为四个主要部分:

(1)一般特性(例如,应用程序的标题,样式颜色,字体)

(2)应用程序用户界面(例如,部件构成部分浏览器UI)

(3)地图内容(如底图和业务层)

(4)构件容器

通过编辑config.xml这个文件,查看器应用程序可以很容易地配置,以满足任何特定的业务需求。(由于篇幅有限,此处代码省略。)

①title:Flex Viewer自带Banner实现的标题;

②subtitle:Flex Viewer自带Banner实现的副标题;

③logo:Flex Viewer自带Banner实现的Logo图标;

④style:用来设置全局的组件样式,具体详见UIManager代码;

⑤⑥⑦⑧UI Elements:指Control Widget,比如HeaderControllerWidget、NavigationWidget等这些提供系统级别功能的Widget;

⑨map:Flex Viewer用来设置地图属性,包括底图、业务图层;

⑩widgetcontainer:Business Widget的容器,用来管理Business Widget。Business Widget指提供业务功能的Widget。

需要说明的是,基于Flex Viewer开发业务系统,一般通过实现自定义的Business Widget来实现具体的业务功能,通过修改或者自定义Control Widget实现符合需求的系统级别功能组件。所以,配置文件中的前三项并不是必须的,通常我们的业务系统需要更具特色的Banner实现。Flex Viewer各部分与配置文件的对应关系见下图:

3.2 Widget配置文件

在Flex Viewer的设计中,每个Widget都可以有一个配置文件,来配置Widget所需要的各种资源,提倡的做法是配置文件名与Widget名称保持一致,并且位于同一目录下。当然,Widget的配置文件不是必须的,当不需要配置信息时,配置文件可省略。

在具體系统的开发过程中,应尽可能多的将Widget用到的资源放到配置文件中,这样的话,即便在系统交付之后,用户也可以通过修改配置文件达到特定需求,而不需要更改源代码。

4结语

基于ESRI Flex Viewer 框架克服了原有WebGIS开发中存在的交互性差、响应速度慢等缺陷,它能够呈现更加丰富、体验性更强的用户界面,为WebGIS的应用提供了一种崭新的表现机制。基于Flex的可重用、可扩展的框架设计,使得功能扩展成为可能,大大地提高了开发和部署效率;GIS服务器动态地图渲染和地图切片技术相结合以及基于AMF协议的Flash Remoting通信技术,使得空间信息发布和浏览的速度大大地提高,为WebGIS应用的开发提供了新的思路。但是由于框架设计的局限性和Flex技术亟待进一步发展,还有一些问题如公众地图数据的结合使用、设计一个更加完善的二次开发框架等,都需要进一步的研究和探索。