分布式WebGIS构件化的研究和实现Word文件下载.docx
《分布式WebGIS构件化的研究和实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《分布式WebGIS构件化的研究和实现Word文件下载.docx(50页珍藏版)》请在冰豆网上搜索。
![分布式WebGIS构件化的研究和实现Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-12/1/1d84149f-c40e-44b5-8fcd-13c96c632da4/1d84149f-c40e-44b5-8fcd-13c96c632da41.gif)
三、WebGIS现状...7
四、我们的工作──环境背景及要解决的问题...9
第二章分布式WebGIS构件化研究...10
一、
构件的概念...10
1.构件
10
2.CORBA..11
3.COM/DCOM...11
4.GIS构件...11
二、构件化的意义...12
三、构件化系统建模...13
1.体系结构...13
2.地理空间数据模型...14
3.构件层次划分...16
4.构件功能划分...17
四、改进系统性能的技术要点...22
1.空间索引....22
2.缓存技术....22
第三章系统设计与实现...24
一、地图数据访问对象类...24
(一)
GxConnection
连接对象...24
(二)GxLayer
图层对象...26
(三)
GxGeometryIndex几何索引对象...29
(四)
GxFieldDef
字段定义对象...29
(五)GxFieldDefs字段定义集合对象...29
(六)
GxLegendLib
图例库对象...30
(七)
GxDisplaySetting
显示配置对象...31
(八)
GxDisplaySettingItem
配置项对象...32
(九)
GxReferenceSystem
参照系对象...33
(十)
GxEntity
实体对象...34
(十一)
GxGeometry
几何对象(基类)35
(十二)
GxPoint
点对象...37
(十三)
GxPoints
点簇对象...37
(十四)
GxLine
线对象...38
(十五)
GxLines
线簇对象...40
(十六)
GxPolygon
多边形对象...40
(十七)
GxAnnotation
标注对象...41
(十八)
GxImage
图像对象...42
(十九)
GxGeometries
复杂几何对象...43
二、地图可视化对象类....44
GxMapView地图显示构件...44
(二)
GxMap
地图对象...46
GxMapLayer
显示图层对象...47
三、实用功能对象类...48
GxError
错误处理对象...48
GxSet
集合对象...48
GxArray
数组对象...49
GxEnumeration
枚举对象...50
(五)
GxSelection
被选集对象...50
GxUtility
功能函数对象...51
第四章总结...54
参考文献...55
致
谢...57
第一章引言
地理信息系统(GeographicalInformationSystem,GIS)的任务是采集、存储、管理、分析和显示地球空间信息。
它是以数字化的形式反映人类社会赖以生存的地球空间的现势和变迁的各种空间数据以及描述这些空间数据特征的属性,以模型化的方法来模拟地球空间对象的行为,在计算机软、硬件的支持下,以特定的格式支持输入/输出、存贮、显示以及进行地理空间信息查询、综合分析、辅助决策的有效工具。
一、WebGIS起源
自1963年加拿大地理信息系统(CGIS)诞生以来,经过多年来的发展,传统的GIS技术已经成熟。
GIS正广泛应用于城市规划、设施管理、资源、环境、能源、农业、水利、交通、国防、人口、灾害防护以至人民生活的各个方面,发挥着重要的作用。
信息高速公路的提出,信息技术以及Internet的飞速发展与广泛应用,人们对分布式应用研究以及共享信息和知识需求不断增长,从而对GIS的研究也发生了根本变化。
1998年美国副总统戈尔提出了“数字地球”的概念,它的核心是全球的信息化,它是对真实地球及其相关现象的统一性的数字化重视和认识。
可以说数字地球是也一个GIS系统,因为它包容了全球与地理有关的信息。
数字地球以Internet技术为起点,建立一个连通全球的信息网络,提供数字地球籍以存在的空间。
因此实现“数字地球”离不开网络化GIS的支持。
人们在社会生活中不断提出对空间信息的新的更高的需求。
越来越多的用户依赖于互联网获取外界信息。
在国际互联网上使用浏览器进行信息查询,实际上就是向Web服务器端请求数据。
不同于常见的文本、图像、声音和视频等信息,对于一些比较专业的数据,通用的Web服务器和浏览器一般不会提供支持。
随着国际互联网的普及和GIS在各个领域越来越广泛的应用,人们希望通过国际互联网也能进行GIS信息的查询。
而国际互联网的迅猛发展和广泛应用,使得它必将成为GIS软件的运行环境,基于Web的GIS应用已越来越成为广大GIS用户新的迫切的需求。
WebGIS是GIS与国际互联网的有机结合,是GIS在广域网环境下的一种应用,最终目标是实现空间信息的网络化。
GIS通过国际互联网在功能上得到了延伸,真正成为一种大众使用的信息工具。
从国际互联网的任意一个节点,人们可以浏览网上的各种分布式的、具有超媒体特性的地理空间数据及属性数据,进行地理空间分析、查询,以支持智能辅助决策。
通过对空间信息网络化和超媒体技术的集成,WebGIS提供给用户的信息不仅仅是矢量化的空间信息,还有遥感影像、动态视频、文字说明等多种信息。
与传统的GIS比较,WebGIS有以下优势:
Ø
不同于基于单机或局域网的传统GIS,WebGIS适用于广域网,拥有更多的应用群体。
因此极大地扩展了GIS的应用范围,使得GIS真正成为一种大众使用的信息工具。
不同于集中式的传统GIS平台,WebGIS是分布式的。
用户可以使用广域网上任意一台服务器的GIS服务,从而使GIS的概念扩大到社会化和全球化。
网络GIS采用大型的分布式空间数据仓库(或具有类似功能的ORDB),存贮和管理大数据量的空间信息,并有能力在大量用户同时通过网络对其进行访问时能快速响应。
二、WebGIS的目标
大众普及化
随着网络的迅速普及,越来越多的人依赖网络获取信息、处理事务。
GIS应当抓住网络这一日益发展的“第四媒体”,扩大它的应用领域。
将GIS软件与Web服务器集成,通过普通浏览器,用户可以在任何地方操纵网络GIS,享用地理空间信息服务,从而将GIS扩展成为公众服务系统;
同时可以拓宽地图出版渠道,降低数据散发成本。
象数字地图的出现,使得人们得以抛弃传统的印刷地图,可以在网络上简便地查询地点和路线。
2.数据分布
随着网络的发展和GIS用户的增多,地理信息资源也分布在不同的领域,归不同的用户管理。
地理信息资源是一个庞大繁复的数据源,如果集中在一个站点是不太现实的。
因此,系统要适应这种分布式数据的环境,能够使得GIS用户通过网络不但能够访问分散在不同站点的数据和数据处理服务,同时还能维持系统的一致性以及平衡这种访问的网络负载。
3.资源共享
GIS应用范围在进一步扩大,为实现地球资源和信息的共享,GIS需要不断“开放”,建立面向用户的、资源共享的开放式GIS。
这里主要是指地理及其属性数据的开放性。
WebGIS应该支持用户通过网络实时获取不同应用系统中的地理信息,避免冗余数据存储,实现地理空间数据的共享。
4.互操作性
互操作性是指不同的GIS软件部件或软件系统能够由于异构数据和异构处理环境所带来的分布式地球资源存取障碍而进行相互操作。
GIS软件的互操作是通过规范而获得的,即GIS软件开发者通过遵从一系列通用的规则开发各自的软件来获得互操作性。
在系统的设计中,我们可以参照OpenGIS有关构件方面的规范,从而使得构件具有规范化的接口。
当建立了各种构件的标准接口以后,它们就可以相互操作。
一些公用的构件可以被收集起来以建立构建库,以促进NSII(NationalSpatialInformationInfrastructure)与数字地球的建设。
三、WebGIS现状
从90年代开始,人们对GIS的网络开发和应用做了很多有意义的探讨并提出了很多实现模型。
综合起来,WebGIS的实现可以分为基本的三类方式:
1〕文件共享方式。
这是最早的网络GIS实现技术,主要通过提供文件共享和目录映射来提供网络访问能力,在局域网下比较适合。
现在的系统已经很少采用这种方式。
2〕CGI方式。
采用Client/Server体系结构。
客户端基本不含GIS功能,只是Web浏览器,通过公共网关接口CGI(CommonGatewayInterface)来动态访问服务器方GIS数据和功能;
服务器根据请求启动服务器端的GIS应用程序,处理用户的请求,然后将处理结果作为HTML页面发送回客户端。
几乎所有的GIS处理功能都是在服务器端完成。
我们一般称之为侧重服务器端的WebGIS。
3〕插件方式。
与CGI方式不同,这是一种侧重客户方的策略,它将服务器上的部分GIS功能移到客户端,这部分功能被设计成能与网络浏览器交换信息的专门GIS软件,称为GIS插件。
这种GIS插件不但可以增加网络浏览器处理地理空间数据的能力,而且还可以减少网络GIS服务器的信息流量。
在侧重服务器端的WebGIS中,由于处理集中在服务器端,当客户端用户增加时系统负载迅速递增,从而导致系统性能下降;
同时,在服务器端很难提供高效的诸如空间分析等的地理信息的交互。
因此侧重在客户方实现GIS功能,在WebGIS实现中是比较有效可行的一种策略。
这也是我们研究系统构件化的主要原因。
当然,在客户方和服务器方的GIS功能处理上,如果负载比重过于悬殊会影响系统的整体效率,因此必须很好地设计系统,在数据处理与传输上做一定的权衡。
由于WebGIS的重要性和它所提供的巨大商业机会,世界各大GIS厂商纷纷推出自己的WebGIS产品。
现在全球有很多网站可以提供用户交互访问远程GIS服务的能力。
这些系统通过本地机运行远程主机上的GIS软件。
GIS和WWW是正在迅速发展的技术,它们使得GIS软件开发人员“能够设计出主要面向专家级的应用,或使之接近专业人员甚至是普通大众”【16】。
一些著名的商业GIS软件包,诸如ESRI的Arc/Info和ArcView,是通过运行他们自己的Web服务器。
许多在线系统是为特定的任务度身定做的,这或许也是大多数基于Web系统的发展之路。
目前,较为成熟的国外WebGIS厂家及其产品主要有【12】【13】【14】【15】:
厂商
产品名称
支持数据格式
服务器
AutoDesk
MapGuide
向量
WinNT
Bentley
MicrostationGeoGraphics
ESRI
IMSforArcView&
MapObjects
向量、栅格
MapInfo
ProServer
WinNT/Windows
Intergraph
GeoMediaWebMap
WindowsNT/UNIX
Genasys
SpatialWebBroker
UNIX
APPIANInteractiveCorp.
APPIAN"
Carta"
ObjectFX
SpatialNet
WinNT,SUNSolaris,HP-UX
UniversalSystemsLtd.
CARISInternetServer
这些WebGIS产品在一定程度上给出了地理信息的网络共享解决方案,它们都是基于客户/服务器模式,在服务器端有功能强大的桌面GIS;
对客户端有一定特殊要求,如IMS、MapInfoProserver等采用纯图像,而MapGuide、GeoMediaWebMap等采用图形图像。
此外,国内在对WebGIS的研究中比较有影响的包括武汉测绘科技大学的GeoStar吉奥之星、北大青鸟天通信息工程公司的Geo-UnionWebGISEnterprise以及CityStar、MapGIS等。
四、我们的工作──环境背景及要解决的问题
国际互联网正在改变着数据访问和发布的方式。
处理互联网上空间数据和地理信息的WebGIS正随着互联网与Web技术的变化而迅速发展。
由于大数据量的传输,互联网上及计算机本地总线数据传输速率的极大差异,WebGIS存在着数据传输性能低的最大缺陷,而在传统的桌面GIS中通常不存在这样的问题。
这主要是因为WebGIS需要耗费较长的时间进行AvctiveX构件或JAVAapplets的初始化下载,和地图数据的传输。
尤其在进行传输大型矢量地图数据时,这个问题尤其值得考虑。
通常,WebGIS的低性能可以通过两种方式得以解决:
1〕增加互联网连接的速度,这主要是计算机网络硬件的支持;
2〕研究如何设计有效的程序,提高系统性能。
这是GIS研究开发人员的主要任务。
随着分布式对象技术的成熟,一种新的WebGIS实现技术——基于构件的WebGIS出现了,这种技术使得真正的高性能的网络GIS成为可能。
构件为开发提供了一种新的开发模式,比现有的面向对象的或传统的基于模块的开发技术更为高效、灵活、功能强大。
比方说,它使得开发人员通过组合和重用由不同个人和团体独立开发的二进制“模块”,极大地简化和加快开发工作。
构件是语言无关和硬件无关的,而且可以在网络上运作。
通过采用空间缓存和空间索引等技术,可以有效地解决地理数据的检索和传输效率问题。
同时这种技术也为二次开发提供了更灵活的选择。
本文将就基于Internet/WWW计算环境下WebGIS系统的构件化做理论和实践上的探索,建立实用的WebGIS对象构件系统。
第二章分布式WebGIS构件化研究
一、构件的概念
从90年代开始,出现了主要运行于UNIX上的CORBA(CommonObjectRequestBrokerArchitecture)和主要运行于Windows/WinNT上的COM/DCOM,这些是构件的基础技术。
1.构件
简单地说,构件技术是一种二进制标准【1】,即EXE和DLL程序标准。
它使得其它的DLL或EXE程序能够操纵、共享和访问由某个EXE或DLL程序(即构件)所提供的方法和数据【5】。
构件技术极大地推动了软件业的发展,这是因为:
²
这个技术使得构件的开发和使用完全独立。
这个技术提供了一种必要的机制,使得一个构件可以在它自己的过程中,透明地访问和操纵其它过程的方法和数据。
这也给予我们一种强大和灵活的开发手段来使构件无缝地协同工作。
这个技术提供了其它灵活的方式来开发和定制我们的应用或构件。
在这里构件技术体现了面向对象的设计思想,具有独立性、封装性,隐蔽实现的细节,支持互操作的规范化界面;
具有关联性、继承性、聚合性和类库机制,以支持复用。
例如通过使用包含/聚合或类库,外部开发者可以从已有的二进制构件基础上创建新的构件。
这个派生出来的构件不仅从外部的DLL或EXE程序中继承了所有的方法,而且可以改变或定制每一个方法和扩展功能以满足新构件的特殊要求。
通常应用程序的开发者不会从底部开发他们的构件。
许多应用程序是从现存的二进制构件派生出来的,然后再扩展或修改功能。
并且因为一个应用系统可以被看作是由不同开发者开发的独立构件组成的集合,我们可以简单地通过挑选所需的构件来代替或更新现有的构件,来满足一定的需求。
构件是双向和语言无关的,这意味着我们可以使用不同的语言来开发构件。
而构件也可以被不同的语言来使用,例如C++,JAVA,PASCAL,C和BASIC等语言。
开发者可以共享用不同语言开发的所有二进制模块。
同时,构件可以在不同机器不同操作系统上透明地运行(支持网络和硬件无关)。
软件构件必须遵从二进制的外部的标准,但是它们的内部实现完全没有限制。
它们可以使用过程语言,也可以使用面向对象的语言和构架。
2.CORBA
CORBA是由对象管理集团(TheObjectManagementGroup)提出的一个分布式环境下跨平台、跨语言的对象管理规范【9】。
CORBA最关键的有三个部分——对象界面、对象实现和对象请求代理。
对象界面用一种通用的界面定义语言描述了对象所要完成的功能以及对象的属性,对象实现则采用某种方法某种语言实现对象界面所定义的对象,同一个对象界面可以有不同的对象实现方法。
对象请求代理则在对象请求和对象实现之间架起了一座桥梁。
用户对对象的请求是用对象界面的方式来描述的,然后再向对象请求代理提出对象请求,对象请求代理根据用户的对象请求从对象实现中选取一个合适的对象实现供用户使用。
对于用户来说,它根本不知道对象实现到底是在网络的哪个位置上,也不知道调用的是哪个对象实现。
3.COM/DCOM
DCOM,作为微软的分布式计算策略,是在开放性软件DEC远程过程调用协议的基础上开发的。
DCOM是微软的构件对象模型COM的一个扩增版,而COM是ActiveX的基础技术【10】。
COM和DCOM最大的不同在于COM构件是运行在单机上,而DCOM构件则是分布在网络上。
尽管DCOM在非Windows平台上也可以使用,但会受到很多限制,因此它更适用于Windows环境。
同CORBA一样,DCOM也是采用面向对象的方法,所有应用都被看作是一个对象。
在DCOM环境下,客户应用与COM构件的通信只需通过包含指向该对象可用函数的指针的接口。
在COM和DCOM中,接口是关键,构件是接口的具体实现,一个构件可以被支持相同接口的另一个构件透明地删除和替换。
DCOM允许你使用现存构件,这可通过在应用界面中插入指向该组件的指针来实现。
每一个构件必须在本地机上进行注册,以便客户能通过注册表上的构件唯一标识找到该构件。
DCOM允许现存的客户机和服务器应用通过在主机上注册和配置分布到网络上。
4.GIS构件
我们可以认为GIS构件是以EXE或DLL形式出现的二进制可重用软件块,它通过向用户提供预先定义的接口,来封装各种功能明确的GIS服务,使得用户无需从底层的基本功能做起,而以一种强大和灵活的开发手段来使构件无缝地协同工作在自己的应用程序中,并且可以利用构件的能力来提供标准服务之外的简便的扩展和创新以及强壮的构件版本支持。
它具有以下特性:
透明性:
即黑盒方法。
GIS构件的使用者和开发者相互独立;
使用者无需关心构件的具体实现技术和版本更新,而只需访问构件所提供的接口。
这样就减少了系统更新对二次开发者所带来的影响,只要接口保持不变,内部怎么实现都可以。
其实这一点也正是软件工作者自编程模块化以来一直所倡导的。
可组合性:
构件之间的通讯和绑定相似,从而能够无缝地组合起来形成更大的构件。
根据开发层次的不同,我们应该提供不同要求的开发人员所需的构件层次。
而在系统设计中,最主要的是提供一些可以进行再组合的基础构件(GIS核心对象类),在它们之上可以搭建更高层次的应用构件。
可重用性:
构件可以嵌入到其它应用开发程序中使用。
例如GIS构件可以嵌入到Web主页,从而使Web页具有GIS功能,进行地图显示、空间分析、查询等操作。
二次开发人员也可以充分利用VisualC++、VisualBasic、Delphi、FoxPro、PowerBuilder等语言环境的可视化功能,使用GIS构件来开发面向不同应用领域的GIS应用系统。
二、构件化的意义
目前众多地理信息系统研究开发厂家的产品主要注重于地图的绘制和管理,而对GIS的二次开发支持却不多。
一些厂家对用户提供了用于地图操作和查询的APIs,但这些APIs的调用往往过于纷繁复杂,不太符合目前广大用户面向对象程序设计的习惯,而且要求开发人员对系统的数据结构和组织情况比较了解,因此对开发人员的素质要求较高。
这样WebGIS构件化就应需求而提到了日程上来。
构件化的WebGIS,其形式和结构与传统的GIS有很大的不同。
构件化的GIS可以无缝地集成到开发环境中,提供精炼美观的显示和操作功能。
利用GIS构件,GIS最终用户和软件集成商只要利用适当的构件就可快速生产出所需要的应用系统。
相对较为专业、有针对性的GIS功能以构件的形式组装、发布,并被集成到具体的系统中去。
构件化的GIS可以嵌入到Web主页,实现Internet/Intranet网络GIS应用系统。
另外,构件化的GIS还可以嵌入到任何开发环境中,并充分利用这些语言环境的可视化功能。
构件化GIS降低了系统的复杂性,可以加快开发进度,另一方面也可以降低成本,增加可维护性。
构件化GIS还可以方便地与各种应用系统,如办公软件、图形软件、CAD软件等进行连接和嵌入,方便不同系统之间的互操作。
5.
构件化的GIS,其功能组件可以被封装成能实现与具体任务最紧密相关的功能模块。
因而小巧、灵活,可以方便地进行组装和嵌入,在一些非专业GIS系统中,如一般的MIS系统中,也可以很方便的利用GIS构件实现数据的可视化或地图的显示等任务。
三、构件化系统建模
1.体系结构
从系统构成的角度看,整个系统可以分为GIS应用层、GIS构件层、GIS服务层和GIS存储层四个部分。
其基本的系统结构图如下图所示:
GIS应用层
GIS构件层
GIS存储层
GIS服务器
网络
缓存
基于构件的GIS体系结构
GIS应用层是指由二次开发人员利用GIS构件开发的,面向某些特殊应用领域用户的应用程序,它可以是基于桌面或网络环境而开发的。
GIS构件层对用户提供GIS功能的接口,但是屏蔽了其实现