本草案仅从技术特点、功能、架构等方面分析现有的各种webgis系统,仅供
参考。 本人选择了几种webgis产品,主要从两个大的方面开始分析:开源和非开源的。WebGis产品有:MapServer(开源项目)、MapXtreme(MapInfo)、ArcIMS(ESRI)、ArcServer(ESRI)、SuperMap GIS、MapGIS-IMS。
1 产品总体概述
1.1 MapServer
开源项目;跨平台支持;支持ASP.NET、JAVA、PHP、PYTHON的应用开发;
网站:http://mapserver.gis.umn.edu/
1.2 MapGuide*
开源项目;跨平台支持;MapServer的Enterprise版本;支持ASP.NET、JAVA、PHP、PYTHON的应用开发;
网站:http://mapserver.gis.umn.edu/
1.3 MapXtreme
MapInfo商用平台(10-20W/1 RMB);包含MapXtreme for Windows和MapXtreme for Java两个版本;MapXtreme for Windows无C/S、B/S架构之分,既为C/S嵌入式开发的GIS产品,又为WebGIS产品;支持ASP.NET、JAVA等的应用开发。
网站:http://www.mapinfo.com.cn/
1.4 ArcIMS
ESRI商用产品(15+/-W/1 RMB);跨平台支持;支持ASP.NET、JAVA等的应用开发;体系架构可参阅ESRI产品说明书。
网站:http://www.esri.com
1.5 ArcServer
ESRI商用产品;跨平台支持;ArcIMS的企业级版本;支持ASP.NET、JAVA等的应用开发;体系架构可参阅ESRI产品说明书。
网站:http://www.esri.com
1.6 SuperMap GIS
北京超图地理信息技术有限公司商用平台(1+/-W/1 RMB);支持ASP.NET、JAVA等的应用开发;体系架构可参阅SuperMap GIS产品说明书。
网站:http://www.supermap.net/
1.7 MapGIS-IMS
中地软件推出的商用平台;支持ASP、VC++、VB、Delphi等开发环境;
网站:http://www.mapgis-sz.com.cn/
2 总体功能对比
通过功能参数对比分析。选择的技术参数综合了各大WebGIS产品服务特点,包含:
<!--[if !supportLists]-->1)<!--[endif]-->Metadata/Resource:元数据服务/资源服务
<!--[if !supportLists]-->2)<!--[endif]-->Feature:要素特性(MapTip功能表现、矢量流数据表现)
<!--[if !supportLists]-->3)<!--[endif]-->Image:地图绘制服务
<!--[if !supportLists]-->4)<!--[endif]-->Rendering:图层渲染服务
<!--[if !supportLists]-->5)<!--[endif]-->Editing:地图编辑服务
<!--[if !supportLists]-->6)<!--[endif]-->Routing:路径服务
<!--[if !supportLists]-->7)<!--[endif]-->Query:查询服务
<!--[if !supportLists]-->8)<!--[endif]-->Extract:裁减矢量数据并支持下载服务
<!--[if !supportLists]-->9)<!--[endif]-->WMS:支持并提供WMS服务
<!--[if !supportLists]-->10) <!--[endif]-->WFS:支持并提供WFS服务
<!--[if !supportLists]-->11) <!--[endif]-->DataInteroperability:支持多源数据访问,提供数据互操作服务
<!--[if !supportLists]-->12) <!--[endif]-->Tile:瓦片地图服务
| MapGuide | MapServer | MapXtreme | ArcIMS | ArcServer | SuperMap GIS | MapGIS-IMS |
Metadata/Resource | Y | Y | Y | Y | Y | Y | Y |
Feature | Y | N | ? | Y | Y | ? | ? |
Image | Y | Y | Y | Y | Y | Y | Y |
Rendering | Y | Y | Y | Y | Y |
|
|
Editing | ? | N | Y | * | Y | Y | Y |
Routing | ? | Y | Y | Y | Y | ? | ? |
Query | Y | Y | Y | Y | Y |
|
|
Extract | ? | N | Y | Y | Y | Y | Y |
WMS | Y | Y | Y | Y | Y |
|
|
WFS | Y | Y | Y | Y | Y |
|
|
DataInteroperability | Y | Y | N | * | * |
|
|
Tile | Y | * | N | N | N |
|
|
参数说明:
Y-- 满足
N-- 本身不能满足
? -- 不知
* -- 本身不满足,可通过现有技术集成满足
对比表中*项解释如下:
<!--[if !supportLists]-->1)<!--[endif]-->MapServer-----Tile:基于MapServer的Ka-Map应用框架可以实现;
<!--[if !supportLists]-->2)<!--[endif]-->MapXtreme-----Routing:通过MapInfo Routing J Server或开发扩展算法实
现;
<!--[if !supportLists]-->3)<!--[endif]-->ArcIMS-----Editing:通过ArcSDE Client API实现简单编辑;
<!--[if !supportLists]-->4)<!--[endif]-->ArcIMS-----Routing:通过NetEngine或开发扩展算法实现;
<!--[if !supportLists]-->5)<!--[endif]-->ArcIMS-----DI:通过DDE(FME的Web产品,ESRI采购SAFE的FME产品)实现;
<!--[if !supportLists]-->6)<!--[endif]-->ArcServer-----DI:通过ESRI的DI模块(FME)实现;
另外,ArcIMS的Feature Service和Image Service不能共用,ArcIMS以Feature Server发布的WebGIS可实现MapTip功能,但需JVM支持;MapGuide即可以Image绘制地图,又可实现MapTip功能
3 体系分层对比
1)数据访问通道
比较对象:FDO、FME、ArcSDE、MapInfo SpatialWare
支持访问数据格式的种类FME >= FDO > ArcSDE = SpatialWare;
作为通用的空间数据模型工具,FDO与FME相当,目前FDO支持的数据类型有SDF、SHP、GDAL、ODBC、MySQL、ArcSDE、WMS、WFS等,由于其开源性,可扩展Provider;FME支持几乎多数主流GIS产品数据格式的ETL(Extract、Transform、Load)。由于产品(项目)定位不同,FDO仅作为MapGuide的数据访问部件使用(目前还未挖掘其类似FME的潜力),FME的系列工具供其他GIS开发商集成(ESRI的DI模块就是FME)。
作为私有数据模型的访问通道,ArcSDE与MapInfo SpatialWare相当。
2)空间服务与造价
可参阅2的总体功能对比表。
从总体功能来说:ArcServer > MapGuide ? MapXtreme ? ArcIMS
ArcServer在空间分析功能上远远超过其他产品。
如果围绕空间数据的管理(采用企业级数据库管理空间数据)、采集更新、数据共享发布三大功能体系来实施GIS项目,那么可采用参考组合如下所示:
-----ArcServer
ArcServer + ArcSDE + 企业级数据库
-----ArcIMS
ArcIMS + ArcSDE + 企业级数据库 + (ArcEngine)
ArcIMS + ArcSDE可以构建功能相对有限的数据管理、数据采集应用系统;通过部署ArcEngine,可构建强大的类似ArcGIS Desktop的应用体系。
-----MapXtreme
MapXtreme for Windows + 企业级数据库
MapXtreme for Java + MapX + 企业级数据库
前面提到:MapXtreme for Windows无C/S、B/S架构之分,既为C/S嵌入式开发的GIS产品,又为WebGIS产品。
-----MapGuide
MapGuide + PostgreSQL(MySQL)+ QGIS
根据以上软件部署,实际软件造价高低依次:
ArcServer > ArcIMS > MapXtreme > MapGuide(基本为开源项目组合)
而以上部署存在的项目风险强弱:MapGuide > ArcServer ? ArcIMS ? MapXtreme
4 开发方式
4.1 基于MapServer的开发方式
MapServer是使用C语言编写的开源软件。
MapServer可以看作是两个独立模块的统称:MapServer CGI模块和MapScript模块。在服务器端可以使用任一模块,编写WebGIS程序。不过它们使用相同的配置文件MapFile。利用MapServer CGI模块需要做的工作:准备MapFile需要的资源,配置MapFile,设计用户交互界面(即html文件,可以使用脚本语言,如JavaScript增强交互性)。无法进行服务器端设计,因为MapServer CGI本身就是定制好的服务器端程序。当然可以通过修改源代码来使Map Server CGI具有需要的特性。利用MapScript模块就需要其他服务器端解决方案(指脚本语言),如PHP(以CGI模块安装在Web Server上)。MapScript模块作为PHP的扩展模块,放在PHP安装路径的extensions目录下。MapScript模块保留MapFile文件的层次对象结构,向PHP提供对象结构的API。那么,程序员在服务器端就可以使用PHP通过调用MapScript的API灵活的选择,修改MapFile文件;而不像MapServer CGI模块那样死板。同时结合PHP对众多数据库——非空间数据库,如Oracle, Sybase, MySQL等的支持,在WebGIS中整合空间数据和非空间数据变的容易。MapScript支持的语言:PHP,Perl,Python,Java,Tcl,C#等
4.2 基于MapGuide的开发方式
MapGuide的组成:
MapGuide技术由四个主要组件构成:MapGuide Server、MapGuide Studio、MapGuide Web Server Extensions和提供了两种浏览方式的MapGuide Viewer。
MapGuide技术既可以运行于Microsoft Windows,也可以运行于Linux操作系统之上。MapGuide Server可以作为一个服务运行,既可存取本地服务器上的数据,也可存取通过Feature Data Object(FDO)技术连接到服务器的数据。
Web Server Extensions所扮演的角色就像提供给Internet的“外壳”。这里有三种不同的网络扩展:
.NET、JavaTM、PHP 5.05+。
.NET接口主要提供Microsoft平台上运行的应用程序使用。可以使用Visual Studio .NET这样的工具,用C#或VB.NET编程开发,来访问FDO的应用程序接口(API),并从服务器上获取地图。
Java Web Extension能够使用Java Server Pages(JSP)来访问API和地图,无论何种操作系统(Linux或Windows)。
PHP被广泛地用作网络应用程序框架。与Java Web Extension类似,它能工作在Windows或Linux服务器上。
4.3 基于MapXtreme的开发方式
在这里主要介绍MapXtreme2004的开发方式。
Web服务器支持CGI的Web Server,在客户端不需要插件,网络传输的图形格式为JPEG/GIF(栅格图),动态生成地图。MapXtreme2004基于微软的Dot Net架构开发的产品, MapXtreme2004产品使得开发人员可以享用微软的.NET技术架构带来的好处,如跨语言性,创建Web服务,部署分布式应用等先进的技术. MapXtreme 2004为Web部署提供了地图应用模板、多种地图控制工具、应用示例和拖拽开发功能,方便了Web应用的快速部署。Web应用和桌面应用提供了同一个核心。
4.4 基于ArcIMS的开发方式
ArcIMS是ArcIMS公司的WEBGIS的开发工具,支持多种模式开发,其客户端需要自动下载Java Applet或者ActiveX控件,网络传输的图形格式为JPEG/GIF(栅格图)、png等,也可传递矢量数据流。
在ArcIMS中Viewers 决定了ArcIMS站点的功能和外观,决定了提供哪些空间、属性查询工具和显示工具,ArcIMS提供了三种Viewer选择。HTML Viewer同时只能显示一个Image MapService。Image MapService将结果以JPG,GIF或PNG格式发到客户端——与Feature MapService数据流的发送方式不同。ArcIMS提供两种Java Viewers——Java Standard Viewer和Java Custom Viewer。Java Viewer通过Java applets提供地图服务和信息查询。Java applet不同于servlet,它运行在客户端,不是服务器端,并且必须下载到客户端。因此,Java客户端比其他的客户端更胖。通过Java viewer浏览网站,用户必须首先下载两个plug-ins。Java Standard Viewer无法定制工具或布局。而Java Custom Viewer可以通过HTML和JavaScript调用applets进行定制。所有的Java Viewers都可以支持Image 和Feature MapServices,并且支持同时使用多个MapServices。Feature MapService使用数据流,因此可以支持客户端的用户交互和分析功能。选用Image MapServices创建地图服务器,使用Java Custom Viewer模式开发的地图显示速度比较快。
另ArcIMS支持.net开发,不提供可视化控件。可以以写语句与服务器单条信息交互形式开发,也可以依赖于已有的webservice进行开发。
4.5 基于ArcServer的开发方式
资料暂缺!
4.6 基于SuperMap GIS的开发方式
SuperMap GIS系列软件是北京超图公司开发的系列软件,包括SuperMap SDK +5(支持海量空间数据管理的大型空间数据库引擎)、SuperMap Objects 5(适合大型专业应用系统建设的全组件式GIS开发平台)、SuperMap IS .NET 5(用于建立大型网络GIS服务的Internet GIS开发平台)、eSuperMap 5(适用于移动终端设备的嵌入式GIS开发平台)、SuperMap Deskpro 5(用于地理空间数据处理与分析建模的大型桌面GIS软件)、SuperMap Express 5(用于地理空间数据编辑与处理的桌面GIS软件)、SuperMap Viewer 5(用于浏览地理空间数据的工具软件)。在这里主要介绍的是基于.NET 2.0平台的SuperMap IS .NET 5.2软件。
SuperMap IS .NET 5有三种开发方式,分别为:
<!--[if !supportLists]-->1、<!--[endif]-->WebControl;
<!--[if !supportLists]-->2、<!--[endif]-->远程类库开发;
<!--[if !supportLists]-->3、<!--[endif]-->WebService开发;
4.7 基于MapGIS-IMS的开发方式
Map Gis-IMS是中地公司推出的万维网地理信息系统(World Wide Web Geographical Information System):MAPGIS-IMS(Internet map server)是建立在Internet网上的具有三级体系结构的网络GIS系统。它的主要任务是建立WEBGIS服务器,在网上发布地理信息,让人们在网上享受更多相关的地理空间信息。
IMS提供了包括显示、工程管理、工作区管理、分析功能等一系列COM模块和JAVA小程序,并利用Active Server Pages(ASP)技术,可建立功能丰富的具体GIS应用。通过诸如JavaScript 和VBScript的编程语言用户可以定制WEB页,还允许用户通过FrontPage, Visual InterDev等产品建立客户化的用户界面,这些脚本程序可以在浏览器端执行,也可以通过标准应用服务器(如ASP、C#)在服务器端执行。中地公司发布的最新Gis软件
开发者可以通过 MAPGIS-IMS软件开发包开发特定的应用,开发者可以访问核心的软件组件和界面。
5 实现的基本算法
1、二叉树
2、四叉树
3、八叉树
4、四叉树空间索引算法
5、K-D树