收稿日期:2007-01-09
基金项目:四川省技术创新基金(2005PT006);西南交通大学科技发展基金(2005A11)
作者简介:黄文培(1967-),男,陕西西安人,博士,副教授,研究方向为分布式人工智能、网络信息安全理论及应用。
WebGIS 开发技术及SpringMVC 安防系统构建
黄文培1,赵 峰2
(1.西南交通大学软件学院,四川成都610031;2.成都佳发安泰科技有限公司,四川成都610000)
摘 要:分析了GIS 开发模式、WebGIS 技术优势,探讨了MapXtreme Java 的基本组成和工作原理。在此基础上,深入研究了基于MapXtreme Java 的四种WebGIS 开发技术。以城市安防报警监控WebGIS 系统为背景,提出了基于SpringMVC 框架的WebGIS 具体实现。该技术架构可以广泛应用于各类企业级WebGIS 系统构建。关键词:WebGIS ;MapXtreme ;Spring 框架;安防系统
中图分类号:TP311;TP277    文献标识码:A        文章编号:1673-629X (2007)10-0245-05
WebGIS Development T echnology and Construction of Safeguard
System Applying SpringMVC
HUAN G Wen 2pei 1,ZHAO Feng 2
(1.S oftware Faculty ,S outhwest Jiaotong University ,Chengdu 610031,China ;2.Chengdu Jiafa Network Science &Technology Co.,Ltd.,Chengdu 610000,China )
Abstract :GIS development model and technology advantage of WebGIS are analyzed briefly.The basic composition and principles of MapXtreme Java are discussed.And then ,the four class methods to develop WebGIS is studied deeply based on MapXtreme Java.Finally ,the WebGIS implementation of software architecture applying SpringMVC framework is proposed based on WebGIS construction of city safeguard and alarming system.Research shows that this architecture can be used to develop many kinds of enterprise WebGIS system.K ey w ords :WebGIS ;MapXtreme ;Spring framework ;safeguard system
0 引 言
传统的企业级应用一般不具备空间分析功能。随着企业内部信息量的增加,及信息的多元化和复杂化,很多信息(例如企业自身在空间位置上的分布特性及客户的住址、等)采用传统的报表和文档方
式已无法清晰地展现给用户。将地理信息系统(GIS )引入企业级应用,以地图化的方式管理企业资源,制定可靠的业务决策,为客户提供更优质的服务,已成为目前企业级应用的一个热点[1,2]。以安防信息系统构建为背景,研究了基于MapXtreme 的WebGIS 开发技术,提出了基于SpringMVC 框架的WebGIS 具体实现,其先进、成熟的技术架构对应急救援、物流跟踪、危险货物运输管理等领域企业级WebGIS 系统的构建均具有参
考价值。
1 GIS 开发模式
GIS 是一种为了获取、存储、检索、分析和显示空
间定位数据而建立的计算机化数据库管理系统。目前spring framework网络系统参数
GIS 应用开发主要有三种方式[3]:
1)独立开发。不依赖任何GIS 开发工具,从空间
数据采集、编辑到数据处理、显示,所有算法由开发者独立设计与实现。该开发模式仅限于特殊领域的关键应用。
2)简单二次开发。完全借助GIS 工具软件提供的
开发语言(例如Map Info Professional 内嵌的MapBasic 语言)进行简单应用系统开发。这种方式仅限于地图功能要求不高的场合。
3)集成二次开发。利用GIS 开发商提供的OCX
控件(例如MapX ),通过编程直接将地理信息系统的各种功能嵌入客户应用程序。传统GIS 应用系统大多采用这种开发模式。随着Internet/Intranet 的迅速普及,在Web 上实现GIS 应用得到了人们的广泛关注。
第17卷 第10期2007年10月         计算机技术与发展COMPU TER TECHNOLO GY AND DEV ELOPMEN T
        Vol.17 No.10Oct. 2007
同传统的GIS 应用相比,WebGIS 具有:
(1)支持更广范围的访问。WebGIS 允许通过In 2ternet 远程访问GIS 系统。
(2)平台的独立性和可集成性。WebGIS 允许用
户通过Web 浏览器透明访问远端GIS 数据,用户无需关心客户机/GIS 服务器的软硬件环境。
(3)更简便的操作与更低的系统成本。WebGIS
允许多个用户共享一套GIS 系统,有效地节约了成本开支。
(4)更灵活的体系结构与更高的效率。通过综合
运用胖客户端、中型客户端和瘦客户端等多种开发模式,WebGIS 能充分利用服务器集和网络资源进行更合理的资源分配,提高系统效率。
2 MapX treme Java 的基本组成和原理
MapXtreme 是Mapinfo 公司开发的可运行在In 2ternet/Intranet 上的100%纯Java
地图服务器[4]。针
对不同平台,MapXtreme 有3种不同的版本:MapX 2
treme for Windows ,MapXtreme for Java 及MapXtreme 2004。本项目选择在J2EE 平台下基于MapXtreme for Java 开发地图服务。MapXtreme for Java (MX J )是一个
符合SUN J2EE 规范、满足跨平台要求的WebGIS 开发工具。
2.1 MapX treme Java 的基本组成
图1 MapXtreme Java 的构成
如图1所示,MX J 采用servlet 模型,它由MapX 2
tremeServlet 、MapJ 对象、Renderers 、Data Providers 四个
组件构成。这里,MapXtremeServlet 是MX J 的核心,它以servlet 方式运行在Web 服务器端,主要负责处理客户端浏览器的三类请求,包括栅格地图(GIF ,J PEG ,
PN G 或WBMP )请求、矢量地图请求及元数据(例如tab 表里的属性信息)查询请求。作为MapXtreme 的
客户机,MapJ 对象负责存储地图状态,同时转发客户端地图操作(放大、缩小、漫游等)请求,获得地图数据
和图像。渲染器(Renderers )用于显示地图数据,
MapXtreme 支持五种渲染器。数据提供方是介于MapJ 对象和地图数据之间的关键链接。在MapX 2treme 中,每个图层(Layer )对象都有自己的内部数据
提供方。数据提供方负责访问数据源(Map Info 表、关系数据库、栅格文件等)并返回向量数据。
2.2 基于MapX treme Java 的W ebGIS 工作原理
如图2所示,当用户在客户端进行相应的地图操作后,客户端浏览器可以通过内嵌MapJ 对象的Applet
(胖客户机模式),也可以通过Web 服务器端包含MapJ 对象的用户自定义Servlet (
瘦客户机模式)发送
地图服务请求。地图服务请求发送后,MapJ 对象更新自身状态,并与MapXtremeServlet 通信请求重新绘制地图。通过MapXtreme 多线程DataProvider 服务器,
MapXtremeServlet 可以获得地图绘制所需要的数据,
而图像请求由多线程地图渲染器服务器处理。最后,经过渲染的地图以栅格图或矢量图(SV G )的形式被嵌入网页(HTML ,J SP )并返回客户端。这里,根据MapJ 对象的驻留方式以及客户端、服务器端应用开发技术的不同,可以将基于MapXtreme Java 的WebGIS 开发分为三种模式:胖客户机-瘦服务器、中型客户机以及瘦客户机-胖服务器模式。
图2 基于MapXtreme Java 的WebGIS 数据流程
3 基于MapX treme Java 的WebGIS 开发
为了满足不同网络环境下各类WebGIS 应用开发的需求,MapXtreme Java 4.7提供了多个组件,支持不
同模式应用系统的开发。包括:
1)有经验程序员使用的MapJ API 编程接口及相
应的Java 类库(MapJ API and Java class library );
2)WebGIS 开发初学者、快速构建者使用的可视
化编程接口(MapXtreme JavaBeans );
3)非编程人员使用的MapXtreme Java 管理器/Web 应用快速构建器(MapXtreme Java Manager and Web Application Builder );
4)支持Struct ,Tapestry 等框架的自定义的J SP 标
签库(J SP custom tag library )。
642・                     计算机技术与发展                  第17卷
3.1 胖客户机-瘦服务器开发
在胖客户机开发中,MapJ对象和业务逻辑均封装在Java Applet小程序中。通过下载和运行网页(HTML,J SP)中内嵌的Applet,浏览器能够完成业务逻辑和地图服务在客户端的部署。胖客户机编程主要集中在客户端,服务器端只负责少量数据库操作。程序员可以在Applet中通过调用MapXtreme JavaBeans 实现地图功能,也可以通过调用VisualMapJ对象的get MapJ方法获得底层MapJ对象,基于MapJ API实现更复杂的地图功能。MapXtreme JavaBeans编程接口为程序员提供了7个JavaBeans。在MyEclipse开发环境下编写、运行一个地图服务的Applet大致需要完成这样6个步骤:
1)新建MyEclipse Web工程,通过继承JApple创建一个Java Applet小程序。将MapXtreme JavaBean类库(com.mapinfo.beans.3)导入工程。
2)指定地图定义文件的位置,与MapJ对象通信的地图绘制引擎的URL,初始化VisualMapJ对象及工具栏。
3)在Applet的init()方法中创建应用程序的界面,并将VisualMapJ、工具栏对象添加到同一面板中。随后创建VisualMapJ的地图渲染器。
4)在start方法中装载地图文件并绘制地图。
5)编写加载Applet的HTML文件,在Applet标签中指定需要下载到客户端的Java Applet类文件和MapXtreme JavaBean类库。
6)启动Tomcat服务器、地图服务器。通过打开HTML文件加载执行Applet小程序。
由于本地访问的安全性限制,Applet需要从服务器远程加载地图文件。MapXtreme Java4.7自带的地图定义文件是供本地访问的,因此运行该程序前,需要使用MapXtreme Java Manager客户端打开地图定义文件,利用图层控制按钮添加“远程图层”(由远程MapXtremeServlet访问数据)。最后将添加了远程图层的地图文件保存在Applet类文件同一目录下。胖客户机编程可参考MapXtreme Java4.7例子程序Sim2 pl
eMap.java。
3.2 瘦客户机-胖服务器开发
在瘦客户机开发中,客户端无需编程,MapJ对象、地图绘制引擎及客户业务逻辑均部署在服务器端。通过服务器端自定义的Servlet,程序员可以调用MapJ API,在服务器端完成地图的生成和渲染。这里,服务器端Servlet负责接收客户端发送的地图服务请求,并以HTTP响应的方式向客户端传送内嵌地图栅格图像的网页。瘦客户端开发的核心工作是利用MapJ API编写地图服务Servlet。MyEclipse开发环境下编写、运行一个显示地图的Servlet需要完成4个步骤:
1)新建一个MyEclipse Web工程,在工程中创建一个地图服务Servlet,同时将MapXtreme相关类库导入\WebRoot\WEB-INF\lib目录下;
2)在Servlet中声明地图定义文件存放路径及地图绘制引擎的URL地址;
3)在Servlet的do G et方法中创建MapJ对象、图像请求器和图像渲染器,定义地图尺寸并完成地图加载等相关操作;
4)编辑l文件并将MyEclipse工程部署到服务器端。
对于一个实际的项目,如果利用Servlet生成客户端的全部页面,其编程工作量很大,调试困难。因此,瘦客户端开发最好基于Structs、Tapestry等框架编写视图层,同时使用IFRAME框架嵌入地图显示页面。瘦客户机编程可参考MapXtreme Java4.7例子程序HTML EmbeddedMapServlet.java。
3.3 中型客户机开发
中型客户机是介于胖客户机和瘦客户机之间的备选方案。在这种模式下,客户端运行一个轻量级的Applet,用于构建客户端操作界面,接受用户输入,发送地图服务请求,同时显示服务器端返回的地图数据。服务器端运行用户自定义地图服务Servlet,用于处理客户端地图操作请求,返回地图栅格图像。同胖客户机不同,中型客户机将MapJ对象部署在服务器端,通过服务器端Servlet调用MapJ API,中型客户端能够实现地图的远程生成和渲染。
中型客户机编程包括客户端Applet、服务器端Servlet开发及Applet与Servlet的通信。这里,Applet 编程可以参考MapXtreme Java4.7例子程序Mapper2 ClientApplet.java,Servlet编程类似瘦客户端,可以参考MapXtreme Java4.7例子程序MapperServlet.java。3.4 基于MapX treme自定义JSP标签的开发
为了帮助J SP程序员快速开发地图功能,MapX2 treme Java还提供了一套自定义J SP标签库。本质上,基于MapXtreme自定义J SP标签的开发属于瘦客户机开发模式。自定义J SP标签使得J SP程序员不用关注复杂的地图操作,从而将精力放在网页设计上。此外,J SP标签库提供了一种与Spring,Structs等流
行MVC框架无缝集成的更简便方法。
总体来看,基于Applet的胖客户机开发可以快速构造出类似C/S模式的功能强大的客户端,因此这种模式比较适合带宽较高、安全性较好的内网部署。与胖客户机相反,瘦客户机特别适合部署在带宽较小的
7
4
2
第10期          黄文培等:WebGIS开发技术及SpringMVC安防系统构建
Internet网上。中型客户机介于两者之间,可用于带宽较高、客户端功能要求较强的Internet网。
4 基于MapX treme Java安防监控GIS开发4.1 系统功能设计
城市安防报警监控GIS系统主要由系统布防、音/
视频数据管理、报警信息处理、远程控制等8个模块组成[5]。
(1)系统布防。输入布防点的名称,监控服务器的编号和通道号,在电子地图上选择添加位置后,系统将布防点的信息自动添加到地图服务器和数据库服务器中,并完成地图渲染。
(2)音/视频数据管理。选择并打开布防点,可以播放布防点存储的历史监控视频图像,察看并存储实时监控图像。
(3)报警信息处理。轮询报警信息中心发布的报警信息,收到报警信息后立即在电子地图上渲染报警点。根据用户设定弹出报警信息窗口,进入报警监控状态。
(4)远程监控与控制。选择并打开监控点的远程监视与控制窗口,可以实时观看远程视频监控图像,实施云台控制。
(5)报警信息查询与统计。输入查询条件(起始时间、区域或布防点),从报警信息数据库中查询所有符合条件的报警信息。
(6)基础数据管理。提供电子地图的编辑、修改和删除功能。
(7)用户管理。提供账号的创建、删除和管理功能。
(8)远程浏览与查询。为远程、临时用户提供基于Web的地图浏览和查询功能,包括:地图放大、缩小和漫游,布防点的搜索与查询,基于Web的远程音视频监控等。
4.2 系统架构设计
如图3所示,基于SpringMVC的城市安防报警监控GIS系统由表示层(客户端浏览器)、业务逻辑层(Web服务器、地图服务器)和数据层(业务逻辑数据库、地图数据库)三个部分组成。客户端浏览器发送的所有请求由Spring的Dispatcher Servlet处理。其中,页面请求由网页控制器处理并返回新的页面,地图放大、缩小、
平移、查等操作请求由地图操作控制器处理,并返回栅格地图。远程监控、报警信息查询与统计、报警信息中心等由业务逻辑控制器实现。为了整合不同部门的地理信息数据资源,系统创建了一个中心数据库,存储不同地理位置电子地图服务器的IP地址、端口号及电子地图名称,同时通过JDBC访问分布存储的电子地图。最后,MapXtreme为GIS数据管理提供了二种策略:文件策略和空间数据库策略。为了支持模糊地理信息查,系统采用了空间数据库策略,使用EasyLoader将所有地图文件(TAB数据)上载到Oracle数据库中,为此系统需要Oracle Spatial支持。
图3 基于SpringMVC的WebGIS系统结构
4.3 基于SpringMVC框架的W ebGIS实现
目前WebGIS开发的一个新趋势是基于Ajax, Tapestry或Spring框架,构造功能强大的瘦客户机模式的WebGIS系统[6]。鉴于城市安防报警监控GIS系统需要整合不同地理位置的音视频数据库、地图数据库,其业务逻辑较为复杂,选择了基于SpringMVC的WebGIS实现方案。这里开发一个基于SpringMVC的WebGIS至少需要完成如下步骤。
(1)创建MyEclipse Web工程,添加Spring库支持,并将MapXtreme JavaBean类库导入\WebRoot\ WEB-INF\lib目录。
(2)编辑l配置文件,将所有3.htm请求交给Spring的DispatcherServlet处理。
<servlet>
  <servlet-name>SpringMVCGIS</servlet-name>
  <servlet-class>org.springframework.web.servlet.Dispatch2 erServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>SpringMVCGIS</servlet-name>
  <url-pattern>3.ht m</url-pattern>
</servlet-mapping>
(3)创建DispatcherServlet配置文件l,定义WebGIS使用的Spring控制器及控制器映射(urlMapping)。这里,所有对安防报警监控GIS主页的请求由控制器springappController 处理,所有地图操作请求由mapController处理。
<beans>
<bean id=“springappController”class=“SpringappController”/> <bean id=“mapController”class=“MapController”/>
8
4
2
・                     计算机技术与发展                  第17卷
<bean id=“urlMapping”
class=“org.springframework.web.servlet.handler.SimpleUrlHan2 dlerMapping”>
<property name=“mappings”><props>
<prop key=“/SpringMapindex.ht m”>springappController</ prop>
<prop key=“/map.ht m”>mapController</prop>
</props></property>
</bean></beans>
(4)编辑安防报警监控GIS主页(.jsp文件)、主页控制器及地图操作控制器。这里,主页控制器(SpringappController.java)仅仅用于返回一个主页。可以简单地定义如下:
public class SpringappController implements Controller{
  public ModelAndView handleRequest(HttpServlet Request arg0,
  HttpServlet Response arg1)throws Servlet Exception,IOExcep2 tion
 {
   return new ModelAndView(“SpringMapindex.jsp”);}}安防报警监控GIS主页主要用于显示电子地图及其相关操作按钮。这里,电子地图可以用框架(IFRAME),也可以使用图片的方式嵌入主页,例如:
<img name=“myMap”src=“”width=“770”height=“495”onClick=“doClickMap();”>function doClickMap()
{var url=“localhost:8080/SpringMVCGIS/map.ht m”;//地图服务请求URL
  Map.src=url;}
当用户在电子地图上点击,JavaScript函数doClickMap首先被执行,通过修改src,将图片加载请求转发给地图请求控制器(MapController.java)。地图请求控制器能够从src的URL参数中分析用户发送的控制命令,进而作相应的地图变换,生成并返回一张栅格地图。
5 结 论
城市安防报警监控GIS是在整合公安和社会报警监控资源的基础上,结合WebGIS,综合运用实时监控、远程访问与控制、分布式数据存储、远程报警传输、多级安全管理等多种技术构建的一种城市安防信息网络。以城市安防报警监控WebGIS开发为背景,提出了基于SpringMVC开发瘦客户端WebGIS的具体实现。实践表明,该技术方案具有软件架构清晰、系统扩展性强、开发周期短、部署简单等诸多优点,因此可以广泛应用于不同领域WebGIS系统的开发。
参考文献:
[1] 杨崇俊,王宇翔,王兴玲,等.万维网地理信息系统发展及
前景[J].中国图象图形学报,2001,6(9):886-894.
[2] 丁振芳,郭学俊,王莉娜.基于MapXtreme的WebGIS应用
研究[J].微机发展,2005,15(6):155-157.
[3] 张成才,孙喜梅,朱陶业.几种流行网络地理信息系统的模
式比较研究[J].计算机工程与应用,2002,38(5):77-79. [4] Maplnfo.MapXtreme[EB/OL].2000-05.www.
mapinfo/mapxtreme.
[5] 周 宁,高 琪,李毓桂,等.大型安防系统的一些关键问
题及其处理技术[J].信息与控制,1999,28(2):152-156. [6] 符培炯,杜忠军.Spring在实现MVC构架中的应用[J].计
算机技术与发展,2006,16(6):236-238.
(上接第244页)
DES算法的入口参数有三个:K ey,Data,Mode。其中K ey为8个字节共64位,是DES算法的工作密钥;Da2
ta也为8个字节64位,是要被加密或被解密的数据; Mode为DES的工作方式,有两种:加密或解密。Mode 为加密,则用K ey对数据Data进行加密,生成Data的密码形式(64位)作为DES的输出结果;如Mode为解密,则用K ey去把密码形式的数据Data解密,还原为Data的明码形式(64位)作为DES的输出结果。具体不做详述参见参考文献[1]。
7 结 论
三方通信技术应用于电子政务系统中,可以较好地解决电子政务系统中身份认证以及数据加密传输问题,保障了政务的安全传送和处理,为各级政府部门及时掌握和处理信息提供一个先进、可靠、实用、安全保密的系统,达到借助电子政务系统的建设,提高政府工作效率、政府工作透明化,充分做到执政为民的目的。
参考文献:
[1] 蒋建春,扬 凡,文伟平,等.计算机网络信息安全理论与
实践教程[M].西安:西安电子科技大学出版社,2005. [2] 刘邦凡.电子政务建设与管理[M].北京:北京大学出版
社,2005.
[3] 黄建忠,谢长生,曹 强,等.基于三方通信构架的可信任
网络存储安全系统的研究[J].华中科技大学学报:自然科学版,2005(12):158-160.
[4] Schneier B.应用密码学协议、算法与C源程序[M].吴世
忠,祝世雄,张文政译.北京:机械工业出版社,2000.
[5] 欧洲银行标准委员会.加密算法使用与密钥管理指南[EB/
OL].2001-09./.
[6] 苏德矿,张继昌.概率论与数理统计[M].北京:高等教育
出版社,2006.
9
4
2
第10期          黄文培等:WebGIS开发技术及SpringMVC安防系统构建

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。