IE浏览器是一个图形用户界面,采用Java Applet与JavaScript为用户提供地图的基本操作,实现空间数据显示、查询统计分析等功能。
Web服务器处理客户端的请求并把对空间数据的处理命令传递给GIS应用服务器,回传HTML文件及Java服务器对象组件;加载空间数据等。客户端Java Applet通过服务器端Servlet的URL重新构造URL类,向服务器端的Servlet发出请求,Servlet调用JDBC驱动器,JDBC驱动器负责连接、操作GIS数据库并在客户端的浏览器中显示。Web服务器层也可直接利用标准SQL语言访问数据库服务器以获取较复杂的属性数据。
GIS应用服务器处理来自Web服务器空间数据操作命令,进行地图生成和操作等,同时将地图操作结果以图片形式输出到Web服务器的特定目录之下。
GIS数据库服务器由SpatialWare负责管理。SpatialWare是MapInfo公司最新推出的空间数据库管理软件,它的主要作用是把复杂的MapInfo地图对象存入大型数据库中,并为其建立空间数据索引,从而在数据库服务器上实现对属性数据和空间图形对象数据的统一管理。
3 关键技术的研究与开发
基于MapXtreme的WebGIS应用方案具有平台独立性和平衡高效的计算负载等特点,使用Java技术在服务器端开发Java Servlet程序。MapXtreme作为一个Servlet与Web服务器相连接,通过地图引擎来向应用程序提供可供程序脚本语言使用的地图对象、属性和方法。开发中涉及的关键技术有以下几项。
3.1 客户端与服务器端通信的实现
客户端和服务器端之间的通信是通过HTTP协议来完成的。所有HTTP通信都使用8位字符,以确保二进制编码文件的安全传输。系统采用了一种称之为隧道技术的处理方式。隧道可以被看作一条这样的通道:它使用己存在的通信通道HTTP,并在其中创建一个子协议来执行特殊任务。这里要创建的子协议将包含所有必要的信息,这些信息被用来创建一个Web服务器上的对象,调用这个对象中的方法,并将结果返回给客户端。使用HTTP隧道的优点就是可以将精力集中在子协议上面,而不用关注如何在客户端和服务器之间传送数据包。
在客户端和服务器端之间传送一条请求要经过很多工序。出于性能上考虑,应该在每次请求/响应中传输尽可能多的信息。客户端和服务器端之间的1次完整通信具体包含以下的步骤:
(1) 打开HTTP连接:HTTP是一种无状态的协议,即每一个请求都被视为一个独立的实体。因此,对于每一个请求都要建立一个新连接。
(2)初始化方法请求:用来描述调用什么方法和方法所需要的参数。
(3)设置HTTP请求头:包含发送的数据类型和长度。
(4)发送请求:将二进制数据流发送到服务器。
(5)读取请求:目标Servlet程序将被调用,并接收HTTP请求数据。Servlet程序就是调用所有必要的参数选择相应的方法。如果这是客户端的第一次请求,一个服务器对象的新的实例就会被创建。
(6)调用方法:方法将会被服务器端的对象所调用。
(7)初始化方法响应:如果调用的方法抛出一个异常,客户将接收到出错信息;否则,返回的类型将会被发送。
(8) 设置HTTP响应头:与设置HTTP请求头一样,在响应头中要设置待发送数据的类型和长度。
(9) 发送响应:二进制数据流将从Web服务器发送回给客户端。
(10) 关闭连接。
3.2 GIS数据库结构的设计
数据库的合理构建是进行监控管理的前提。系统采用SQL Server作为GIS数据库,其中包括空间数据库和属性数据库2部分。空间数据库采用非关系数据结构,将地图信息和直放站的地理信息以MapInfo的自定义格式保存于若干文件中;属性数据库采用关系数据结构,将与地理信息无关的直放站参数信息和操作信息存储在若干属性表中。空间数据库与属性数据库采用间接关联的方式,二者通过一定的索引机制联系起来,如图5所示。