1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。基于要素服务的地图在线编辑系统设计与实现0 引言当前GIS产品很少提供基于浏览器方式的空间数据编辑功能, 这限制了那些不想安装庞大的GIS产品又想具有简单空间编辑功能的业务需求1。传统Web GIS主要是基于HTML页面和JavaScript脚本形式的, 虽然能够在互联网上提供地理信息, 让用户经过浏览器浏览和获得一个地理信息系统中的数据和功能服务2, 但空间数据在线编辑以及多用户协调却是一个技术瓶颈, 而且客户端用户体验不够丰富。随着RIA技术的发展, 已有学者开始对Web GIS中的RIA技术应用进行了研究3, 4并初步设计实现
2、了”富客户端”的Web GIS系统。相较于传统Web GIS, ”富客户端”Web GIS系统集地图服务、 查询服务、 地理编辑服务、 要素图层服务、 位置服务、 分析功能、 数据维护等功能于一体5, 用户体验丰富, 系统开发迅速简单。针对用户的具体需求, 本文设计实现了一个多主体地图在线编辑系统。该系统基于Flex技术, 是一个”富客户端”系统, 以ArcGIS Server作为要素服务发布平台, 以ArcSDE作为空间数据库引擎, 利用AO技术, 结合客户端ActionScript脚本实现地图要素服务动态发布、 空间和属性数据编辑、 符号化以及用户地图管理等功能。1 相关技术引入1.1 A
3、rcGIS ServerArcGIS 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的W
4、eb应用开发框架7。GIS服务器是AO对象的宿主, 提供给Web应用和企业级应用使用, 并包含核心的AO代码库, 在服务器上为AO提供一个灵活的运行环境。经过远程对各类服务AO对象的调用, 可动态改变服务的属性, 系统中对要素服务的操作均是经过调用各类AO对象实现的。1.2 FlexFlex 是一个高效、 免费的开源框架, 可用于构建具有表现力的 Web应用程序。Flex作为当前最为流行的RIA技术, 集完善的系统开发环境、 优秀的客户交互体验以及跨平台跨浏览器等优点于一身, 成为当前互联网上RIA技术在各个应用领域的研究重点8。Flex应用框架由描述应用程序界面的MXML语言、 面向对象的脚
5、本语言ActionScript、 样式文件CSS、 Flex组件库以及Flex SDK所组成。MXML语言控制页面上的元素布局, ActionScript则用来处理业务逻辑9。Flex采用客户端-服务器异步通信模型, 支持快速客户端交互, 即只传输已更改数据, 无需刷新整个页面, 这样提高了客户端的响应速度, 提供了更好的用户体验。1.3 FlexViewerArcGIS API for Flex是一套强大的开发框架, 利用它能够开发出丰富的互联网应用程序, 以访问WebService的方式调用ArcGIS Server的服务资源。FlexViewer是基于ArcGIS API for Fle
6、x的一个免费的应用程序框架, 容易定制和扩展, 利用该框架能够迅速搭建起基于ArcGIS Server的、 以地图为中心的富客户端应用的原型。2 系统设计与实现2.1 总体框架本文设计实现的基于ArcGIS Server要素服务的地图在线编辑系统总体框架如图1所示。包括表现层、 业务层、 服务层和数据层4个部分。图1系统总体框架Fig.1 The system architecture1) 表现层表现层运行在浏览器的FlashPlayer插件之中, 负责与用户交互, 作为空间数据和属性数据显示的客户终端。使用 FlexViewer框架搭建, 用户界面设计采用MXML语言, 对ArcGIS Se
7、rver服务的请求及操作使用ArcGIS API for Flex, 与Web服务器的交互以及用户业务操作使用ActionScript脚本实现。2) 业务层业务需求包括地图基本浏览、 动态创立并发布服务、 空间和属性编辑、 符号在线编辑、 数据批量导入、 地图数据管理等。FlexViewer框架中的一个Widget是对一组相关操作的封装, 这些相关操作完成某项特定业务功能。系统针对各项业务功能, 设计实现一个对应的Widget, 这些Widget相当于一个个”插件”, 不同的Widget组装, 实现不同的功能组合。3) 服务层ArcGIS Server服务器响应服务的空间数据获取和属性数据查询
8、请求, 进行空间数据缓冲处理与并发控制, 经过ArcSDE与数据库进行交互。Weblogic作为Web容器, 响应非空间的用户数据存取请求以及业务性的操作请求, 与数据库交互实现数据存取。对ArcGIS Server中AO对象的远程调用, 是经过Web容器的调用间接实现的。请求首先由客户端发送到Web容器, Web容器经过间接连接的方式连接到ArcGIS Server服务器, 获取SOM权限之后, 根据需要创立相应的上下文环境(SOC), 然后调用各类细粒度的AO对象。ArcGIS Server的执行结果反馈给Web容器, 进而反馈到表现层。4) 数据层Oracle数据库中包括地图数据和系统用
9、户数据两部分。地图数据是用户创立ArcGIS Server要素服务的数据源, 能够是用户上传的shp数据, 也能够是用户经过属性字段定义生成的数据, ArcGIS Server经过ArcSDE存取Oracle中的地图数据;系统用户数据是用户登录系统后进行操作而产生的记录信息, Weblogic经过数据库连接池对其进行存取。Shp文件和Excel文件作为客户端提交的数据, 上传至后台, 经过AO对象的处理转化为Oracle中的地图数据部分, 最终会在用户编辑的地图要素服务中呈现出来。2.2 核心功能设计与实现1) 地图基本浏览地图的基本浏览包括缩放、 平移、 前后视图、 全局视图等, 直接使用F
10、lexViewer框架中NavigationWidget提供的功能。2) 动态创立发布地图服务在线编辑之前, 需要在ArcGIS Server中创立地图的要素服务。ArcGIS Server手动创立地图服务的基本流程是: 添加地图数据制作地图文档(mxd), 将地图文档发布到ArcGIS Server, 刷新ArcGIS Server缓存。ArcGIS Server动态创立服务则根据客户端提交的地图数据, 自动完成服务的创立过程。客户端提交的地图数据能够是一份shp数据或自定义的shp结构数据。动态创立并发布地图要素服务的基本流程如下图2所示: 数据提交到ArcGIS Server后, 调用A
11、O中的SdeWorkspaceFactory、 ShapefileWorkspaceFactory、 Field等细粒度对象实现数据存入ArcSDE;完成之后, 调用Map、 FeatureLayer、 UniqueValueRenderer、 PictureMarkerSymbol等对象创立地图文档, 并对图层样式进行设置;地图文档创立后, 调用IServerObjectAdmin以创立IserverObjectConfiguration2对象, 进行服务的配置, 完成后发布服务并刷新。图2 动态创立并发布地图服务的基本流程Fig.2 The basic process of creatin
12、g and publishing map service dynamicly3) 空间与属性数据在线编辑在线编辑是对空间数据和属性数据的添加、 删除和修改操作。ArcGIS API for Flex提供了FeatureLayer图层, 用以加载ArcGIS Server要素服务(Feature Service)。FeatureLayer将服务器端要素的几何和属性信息返回客户端, 供其进行编辑;客户端执行添加、 删除与修改操作后, 将经过编辑的要素添加到一个数组, 并调用FeatureLayer中的applyEdits 方法, 将数组提交到ArcGIS Server, 由其同步更新数据库中的数据
13、, 并刷新要素服务使其生效。点要素的添加, 能够点击地图添加, 输入坐标添加, 或者将含有空间位置坐标的Excel数据批量导入地图, 实现批量添加;点要素的删除, 选择多个可批量删除;点要素的修改, 即位置的移动, 能够拖动到新位置, 或者输入新位置坐标进行移动。线和面要素的添加, 能够点击地图位置点添加, 或者批量导入含有位置信息的数据;线和面要素的删除, 选择多个可批量删除;线和面要素的修改, 包括移位和节点的编辑, 选中单个要素可移动其位置, 可节点进行添加、 删除和移动操作。属性数据的编辑使用AttributeInspector组件。AttributeInspector经过featur
14、eLayer属性与ArcGIS Server要素服务关联, 并以表单方式列出可编辑属性。属性编辑完成, 派发UPDATE_FEATURE事件, 调用applyEdits方法, 提交并更新。4)符号在线编辑点状要素的符号化分为两部分: 客户端符号化和服务器端地图服务样式的修改。创立服务时, 地图服务使用默认样式, 加载到客户端即以该样式展现。当客户端修改样式时, 修改FeatureLayer的renderer属性, 即可实现客户端符号化;对于服务器端地图服务样式的修改, 则在创立服务时添加了”符号样式”字段, 用来保存所选定样式的唯一标识码, 采用唯一值渲染的方式进行符号化。要使得服务器端地图服
15、务样式与客户端选定的样式同步, 需要将客户端选定样式的唯一标识码更新到”符号样式”字段, 而且要保证客户端与ArcGIS Server服务器端共用一套符号模板。服务器端核心代码如下: IUniqueValueRenderer pUVRender =new UniqueValueRenderer( serverContext.createObject(UniqueValueRenderer.getClsid();pUVRender.setFieldCount(1);pUVRender.setField(0, 符号样式);pGFeatureLyr.setRendererByRef(IFeature
16、Renderer)pUVRender);pGFeatureLyr.setDisplayField(符号样式);5) 数据批量导入在线编辑, 需要用户不断地与系统交互。当数据量较大时, 费时费力, 效率低下。因此系统提供批量导入, 用以将包含有空间位置的Excel数据进行落地, 批量添加到地图服务中, 实现空间可视化。批量导入, 根据Excel中的位置字段构造要素的几何形状, 根据其它字段构造属性信息, 从而构造出Graphic对象。将多个Graphic提交给ArcGIS Server, 即可完成批量添加要素的编辑功能。6) 地图数据管理用户地图数据管理包括对地图服务的删除、 更新、 下载以及服
17、务链接的发布。删除是将ArcGIS Server中对应的地图服务删除;更新是对地图服务的再次编辑;下载则将地图服务对应的经过在线编辑的数据下载到客户端;服务链接发布实现服务的共享, 供她人调用。2.3 应用实例本文设计实现的系统, 在”数字深圳空间基础信息平台”中进行了应用。 该平台以3S技术为基础, 整合深圳市自然资源与空间地理基础信息及关联的各类经济社会信息, 建立多尺度、 多分辨率且更新及时的空间基础数据库, 以满足城市规划、 建设和管理对空间基础信息日益增长的迫切需求。”平台”用户对空间数据的在线编辑需求日益迫切, 具体主要为: (1)自定义图层。从零开始设计新建图层所包含的字段名和字
18、段类型, 图层类型等。(2)本地shp数据能够上传并发布成可供编辑的服务。(3)空间数据在线编辑。包括图形的编辑和属性编辑。(4)空间数据符号化表示。对点要素提供客户端与服务端的符号编辑, 并保持同步。(5)地图服务的管理。包括服务的共享, 服务数据的下载等。图3为深圳市罗湖区街道的视频监控点在线编辑案例, 用户根据已有的视频监控点统计数据(xls格式), 自定义地图服务的属性字段, 系统创立空白的地图服务, 经过点编辑工具条中的批量导入工具, 将监控点数据导入落地, 能够对监控点的位置和属性进行编辑, 并进行符号化。图4为深圳市跨区道路在线简化案例, 用户将已有跨区道路shp数据上传后发布成
19、服务, 在客户端对道路的几何形状进行编辑, 主要为添加节点、 删除与移动节点。图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 editin
20、g parcel exchange data online3 结语设计实现的地图在线编辑系统, 采用RIA技术, 应用FlexViewer框架, 用户体验比较丰富, 功能上满足了”平台”用户基本的在线空间与属性编辑, 地图数据的管理等需求。为提高实用性, 设计实现批量导入空间和属性数据功能。本系统实现的在线编辑功能没有涉及到多用户编辑同一份空间数据的多用户协调问题, 各个用户只编辑自己所有的数据。不足之处在于相对于桌面版GIS提供的数据编辑, 功能较弱, 未实现编辑回退, 编辑中没有考虑到拓扑的约束10、 多边形不能进行合并与分割等。系统需要更好地与”数字深圳空间基础信息平台”具体的业务相结合
21、, 不断实现系统易用实用性。( 转自中国勘测联合网.com 测绘技术百科) 参 考 文 献1 毛炎新, 侯瑞霞, 唐小明。具有在线空间数据编辑的WebGISJ.计算机应用, , 30(S1): 66-68.2 张云鹏, 魏卫华, 孙燕, 等。WebGIS在土地交易与地价信息服务中的应用研究J.南京师范大学学报(工程技术版), , 6(01): 91-94.3 张宏, 丰江帆, 闾国年, 等。基于RIA技术的WebGIS研究J.地球信息科学, , 9(02): 37-42.4 吴涛, 戚铭尧, 黎勇, 等。WebGIS开发中的RIA技术应用研究J.测绘通报, , (06): 34-37.5 张茜
22、。WebGIS和Flex架构在公众气象信息发布系统中的应用研究D.南京: 南京信息工程大学, .6 袁柳。基于WebGIS的配网空间数据在线编辑技术研究D.武汉: 华中科技大学, .7 李丹。基于ArcGIS Server平台的WEBGIS应用研究D.哈尔滨: 东北林业大学, .8 白雪红, 蔺启忠, 王钦军, 等。基于ArcGIS Server和Flex的数字喀什公共平台系统设计J.安徽农业科学, , 40(14): 8339-8342.9 宁新稳。基于Flex技术的应急地理信息服务系统设计与实现J.地理信息世界, , 20(2): 74-77.10 洪梓璇。基于ArcIMS与ArcSDE的网上图形编辑系统的实现J.测绘信息与工程, , 30(04): 40-41.