基于要素服务的地图在线编辑系统设计与实现

2015-02-26 11:21:14    来源:中国地理信息产业协会

摘要:针对空间信息平台用户对空间数据的上传、下载、发布和在线编辑的需求,设计实现了基于ArcGIS Server要素服务和Flex的具有地图数据在线编辑功能的Web GIS系统。

0 引言

  目前GIS产品很少提供基于浏览器方式的空间数据编辑功能,这限制了那些不想安装庞大的GIS产品又想具有简单空间编辑功能的业务需求[1]。传统Web GIS主要是基于HTML页面和JavaScript脚本形式的,虽然能够在互联网上提供地理信息,让用户通过浏览器浏览和获得一个地理信息系统中的数据和功能服务[2],但空间数据在线编辑以及多用户协调却是一个技术瓶颈,而且客户端用户体验不够丰富。随着RIA技术的发展,已有学者开始对Web GIS中的RIA技术应用进行了研究[3, 4]并初步设计实现了“富客户端”的Web GIS系统。相较于传统Web GIS,“富客户端”Web GIS系统集地图服务、查询服务、地理编辑服务、要素图层服务、位置服务、分析功能、数据维护等功能于一体[5],用户体验丰富,系统开发迅速简单。

  针对用户的具体需求,本文设计实现了一个多主体地图在线编辑系统。该系统基于Flex技术,是一个“富客户端”系统,以ArcGIS Server作为要素服务发布平台,以ArcSDE作为空间数据库引擎,利用AO技术,结合客户端ActionScript脚本实现地图要素服务动态发布、空间和属性数据编辑、符号化以及用户地图管理等功能。


1 相关技术引入

1.1 ArcGIS Server

  ArcGIS Server为各级用户开发Web GIS 系统提供了一个很好的平台,利用它就可以将系统的功能从简单地图应用跨越到专业的GIS 分析,空间数据在线编辑等[6]。ArcGIS Server支持多种服务的发布,如Map Service,Geometry Service,Geoprocessing Service等等,其中通过ArcSDE获取的数据源而发布的要素服务(Feature Service)支持在线编辑,要素服务通过ArcGIS Server的REST接口进行访问。

  ArcGIS Server包含2个主要部件:GIS服务器和.NET与Java的Web应用开发框架[7]。GIS服务器是AO对象的宿主,提供给Web应用和企业级应用使用,并包含核心的AO代码库,在服务器上为AO提供一个灵活的运行环境。通过远程对各类服务AO对象的调用,可动态改变服务的属性,系统中对要素服务的操作均是通过调用各类AO对象实现的。


1.2 Flex

  Flex 是一个高效、免费的开源框架,可用于构建具有表现力的 Web应用程序。Flex作为目前最为流行的RIA技术,集完善的系统开发环境、优秀的客户交互体验以及跨平台跨浏览器等优点于一身,成为当前互联网上RIA技术在各个应用领域的研究重点[8]。

  Flex应用框架由描述应用程序界面的MXML语言、面向对象的脚本语言ActionScript、样式文件CSS、Flex组件库以及Flex SDK所组成。MXML语言控制页面上的元素布局,ActionScript则用来处理业务逻辑[9]。Flex采用客户端-服务器异步通信模型,支持快速客户端交互,即只传输已更改数据,无需刷新整个页面,这样提高了客户端的响应速度,提供了更好的用户体验。


1.3 FlexViewer

  ArcGIS API for Flex是一套强大的开发框架,利用它能够开发出丰富的互联网应用程序,以访问WebService的方式调用ArcGIS Server的服务资源。FlexViewer是基于ArcGIS API for Flex的一个免费的应用程序框架,容易定制和扩展,利用该框架可以迅速搭建起基于ArcGIS Server的、以地图为中心的富客户端应用的原型。


2 系统设计与实现

2.1 总体框架

  本文设计实现的基于ArcGIS Server要素服务的地图在线编辑系统总体框架如图1所示。包括表现层、业务层、服务层和数据层4个部分。



图1系统总体框架

Fig.1 The system architecture


1) 表现层

  表现层运行在浏览器的FlashPlayer插件之中,负责与用户交互,作为空间数据和属性数据显示的客户终端。使用 FlexViewer框架搭建,用户界面设计采用MXML语言,对ArcGIS Server服务的请求及操作使用ArcGIS API for Flex,与Web服务器的交互以及用户业务操作使用ActionScript脚本实现。


2) 业务层

  业务需求包括地图基本浏览、动态创建并发布服务、空间和属性编辑、符号在线编辑、数据批量导入、地图数据管理等。FlexViewer框架中的一个Widget是对一组相关操作的封装,这些相关操作完成某项特定业务功能。系统针对各项业务功能,设计实现一个对应的Widget,这些Widget相当于一个个“插件”,不同的Widget组装,实现不同的功能组合。


3) 服务层

  ArcGIS Server服务器响应服务的空间数据获取和属性数据查询请求,进行空间数据缓冲处理与并发控制,通过ArcSDE与数据库进行交互。Weblogic作为Web容器,响应非空间的用户数据存取请求以及业务性的操作请求,与数据库交互实现数据存取。

  对ArcGIS Server中AO对象的远程调用,是通过Web容器的调用间接实现的。请求首先由客户端发送到Web容器,Web容器通过间接连接的方式连接到ArcGIS Server服务器,获取SOM权限之后,根据需要创建相应的上下文环境(SOC),然后调用各类细粒度的AO对象。ArcGIS Server的执行结果反馈给Web容器,进而反馈到表现层。


4) 数据层

  Oracle数据库中包括地图数据和系统用户数据两部分。地图数据是用户创建ArcGIS Server要素服务的数据源,可以是用户上传的shp数据,也可以是用户通过属性字段定义生成的数据,ArcGIS Server通过ArcSDE存取Oracle中的地图数据;系统用户数据是用户登录系统后进行操作而产生的记录信息,Weblogic通过数据库连接池对其进行存取。Shp文件和Excel文件作为客户端提交的数据,上传至后台,经过AO对象的处理转化为Oracle中的地图数据部分,最终会在用户编辑的地图要素服务中呈现出来。


2.2 核心功能设计与实现

1) 地图基本浏览

  地图的基本浏览包括缩放、平移、前后视图、全局视图等,直接使用FlexViewer框架中NavigationWidget提供的功能。


2) 动态创建发布地图服务

  在线编辑之前,需要在ArcGIS Server中创建地图的要素服务。ArcGIS Server手动创建地图服务的基本流程是:添加地图数据制作地图文档(mxd),将地图文档发布到ArcGIS Server,刷新ArcGIS Server缓存。ArcGIS Server动态创建服务则根据客户端提交的地图数据,自动完成服务的创建过程。客户端提交的地图数据可以是一份shp数据或自定义的shp结构数据。

  动态创建并发布地图要素服务的基本流程如下图2所示:

  数据提交到ArcGIS Server后,调用AO中的SdeWorkspaceFactory、ShapefileWorkspaceFactory、Field等细粒度对象实现数据存入ArcSDE;完成之后,调用Map、FeatureLayer、UniqueValueRenderer、PictureMarkerSymbol等对象创建地图文档,并对图层样式进行设置;地图文档创建后,调用IServerObjectAdmin以创建IserverObjectConfiguration2对象,进行服务的配置,完成后发布服务并刷新。



图2 动态创建并发布地图服务的基本流程

Fig.2 The basic process of creating and publishing map service dynamicly


3) 空间与属性数据在线编辑

  在线编辑是对空间数据和属性数据的添加、删除和修改操作。ArcGIS API for Flex提供了FeatureLayer图层,用以加载ArcGIS Server要素服务(Feature Service)。FeatureLayer将服务器端要素的几何和属性信息返回客户端,供其进行编辑;客户端执行添加、删除与修改操作后,将经过编辑的要素添加到一个数组,并调用FeatureLayer中的applyEdits 方法,将数组提交到ArcGIS Server,由其同步更新数据库中的数据,并刷新要素服务使其生效。

  点要素的添加,可以点击地图添加,输入坐标添加,或者将含有空间位置坐标的Excel数据批量导入地图,实现批量添加;点要素的删除,选择多个可批量删除;点要素的修改,即位置的移动,可以拖动到新位置,或者输入新位置坐标进行移动。

  线和面要素的添加,可以点击地图位置点添加,或者批量导入含有位置信息的数据;线和面要素的删除,选择多个可批量删除;线和面要素的修改,包括移位和节点的编辑,选中单个要素可移动其位置,可节点进行添加、删除和移动操作。

  属性数据的编辑使用AttributeInspector组件。AttributeInspector通过featureLayer属性与ArcGIS Server要素服务关联,并以表单方式列出可编辑属性。属性编辑完成,派发UPDATE_FEATURE事件,调用applyEdits方法,提交并更新。


4)符号在线编辑

  点状要素的符号化分为两部分:客户端符号化和服务器端地图服务样式的修改。创建服务时,地图服务使用默认样式,加载到客户端即以该样式展现。当客户端修改样式时,修改FeatureLayer的renderer属性,即可实现客户端符号化;对于服务器端地图服务样式的修改,则在创建服务时添加了“符号样式”字段,用来保存所选定样式的唯一标识码,采用唯一值渲染的方式进行符号化。

  要使得服务器端地图服务样式与客户端选定的样式同步,需要将客户端选定样式的唯一标识码更新到“符号样式”字段,并且要保证客户端与ArcGIS Server服务器端共用一套符号模板。服务器端核心代码如下:

  IUniqueValueRenderer pUVRender =

  new UniqueValueRenderer( serverContext.createObject(UniqueValueRenderer.getClsid()));

  pUVRender.setFieldCount(1);

  pUVRender.setField(0, "符号样式");

  pGFeatureLyr.setRendererByRef((IFeatureRenderer)pUVRender);

  pGFeatureLyr.setDisplayField("符号样式");


5) 数据批量导入

  在线编辑,需要用户不断地与系统交互。当数据量较大时,费时费力,效率低下。因此系统提供批量导入,用以将包含有空间位置的Excel数据进行落地,批量添加到地图服务中,实现空间可视化。

  批量导入,根据Excel中的位置字段构造要素的几何形状,根据其他字段构造属性信息,从而构造出Graphic对象。将多个Graphic提交给ArcGIS Server,即可完成批量添加要素的编辑功能。


6) 地图数据管理

  用户地图数据管理包括对地图服务的删除、更新、下载以及服务链接的发布。删除是将ArcGIS Server中对应的地图服务删除;更新是对地图服务的再次编辑;下载则将地图服务对应的经过在线编辑的数据下载到客户端;服务链接发布实现服务的共享,供他人调用。


2.3 应用实例

  本文设计实现的系统,在“数字深圳空间基础信息平台”中进行了应用。 该平台以3S技术为基础,整合深圳市自然资源与空间地理基础信息及关联的各类经济社会信息,建立多尺度、多分辨率且更新及时的空间基础数据库,以满足城市规划、建设和管理对空间基础信息日益增长的迫切需求。“平台”用户对空间数据的在线编辑需求日益迫切,具体主要为:

  (1)自定义图层。从零开始设计新建图层所包含的字段名和字段类型,图层类型等。

  (2)本地shp数据可以上传并发布成可供编辑的服务。

  (3)空间数据在线编辑。包括图形的编辑和属性编辑。

  (4)空间数据符号化表达。对点要素提供客户端与服务端的符号编辑,并保持同步。

  (5)地图服务的管理。包括服务的共享,服务数据的下载等。

  图3为深圳市罗湖区街道的视频监控点在线编辑案例,用户根据已有的视频监控点统计数据(xls格式),自定义地图服务的属性字段,系统创建空白的地图服务,通过点编辑工具条中的批量导入工具,将监控点数据导入落地,可以对监控点的位置和属性进行编辑,并进行符号化。

  图4为深圳市跨区道路在线简化案例,用户将已有跨区道路shp数据上传后发布成服务,在客户端对道路的几何形状进行编辑,主要为添加节点、删除与移动节点。

  图5为宗地交易数据的落地展示与编辑,宗地数据(xls格式)中包含了各宗地块各个点的位置,地址等信息,通过创建自定义地图服务,可将批量的宗地Excel数据在地图上展示出来,并进行面的编辑,如面的位置移动,面的节点的添加、删除、移位等。



图3 视频监控点案例

Fig.3 The video monitoring point case



图4 道路在线简化案例

Fig.4 The case of simplying road online



图5 宗地交易数据在线编辑案例

Fig.5 The case of editing parcel exchange data online


3 结语

  设计实现的地图在线编辑系统,采用RIA技术,应用FlexViewer框架,用户体验比较丰富,功能上满足了“平台”用户基本的在线空间与属性编辑,地图数据的管理等需求。为提高实用性,设计实现批量导入空间和属性数据功能。

  本系统实现的在线编辑功能没有涉及到多用户编辑同一份空间数据的多用户协调问题,各个用户只编辑自己所有的数据。不足之处在于相对于桌面版GIS提供的数据编辑,功能较弱,未实现编辑回退,编辑中没有考虑到拓扑的约束[10]、多边形不能进行合并与分割等。系统需要更好地与“数字深圳空间基础信息平台”具体的业务相结合,不断实现系统易用实用性。


参 考 文 献

  [1] 毛炎新,侯瑞霞,唐小明。具有在线空间数据编辑的WebGIS[J].计算机应用,2010,30(S1):66-68.

  [2] 张云鹏,魏卫华,孙燕,等。WebGIS在土地交易与地价信息服务中的应用研究[J].南京师范大学学报(工程技术版),2006,6(01):91-94.

  [3] 张宏,丰江帆,闾国年,等。基于RIA技术的WebGIS研究[J].地球信息科学,2007,9(02):37-42.

  [4] 吴涛,戚铭尧,黎勇,等。WebGIS开发中的RIA技术应用研究[J].测绘通报,2006,(06):34-37.

  [5] 张茜。WebGIS和Flex架构在公众气象信息发布系统中的应用研究[D].南京:南京信息工程大学,2013.

  [6] 袁柳。基于WebGIS的配网空间数据在线编辑技术研究[D].武汉:华中科技大学,2011.

  [7] 李丹。基于ArcGIS Server平台的WEBGIS应用研究[D].哈尔滨:东北林业大学,2007.

  [8] 白雪红,蔺启忠,王钦军,等。基于ArcGIS Server和Flex的数字喀什公共平台系统设计[J].安徽农业科学,2012,40(14):8339-8342.

  [9] 宁新稳。基于Flex技术的应急地理信息服务系统设计与实现[J].地理信息世界,2013,20(2):74-77.

  [10] 洪梓璇。基于ArcIMS与ArcSDE的网上图形编辑系统的实现[J].测绘信息与工程,2005,30(04):40-41.


作者简介:

  吕宏伟(1989-),男,安徽省蚌埠市人,武汉大学研究生,主要研究方向为Web GIS和Web专题制图。


声明:中国勘测联合网登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。