基于A rcGIS Flex API的工厂基础地理信息共享服务系统设计
2011-11-15袁怀月侯澄宇
袁怀月,侯澄宇,杨 恒
(中冶集团武汉勘察研究院有限公司,湖北 武汉 430080)
基于A rcGIS Flex API的工厂基础地理信息共享服务系统设计
袁怀月,侯澄宇,杨 恒
(中冶集团武汉勘察研究院有限公司,湖北 武汉 430080)
分析传统B/S模式下WebGIS应用存在的问题,提出一种新型基于A rcGIS Flex API技术构建的 WebGIS开发框架。采用该框架开发的工厂基础地理信息共享服务系统相对传统WebGIS系统具有可灵活扩展、交互能力强、运行效率高、表现力丰富、用户体验好的特点。根据工厂基础地理信息管理的需求,系统成功实现了图文一体化、查询统计、空间分析和地图申请与下载等高级 GIS功能。
地理信息系统;工厂;A rcGIS Server;Flex
1 概 述
随着 GIS软件技术的发展,地理信息技术在工厂的应用也大致经历了3个发展阶段,第一代 GIS系统是单机版程序,以文件系统来管理空间数据与属性数据,以图形管理为主,数据管理复杂,数据量小。第二代 GIS系统采用Client/Server架构,即客户端/服务器结构,服务器通常采用高性能的PC工作站或小型机,并采用大型数据库系统,如O racle、Sybase、Info rmix等,客户端需要安装专用软件。在这种构架中,实现空间数据和属性数据一体化管理,通常有一部分数据或逻辑处理会被放在客户端进行。是一种典型的“胖客户”类型,这种 GIS系统的布署、升级、维护均较困难。第三代 GIS系统采用Brow ser/Server架构,客户机上只要安装一个浏览器 ,如 Internet Exp lo rer 或 Netscape Navigato r,就可以同服务器进行数据交互。Web服务器和数据库服务器承担了绝大部分的客户请求处理,客户端只是将处理结果以网页的形式表现出来,基本不承担数据逻辑处理的任务。这也就是所谓“瘦客户端”的模式。
但是,随着B/S模式越来越广泛应用,其弊端也随之显露,客户端事件处理能力低,只能通过服务器更新页面数据,这使WebGIS不能实现数据同步更新和脱机处理,造成响应速度慢;基于 H TML无法扩展,不利于地理信息的共享和互操作,影响了WebGIS的开发性和扩展性。可见,合理分配Web-GIS服务器端和客户端的资源,提高WebGIS的性能和交互能力,是 WebGIS更加实用的关键。富互联网应用程序(Rich Internet App lication,RIA)正是为了填补服务器端与客户端之间的“鸿沟”所设计的一种全新Web应用解决方案,能够实现更加直观、响应快速、用户体验好的应用服务,可以开发出将桌面软件的强交互性和丰富内容与Web的广度结合在一起的应用程序。
2 系统采用的关键技术介绍
2.1 RIA与Flex技术
RIA是一种具有近似于传统桌面应用功能和特性的网络应用。与传统的将大部分交互应用集中在服务器端的网络应用程序不同的是,RIA将大部分业务逻辑从服务器端移植到客户端,仅保留一些基础的业务逻辑在服务器端。这种新的网络应用架构方式的关键机制在于在客户端与服务器端之间引入了通常被叫做“客户端引擎”的中间层。这种客户端引擎通常作为应用初始化的一部分或后续的程序补丁被下载,从而在浏览器的支持下来承担用户界面以及与服务器端进行通信的职责。RIA相对于传统网络应用的优势主要表现在:客户端表现力丰富,RIA界面的反应迅速,可使客户端和服务器端对资源的需求更加平衡,用户可在客户端引擎与服务器端通信的同时异步地进行页面浏览或交互、信息传输的效率高。
Flex是M acromedia公司(该公司后来被A dobe公司收购)于2004年推出的 RIA客户端开发产品,它利用了Flash客户端在全世界的高普及率(高达98%以上),Flash相比 H TML而言丰富的展现能力这些已有优势,在服务器端动态地生成 Flash SW F文件返回给浏览器客户端。这样,如果将Flex的强大客户端表现能力和服务器端的数据逻辑处理能力相结合,就可以向用户提供超过C/S的用户体验。Flex作为RA I构架的解决方案,吸取了C/S和B/S构架的优点,同时最大程度避免了两者的缺点。
2.2 A rcGIS Server
A rcGIS Server是一个发布企业级 GIS应用程序的综合平台,支持的 GIS软件可以集中管理并且支持多用户。A rcGIS Server提供了创建和配置GIS应用程序和服务的框架,这样可以满足各种客户端的各种需求。A rcGIS Server 9.3版本支持使用REST接口发布 GIS服务,所有的资源和操作都由REST API暴露,这些资源和操作的访问都是通过A rcGIS Server发布的 GIS服务的URL得到。
2.3 A rcGIS APIfor Flex
A rcGIS Server Flex开发接口基于Adobe的RIA技术,ESRI推出的A rcGIS Flex API,它集成了REST API,简化了在 Web上对 GIS资源的访问。使用A rcGIS Flex API开发的Flex应用,可以非常便捷地使用地图功能和REST接口提供的GIS查询及分析功能,开发人员可快速创建出功能丰富、操作便利并具备极强视觉冲击力的WebGIS应用程序。
2.4 Flex数据通信服务
Flex中提供了3种方式与数据库通信:Http S-ervice、WebService和 Flash Remoting。系统主要使用了后2种通讯技术实现数据库查询,简单介绍如下:
WebService对象位于m x.rpc.soap包。从用户的角度看,WebService就是一个应用程序,它向外界暴露出能够通过Web进行调用的API集合,用户可以通过调用这些 API来实现某些功能。WebService采用 WSDL(WebService描述语言),用来描述WebService的相关信息及其函数、参数和返回值。WSDL使用XM L语法,并定制了严格的格式。在WSDL中,包括了 WebService程序的路径、所有的函数以及每个函数所要求的参数等信息。
Flash Remoting是一种连接Flash客户端和服务端的技术,它采用基于二进制的AM F协议进行数据交换,其最大特点是在信息交互时可以自动完成客户端数据类型到服务端数据类型的转换,由于它采用二进制对数据进行编码,传送效率高,远远超过 H TTPService、WebService等方式,因此,采用Flash Remo ting方式可以大大地提高页面响应速度。系统利用开源的第三方软件 Fluorinefx和.NET平台来实现对远程服务的访问,Fluo rinefx作为Flash客户端与.NET交互的应用网关,负责Flex与.NET之间的数据类型转换,部署在J2EE/.NET应用服务器上,连接客户端与远程服务;远程服务则在.NET环境中编码实现,并以类库的形式驻留在应用服务器上供客户端RemoteObject组件调用。
3 系统框架设计与实现
基于A rcGIS Flex API的工厂基础地理信息共享服务系统开发框架设计如图1所示。
3.1 数据层
图1 基于ArcGIS Flex API的工厂基础地理信息共享服务系统开发框架
数据层主要包括空间数据引擎A rcSDE以及工厂基础地形图、各种管线专题图(如:生产上水、生活上水、消防水、供电、高炉煤气等)和其他业务数据(如:用于位置搜索的道路名称、重点建筑物名称等)。空间数据和属性数据存取在Oracle10g中,由A rcSDE进行统一维护管理;其他一些数据,如系统配置文件、图片、视频等不便于数据库存储管理的数据以文件的方式存放在服务器端,供服务层调用。
3.2 服务层
服务层作为整个框架的核心,提供 GIS地图服务和远程服务。A rcGIS Server作为 GIS应用服务器,为客户端提供栅格地图服务、矢量地图服务、属性查询服务等 GIS服务,并通过A rcSDE连接空间数据库。基于J2EE/.NET的应用服务器则提供各种远程服务,方便客户端与后台进行业务数据交互。用户对空间对象的信息查询将通过各种地图服务对空间数据进行查询,而对业务数据的查询将利用基于WebServer或基于AM F协议的Flash Remoting技术调用远程服务进行查询统计。
3.3 表现层
表现层借助 A rcGIS API fo r Flex和 Flex Framework来设计与实现。为了保证系统框架的简易性、灵活性、可重用性、可扩展性,根据功能对整个表现层进行组件划分,每个组件完成不同的应用逻辑,但各个组件又可以互相通信,协同工作。表现层主要包含AppManager(应用管理器)、AppConfig(应用配置器)、AppU I(界面管理器)、EventM anager(事件管理器)、M apContainer(地图容器)、W idgetsContainer(工具集容器)6个组件。
AppManager作为一个容器管理整个富客户端,实例化客户端组件,并对处于生命期的组件进行维护,在组件之间建立通信。
AppConfig负责对基于XML格式的应用配置文件进行解析、维护、管理,为其他组件提供相关的配置信息。
AppU I利用界面配置信息,建立整个WebGIS应用框架客户端的用户界面,比如界面CSS样式、控制条、菜单选项、工具栏等,同时实现菜单、工具栏与其他组件的交互接口。
MapContainer是整个WebGIS应用框架的地图管理核心,响应用户对地图的操作和交互。通过请求地图服务,实现对地图的显示、信息查询、分析,并在客户端对地图进行渲染。
W idgetsContainer是 W idget(小工具)的容器和管理器,实例化各个独立的Widget,安排其布局,完成 Widget在生命期中与其他组件的通信与交互,基于这样的模式,开发者可以扩展或自定义Widget,并交WidgetsContainer组件托管。
EventM anager负责整个 WebGIS应用框架富客户端的事件分发和监听。AppM anager组件通过调用它的消息分发、消息监听方法来实现各种组件之间的通信交互。
从用户启动富客户端到与富客户端进行交互,表现层经过了如下的生命周期:
1)Flash Player通过加载和运行容器Flash文件,在浏览器里启动Flash应用程序;
2)客户端开始实例化,AppManager从 Web Server加载XML配置文件和皮肤 Flash文件应用于整个应用程序;
3)基于配置文件,M apContainer容器从地图服务器加载Map Services。容器同时也构建并且在控制条上显示菜单和来自配置文件的标记信息;
4)WidgetsContainer根据在配置文件中指定的 URL s加载 W idget Flash Files;
5)用户操作Widgets运行各种业务逻辑。
表现层这种设计方法的优点是:
1)使开发人员摆脱地图管理、地图导航、应用配置、组件间的通信、数据管理等繁重复杂的编程工作,专注于核心业务功能开发。
2)只需要在应用程序的配置文件中增加配置项,就可以将功能以 W idget的形式快速部署到已有的应用中。
3)容器由一系列高粘性、低耦合组件组成。容器会把关注的任务交给相应的组件去完成,这样不但简化了代码维护和定制,而且缩小了模块编写过程中产生的阻力。
系统的交互界面如图2所示。
图2 系统的交互界面
4 系统主要功能模块描述与实现
根据大型工厂基础地理信息管理的需求,系统设计了下列功能:
1)地图浏览。用户可以使用多种方式浏览地图,常用的工具有放大地图、缩小地图、平移地图、显示全图,用户还可直接拖动比例尺条来缩放地图。
2)鹰眼地图。用户通过鹰眼地图了解系统当前界面范围相对于整个工厂地图所处的大概位置。在鹰眼地图中使用鼠标移动矩形框,系统界面范围便会放大到相应位置。
鹰眼地图实现方法是:将小比例尺的地图(如1∶50 000)发布成地图服务,在 Widget工具放入一个Map地图控件,地图控件加载该服务即可。当用户移动或缩放系统主视图时,系统发送消息给鹰眼地图,鹰眼地图收到消息后重新根据主视图Map的Extend属性绘制矩形框,矩形框表示当前主视图范围相对于整个工厂地图所在的地理位置;反过来,当用户移动鹰眼地图的矩形框时,系统发送消息给主视图,通知主视图更新Extend属性,实现地图的移动。
3)图层控制。使用 A rcGISTiledM ap Service-Layer标签来获取瓦片图层数据服务,使用A rcGISDynamicMap ServiceLayer标签来获取动态地图的数据服务,因为瓦片图层是作为底图来显示,动态地图是叠加到瓦片图层上显示的,所以标签放置的顺序就应该是瓦片图层在前,动态图层在后。动态地图显示如否、图层的透明度可由终端用户自由控制。
4)专题地图。对于一些经常被调阅的专题地图,如生产上水专题、工业循环水专题、供电系统等,在A rcMap中渲染好,采用瓦块图层方式发布成地图服务,这样地图显示速度快,用户体验好。
5)信息查询。查询功能中主要实现了属性到图形查询、图形到属性查询、空间关系查询。例如从图形查询属性这个功能的实现,首先要接收用户点击处的坐标,然后遍历当前视图上的所有层,获取靠近点击处一定范围内的要素目标。组合条件查询要求选择字段名和字段值构成组合条件来查询地理要素。
6)位置搜索。系统可针对道路名称、重点建构筑物名称进行快速定位搜索。实现方法是将位置信息发布成一个地图服务,终端用户直接针对该地图服务进行搜索,开发时使用A rcServer的 Find Task来实现。
7)区域图定位。将工厂按生产工艺分成若干个区域,用户选择特定区域名称后,系统界面范围可快速定位该区域,如选择高炉区,则界面范围缩放到高炉区的范围。实现这个功能主要是要获取用户选择的范围(各区域范围值存储在配置文件中),然后将用户选择的范围赋给M ap地图控件的 Extent属性,这样就实现定位了。
8)缓冲分析。缓冲区就是地理空间目标的一种影响范围或服务范围,系统可以根据图层中的点、线、面要素,在选定的地理要素周围根据设定的缓冲距离产生缓冲区多边形。如对拆迁范围进行20 m的缓冲,求出其缓冲区范围,以供进一步处理计算。
9)经济技术指标统计。该模块提供了对建(构)筑物的建筑面积、占地面积、建筑密度、数量,绿化面积、绿化率,道路面积、长度,铁路长度、占地面积等工厂总图设计经济技术指标进行快速计算和统计的功能,同时还提供了全厂范围、指定区域、用户输入坐标范围、用户选择范围等多种统计方式。
由于需要统计在指定范围内的地物面积,因此,对于部分落在指定范围内的地物需要先裁剪再计算面积,而不是简单的查询统计。同时考虑到效率问题,在服务器端并没有使用A rcGIS Server提供的ITopologicalOperato r接口和 IRelationalOperato r接口,而是利用 A rcSDE提供的 sde.st_intersection、sde.st_intersects、sde.st_area 等 sql函数直接对数据库中st_geometry进行空间关系判断和裁剪操作。其实现流程如图3所示。
图3 实现流程
10)综合管线统计。在大型工厂厂区内,往往密布各种地上地下管线,种类往往达到几十种之多。该统计功能通过鼠标指定统计范围,对区域范围内的各种管线的长度、管线附属设施的数量进行快速统计,使用 Geop rocessing Services来完成管线的裁切工作,在flex中实现裁切后的统计工作,最终结果在客户端以树形结构予以表示。
11)管线纵横断面绘制。现代工业企业中,往往充满了各种纵横交错的空中与地下管线,管线在企业的正常生产和维护中,发挥着极其重要的作用。选择的单一管线或首尾相连的几条管线的纵断面进行分析,通过地表模拟线插值进行管线纵断面分析,能让用户直观地看到管线的空间分布;通过对用户绘制的线段与所相交的管线进行横断面分析,能让我们对管线的相互位置与关系一目了然。
12)地图申请与下载。远程用户可以申请指定范围的地图数据。用户填写申请单,得到管理员审批后,就可以下载AutoCAD格式的地图数据到本地。这些地图数据由后台服务程序从A rcSDE的空间数据切割而来。
后台服务程序 FileConvertServer采用A rcGISEngine开发,数据通讯技术采用 WebServer。该服务程序接收要下载的图层参数(各图层用“,”分隔开的字符串)和范围参数(坐标对字符串),实现数据裁剪和转换功能,结果以Dxf格式文件保存服务器的特定目录,供终端用户下载时使用。
13)信息管理与发布。发布的信息包括企业规划设计部门和工作人员的办公信息、各类文件通报、工作计划、日程安排、会议通知、统计资料、法律法规等。
14)权限管理。根据岗位角色,使不同级别和部门的用户具有不同的权限。按照对信息系统的操作权力和对数据访问权限,设置功能表对应所属的功能权限。将各部门人员按级别和职责划分为不同的岗位,通过创建角色表和操作权限表确定操作人员所属角色及其所具有的操作和访问权限。
5 网络环境和安全
5.1 网络环境
系统使用两台服务器:一台作为数据库服务器,安装有Oracle10g和A rcSDE空间数据引擎;另一台作为应用服务器,安装A rcGIS Server,部署系统应用程序。由于工厂基础地理信息反映了工厂的总图布置等各种信息,属于工厂的保密资料,故终端用户局限在企业内部的规划设计部门、能源中心、土地管理和房产管理等相关部门,只允许在企业内联网使用,不对工厂以外范围开放。
5.2 安全认证机制
系统设置了较严格的安全认证机制。首先,用户在登录页面上输入用户名和密码后,系统会将其与用户信息表中的用户名和密码字段匹配,如果相符就将用户名保存到会话(Session)中,进入主页面,不匹配的话则显示错误信息。其次,如果用户绕过登录页面直接输入主页面的地址,每个页面初始化时都会检查会话中是否有用户名的信息,没有则直接跳回到登录页面,所以不可能出现未经登录就查看到主页面的情况。
6 结束语
本文探讨了在B/S模式下基于Flex技术的企业级Web发布的GIS应用开发方式,设计并实现了某工厂基础地理信息共享服务系统。该系统基于Flex的WebGIS的系统框架,克服了原有 WebGIS开发中存在的交互性差、响应速度慢等缺陷,它能够呈现更加丰富、体验性更强的用户界面,为WebGIS的应用提供了一种崭新的表现机制。事实证明基于A rcGIS Flex API的可重用、可扩展的框架设计,使得功能扩展成为可能,大大地提高了开发和部署效率,为WebGIS应用的开发提供了新的思路。系统利用网络和A rcGIS Server进行地图数据和属性数据的发布,能够实现工厂地图信息的广泛共享,并实现了各种复杂的数据统计,特别是矢量地图数据的下载功能改变了传统的数据分发依靠人工面对面沟通的方式,系统为用户提供高质量的基于空间信息的服务。
[1]赵万锋.基于 ESRIFlexViewer框架的 A rcGIS Server开发[EB/OL].http://www.cajcd.edu.cn/pub/wm l.txt/980810-2.htm l,2010-04-11/2010-07-16.
[2]翟石艳.基于WebService的城市地理数据共享与应用研究[D].郑州:河南大学,2009:63-67.
[3]贾寅波.基于RIA的路面状况智能监测系统[D].武汉:武汉理工大学,2009:21-26.
[4]张康寿,冯兵,孙燕刚,等.基于 RIA 和 WebServices的WebGIS系统的开发[J].地理空间信息,2009(4):109-110.
[5]陈谦,余江峰,潘森,等.基于 RIA方式的 WebGIS构建[J].遥感信息,2008(9):89-93.
[6]赵冠伟,夏斌,聂云锋.富互联网应用程序研究初探[J].微型机与应用,2005,24(12):4-5.
[7]沈百玲.用Net构建和部署A rcGISServerWeb应用[R].北京:ESRI中国(北京)有限公司,2004.
[8]朱政.A rcGIS平台开发框架介绍及其未来发展[R].北京:ESRI中国(北京)有限公司,2004.
Design of basic geographic information sharing and serving system used in factory based on ArcGIS Flex API
YUAN Huai-yue,HOU Cheng-yu,YANG Heng
(W uhan Surverying-Geotecthnical Research Institute Co.,L td of MCC,W uhan 430080,China)
The paper analyzes the issues of WebGIS app lication based on B/S,and p roposes a rich Internet WebGIS framework based on A rcGIS Flex API.U sing this design framewo rk,we develop a factory Basic Geographic Information Sharing And Serving System w hich is extensible neatly,efficient and inter-operation efficiently,w ith rich p resentation and user rich experience.This system design may advance GIS functions,such as graphics w ith context,GIS query and statistics,spatial analysis,dow nload a map after app lication and so on.
Geographic Information System;factory;A rcGIS Server;Flex
P208
A
1006-7949(2011)02-0061-05
2010-08-15
袁怀月(1978-),男,工程师.
[责任编辑刘文霞]