MapGuide是Autodesk公司推出的在网络上发布空间数据的新一代Web GIS平台,为了促进开源Web GIS的发展,Autodesk公司推出了开源版的MapGuide,同时还有商业版MapGuide,开源版本与商业版本相比,软件构架与功能相同,只是开源版本仅支持的数据格式较少,目前支持shp、sdf、ArcSDE、MySQL、ODBC、RASTER、WMSWFS,要支持其他格式的数据或者数据库则需要购买MapGuide 商业版或者由用户自行开发数据处理组件。
MapGuide具有如下特点:
●跨平台支持。新一代的MapGuide支持Window和Linux操作系统。
●支持多种浏览器。MapGuide提供两种Viewer, DWF Viewer和AJAX Viewer。DWF Viewer使用ActiveX控件,只支持IE浏览器。AJAX Viewer支持Fire fox, Opera浏览器。
●支持多种数据格式。MapGuide使用FDO(Feature Data Object)存取数据,MapGuide提供多种数据的FDO,如sdf、shp、Oracle、SqlServer、WFS、WMS等多种数据源。
●提供内容丰富的API,简化二次开发。MapGuide 提供.NET、PHP、JSP三种语言的API,可以对地图数据按照要求进行相应修改,显示,用户可以根据不同条件选用相应的开发语言。
●集成多种GIS功能。MapGuide API可以进行属性查询和空间查询,MapGuide API包含一系列坐标系的函数,可以 方便地完成坐标转换等功能。
MapGuide采用典型的网络三层结构,支持Windows和Linux操作系统,支持多种浏览器,用户可选择安装DWF Viewer Active控件或使用支持Javascript的浏览器进行浏览。 MapGuide由以下四部分组成:
● MapGuide Server
用于与空间数据直接交互,并处理MapGuide Web Extension发出的请求,MapGuide Server支持Windows和Linux平台。
● MapGuide Web Extension
也称为Web Server,是网络结构的中间层,用于转发IIS (Internet Information Service) 的请求,并向MapGuide服务器发出相应的请求。MapGuide Web Extension支持IIS和Apache (Windows平台) 或Apache (Windows 和Linux平台),它提供一系列完整的API,可以用这些API进行定制开发。MapGuide Web Extension支持三种语言的开发,分别是PHP、ASP和JSP。
● MapGuide Studio
是一个用于地图管理的工具,为了用户方便, Studio内部集成了浏览器,用户可以用Studio进行所见即所得的便捷管理,MapGuide Studio只能安装在Windows平台。
● MapGuide Viewer
用于在浏览器中对地图进行浏览,编辑等,它提供两种Viewer, DWF Viewer和AJAX Viewer,由于DWF Viewer是Active控件,所以它只支持Microsoft IE(Internet Explorer),AJAX Viewer支持Fire fox, Opera (Mac) 等浏览器。
图3描述了MapGuide的框架结构,Studio和Viewer是MapGuide的客户端程序,从这些客户端发出请求,通过HTTP协议发送到Web Externsion, Web Externsion的Agent组件对请求进行处理并发送相应请求到MapGuide Server。当服务器 (Server) 接收到一个请求时,它按照请求的内容,存取或者修改仓库(Repository)中的数据,并将相应的结果返回给Web Extension,然后由Web Extension返回给客户端Viewer。
MapGuide Studio和Viewer使用DWF Viewer或AJAX Viewer,Viewer完成对地图进行显示、修改、分析等功能。
<!--[if !vml]-->
<!--[endif]-->
图3 MapGuide框架结构
MapGuide API包含两类,Web Tier API和Viewer API。Web Tier API是一系列服务端API,功能强大,基本上覆盖了GIS系统需要的所有函数。Viewer API是客户端API,在Web页面脚本中执行,与Web Tier API相比,功能简单,完成一些客户端常用的功能,如放大缩小、平移、选中、打印,简单数字化等功能,进一步的复杂功能需要调用Web Tier API,进行服务端和客户端交互开发。
Web Tier API是服务端API,在.NET、PHP、JSP中被调用,Web Tier API包含如下模块的类:
● 资源服务: 用于操纵资源和数据库
● 坐标系统:用于坐标系统转换
● 集合:用于存放对象的集合,比如查询返回的几何对象集合
● 绘制服务:在底层调用函数绘制DWF数据
● <!--[endif]-->几何对象:几何对象API支持二维对象和2.5维对象,并包含对二维对象的分析等函数
● 通用类:提供一些通用函数,如ByteReader、MimeType、Warnings、时间和颜色等。
● 站点服务:用于配置用户、用户组和用户进程等
● Exception:包含一些与MapGuide相关的例外
● 渲染服务:将一幅地图渲染成BMP图像
●服务:支持在AJAX VIEWER中平滑平移和放大缩小等功能
●地图服务:提供地图和图层的控制函数
Viewer API是客户端API,在Web页面的脚本中执行,所以Viwer API是一类用来控制Viewer的JavaScript函数,由于MapGuide提供对两类浏览器(IE和FireFox)的支持,Viewer API实际上是这两类浏览器的统一接口,这一类函数提供对地图的一些通用功能。如果用户只需要支持IE,可调用DWF Viewer的Javascript函数,与统一接口相比,这些函数提供了更强的功能。很多函数会产生服务端的请求,如刷新数据或者通知服务器Viewer状态变化,这些请求自动产生,无须人工干预。
应用MapGuide API可以方便地进行二次开发。可以根据需求进行相应的二次开发,studio提供了Commands接口,支持Javascript函数调用和页面调用,用户可以应用这些接口调用Viewer API或者Web Tier API进行简单开发,定制一些简单的功能。另外,用户可直接应用Web Tier API和Veiwer API开发独立的Web程序,根据需求开发完成较为复杂的功能。
本论文即在.NET环境下服务端调用Web Tier API开发一个独立的Web程序。