转帖————构建基于ArcGIS 9的新一代基础地理信息系统平台
本文主要介绍如何基于ArcGIS 9构建新一代基础地理信息系统平台,并论述了建立基础地理信息系统平台的数据平台、服务平台和应用平台的具体建设思路。对于服务平台,本文提出三种思路来阐述,并分析这些思路的优缺点。
关键词:地理信息系统;空间数据;ArcGIS;WebServices;WebControl;政府地理信息系统平台;水务一体化管理系统
1 引言
随着当今计算机技术的飞速发展,也带来了地理信息系统(GIS)的飞速发展。目前GIS正在由单点计算转向分布式计算,应用的领域也不断扩展。特别是J2EE和.net技术的发展和应用,开拓了WebGIS新的技术思路。本文讨论的基础地理信息系统平台,不是一个纯粹的GIS平台,而是在GIS平台的基础上,根据实际需求,进一步扩展和封装,搭建一个面向实际应用的基础地理信息系统平台,服务于具体的应用系统。ESRI 最新发布的ArcGIS 9,拥有强大和完善的GIS服务架构,支持高度的可伸缩性二次开发。结合基础地理信息系统平台的特点和ArcGIS 9的新特性,笔者认为采用ArcGIS 9构建一个基础地理信息系统平台,具有很大的优越性,下面我们将会进一步论述。
2 基础地理信息系统平台的构成
通过分析基础地理信息系统平台的需求,可以得出,基础平台的核心是要解决三个问题:一要解决数据管理;二要提供后台服务和拥有二次开发能力;三是要提供基础的应用,以便进一步扩展,为实际系统服务。归纳总结,笔者认为,基础地理信息系统平台应该由数据平台、服务平台和应用平台组成:
1)数据平台
数据平台主要用来收集、生产、加工、维护和管理空间数据。数据平台具体应该包括地图加工、属性数据管理、数据转换、数据备份以及数据统一管理等功能。除此之外,数据平台还应该包括对数据的安全管理,如进行权限控制,保证数据的安全。
2)服务平台
服务平台是整个基础地理信息系统平台的核心,应该具有较高的开放性和二次开发能力。服务平台一方面应该具有核心服务,如地图服务、属性服务、空间分析服务、元数据服务和专题图服务等,另一方面应该提供强大的开发组件群,最关键的是要提供强大的Web开发能力,才能满足基础地理信息系统平台的开放性和扩展性需求。
3)应用平台
应用平台主要包括地图浏览模块、信息查询模块、空间分析模块、专题图制作模块和数据共享模块等。这些模块作为一个基础地理信息系统平台必需的基础应用模块,可以在这些模块的基础上进一步开发实际的应用系统。
3 ArcGIS 9架构介绍
ESRI今年发布的ArcGIS 9,笔者认为是ESRI发布的迄今为止功能最强大、最完善的一个版本。ArcGIS 9除了保留原ArcGIS的良好特性外,新版本进行了革命性的突破,主要体现在:
(1)合并ArcObjects和MapObjects为ArcEngine
笔者认为ArcEngine得出现是ESRI划时代的突破,其优化了核心组件架构,推出更强大的一系列二次开发控件,同时支持COM、Java和.net开发,并可将成果进行分发,从而大大降低了开发难度,也大大提高了GIS应用程序的开发效率。
(2)ArcGIS Server迎来了真正的WebGIS开发时代
基于ArcIMS开发WebGIS应用系统,虽然配置不是很复杂,但其开放性、灵活性和扩展性总不尽人意。而ArcGIS Server的出现完全改变了这种束缚:采用Web模板、Web控件以及Web服务,WebGIS应用开发完全在一个可视化的环境中进行定制,大大提高了开发效率。
ArcGIS 9新的体系框架如图3.1.1所示,空间数据引擎为SDE,同时进一步完善GeoDatabase空间数据模型;核心服务包括ArcGIS Server和ArcIMS;组件层为ArcEngine及相关扩展模块;桌面应用层包括ArcInfo、ArcEditor、ArcView等。在每个层,都提供了二次开发接口,彼此互相关联,形成一个严密的体系。
为了搭建一个基础地理信息系统平台,需要用到ArcGIS体系中几个核心模块: ArcEngine、ArcGIS Server以及ArcIMS,以下将作简要介绍。
3.1 ArcEngine介绍
笔者前面已经说过,ArcEngine是ArcGIS划时代的一个产品,主要原因在于其提供了完美的组件框架和控件框架,为二次开发者提供了随心所欲的开发利器。对于ArcEngine,ESRI定位于提供嵌入式的GIS组件,能用来在一个组织内建立应用,为用户提供有针对性的GIS功能,为每个用户的特定需求提供有针对性的GIS功能实现的基础。实际上,根据笔者研究,发现ArcEngine应用远不止这些。理论上讲,通过ArcEngine完全实现ArcInfo桌面应用系统甚至ArcGIS Server,这也为我们后面讨论实现平台服务提供可能。
3.2 ArcGIS Server介绍
ArcGIS Server是ArGIS 9全新的一个服务器,其主要用于构建集中管理、支持多用户的企业级GIS应用的平台。ArcGIS Server提供了丰富的GIS功能,例如地图、定位器和用在中央服务器应用中的软件对象。开发者使用ArcGIS Server可以构建Web应用、Web服务、以及其它运行在标准的.NET和J2EE Web服务器上的企业应用。
ArcGIS Server包含两个主要部件:GIS服务器和.NET与Java的Web应用开发框架(ADF)。GIS服务器ArcObjects对象的宿主,供Web应用和企业应用使用。它包含核心的ArcObjects库,并为ArcObjects能在一个集中的、共享的服务器中运行提供一个灵活的环境。ADF允许用户使用运行在GIS服务器上的ArcObjects来构建和部署.NET或Java的桌面和Web应用。同时也提供了集中的、多用户的geodatabase编辑。
3.4 ArcIMS介绍
ArcIMS是ArcGIS家族中用来进行GIS 地图、数据和元数据的网络发布服务器。在ArcGIS 9中ArcIMS得到了进一步扩展。ArcIMS使网站能够提供GIS数据、交互式地图、元数据目录以及特定的GIS应用。通常,ArcIMS用户通过他们的Web浏览器,借助ArcIMS 内含的HTML或Java应用程序来访问这些GIS服务。除此以外,ArcIMS服务还能够被更多的客户端访问,如ArcGIS Desktop、ArcGIS Engine应用、ArcReader、ArcPad、ArcGIS Server节点、MapObjects for Java应用以及各种使用HTTP和XML进行网络通讯的无线设备。
ArcIMS主要提供多种网络发布功能,如影像渲染、要素流功能、数据查询、数据提取、地理编码、元数据目录服务、元数据目录浏览和搜索应用、网络地图应用等。可以看出,ArcIMS提供了强大的地图Web发布的手段,几乎为实现基础地理信息系统平台提供全部功能。
4 构建基于ArcGIS 9的基础地理信息系统平台
前面我们提到,对于一个基础地理信息系统平台来说,其核心包括数据平台、服务平台(包括开发平台)、应用平台。下面我们将具体阐述三个平台的包含内容和设计思路。
4.1数据平台
数据平台主要用来完成地图加工、属性数据管理、数据转换、数据备份和数据管理等功能,作为基础地理信息系统,应该提供一个集中的数据管理系统,实现以下功能:
4.1.1 地图加工
地图加工可以采用ArcGIS提供的ArcInfo、ArcEditor或者ArcView来实现,也可以通过ArcEngine来开发一个地图加工模块。
地图加工应该提供矢量图形编辑功能、图形操作功能。主要包括:
1)图形编辑操作
增加要素(点、线、面)、删除要素、移动要素、拷贝要素、旋转要素等编辑操作。
2)注记操作与编辑
包括属性转注记、直接注记。同时可以设置注记方向、字体、字体颜色、字体大小等。
4.1.2 属性管理
用来实现空间数据库图和属性一体化,可以通过图来修改和录入相关的属性数据。属性录入提供表格录入的方式。
4.1.3 数据转换
主要提供Shape、E00、DWG等格式的数据导入和导出功能。同时应该提供其它数据格式导入和导出功能,实现数据转换。
4.1.4 数据备份
数据备份可以通过数据库自身备份和利用SDE备份功能。通过SDE的命令可以实现全部或者增量备份。
4.1.5 数据安全
数据管理主要是指建立一套数据管理机制,对数据访问实现日志记录以及进行访问权限设置等。
1)访问日志记录
日志记录是数据平台和重要的功能,应该能详细记录数据被访问、修改、删除等操作时间、访问者来源等。
2)数据权限设置
为了实现数据安全,必须对数据进行访问权限设置,可以实现对特定人员进行设置,也可以设置某个角色。权限控制可以到某个具体的图层或者属性表。
4.1.6集成数据管理
将上述模块集成到一个桌面环境下,来实现对空间数据和属性数据的统一管理,也实现图形与属性互动操作。集成数据管理系统可以采用ArcEngine来实现。
4.3服务平台
服务平台是基础地理系统平台的核心平台,提供核心的后台支撑服务,是整合地理信息系统平台的关键部分。笔者认为,服务平台是少应该包括以下服务:
1)地图服务
提供生成地图的影像数据,同时可获取到空间层的详细信息。
2)属性服务
提供空间查询(点选、框选、多边性选以及BUFFER选择)和数据查询。
3)空间分析服务
提供核心的空间分析服务,如网络分析、BUFFER分析、3D分析等。
4)专题图服务
提供专题图服务,如实现等值线、彩色渲染图、三维面图、饼状专题图、直方专题图等。
5)元数据服务
提供浏览和查找元数据的服务。
除了以上这些主要服务外,还应该提供位置服务、负载均衡服务、编辑服务等,本文将不再详述。作为一个基础地理信息系统平台的服务平台,除了提供核心服务,还有一个重要的功能就是提供二次开发接口。实际上,当今时代已经完全进入了Web时代,服务平台所提供的二次开发接口应该主要是Web开发接口。针对这种需求,我们可以采用三种方案来实现服务平台:ArcIMS、ArcGIS Server以及基于ArcEngine构建的服务平台,下面我们将分别论述这三种方式的优缺点。