基于ArcGISServer的实时水情发布系统开发

2011-09-27 10:43左进府洪金益黄丙湖
地理空间信息 2011年1期
关键词:水情测站实例

左进府,洪金益,黄丙湖

(1.中南大学地学与环境工程学院,湖南 长沙 410083;2.中国石油大学 (华东)地球资源与信息学院,山东青岛 266555)

基于ArcGISServer的实时水情发布系统开发

左进府1,洪金益1,黄丙湖2

(1.中南大学地学与环境工程学院,湖南 长沙 410083;2.中国石油大学 (华东)地球资源与信息学院,山东青岛 266555)

ArcGISServer是一个为构建空间相关的企业级应用的平台,基于ArcGISServer开发Web应用和服务有着广阔的应用前景。主要介绍了ArcGISServer的体系结构及其配置和管理,并以实时水情发布子系统为应用实例,介绍了如何将AO API的编程任务转化到ADF层从而提升系统性能的设计和实现方法。

ArcGISServer;Web应用;ADF;AO

ArcGIS Server是一个用于构建集中管理、支持多用户的企业级 GIS应用平台[1]。相较于其他服务器技术,它不仅实现了GIS资源共享,而且提供资源内含的GIS功能的访问。开发者基于ArcGISServer可以构建Web应用、Web服务以及其他运行在标准的.NET和J2EEWeb服务器上的企业级应用。基于ArcGISServer开发的系统和应用程序具有开发周期短,开发难度小,稳定可靠等优点,并与传统桌面系统和Web应用无缝集成,使得其于ArcGIS9.0系列产品中一经发布就成为人们研究的对象。针对基于ArcGISServer开发的Web应用相关问题,结合济南市防汛预警决策支持系统开发实践,关于如何通过互联网络发布实时水情信息提出了一种快速可行的解决方案。

1 ArcGISServer体系架构分析

1.1 ArcGISServer概述

ArcGISServer与ArcGIS系列其他软件一样后台基于 ArcObjects(以下简称AO)搭建而成,能在企业和Web计算框架中建立以服务器为中心、集中式管理并以网络为核心支持多用户的GIS应用,拥有制图、查询分析和地理编码的全部功能。ArcGIS最大的贡献在于将高级GIS功能引入到网络环境,在此之前高级的GIS功能仅能在桌面端提供。ArcGIS Server包含一个GIS服务器实例和一个Web应用开发框架(ADF)。

1.1.1 GISServer

GIS服务器由服务器对象管理器(SOM:Server ObjectManager)以及一个或多个服务器对象容器(SOC:ServerObjectContainer)组成,其中核心的AO组件位于对象容器中,具体的GIS功能实现均由远程调用这些核心组件完成。GIS服务器是一个分布式系统,SOM作为 Windows服务运行在某一台机器上,它管理了一组分布在一台或多台作为SOC计算机中的服务器对象的启动和关闭,同时对SOC计算机进行负载平衡的动态调节[2]。

1.1.2 Web应用开发框架

ArcGIS Server为.NET和JAVA开发人员提供了Web应用开发框架,用于开发ArcGISWeb应用和Web Services。ADF包含一个完善的软件开发包,其中有Web控件、工程模板、例子源码和类库,可与IDE(如M icrosoftVisualStudio)无缝集成。同时它也包含一个部署Web应用的运行时,可使没有安装AO的Web服务器也可运行内嵌了GIS功能的Web应用。Web ADF封装了不同数据源实现特定GIS功能的复杂性,对外提供统一的编程接口,在Web应用与多源数据间起到了中间层的作用,简化了编程模型。

1.2 ArcGISServer的配置及管理

ArcGISServer系统配置及管理任务包括管理SOC,配置服务器目录,指定log文件地址,安全配置等,其中主要任务是服务器对象的配置。

1.2.1 服务器对象概述

服务器对象是一种粗粒度(course-grained)的AO对象。它简化了为完成某项任务而需要的一系列操作的编程模型,使得客户端仅需要通过一个方法的调用完成某项大块工作的集合,如地图的显示 [3]。通过服务器对象可以调用安装在GISServer上的细粒度的AO组件。ArcGIS Server内建了一些服务器对象类型,如MapServer和GeocodeServer。在此用一个命名为JNFX的MapServer对象来支持济南市的地图文档数据。服务器对象在GIS服务器中管理和运行,可被不同的应用程序共享。

1.2.2 服务器对象的生命周期

为了避免服务器对象中资源利用的冲突和充分利用硬件资源,可将服务器对象配置为池式或非池式模式[4]。非池式模式下,服务器对象为每一位用户创建一个实例,在被释放回服务器后,服务器对象实例随即被销毁。用户可以对实例对象中的资源进行各种编辑操作,而不必担心影响其他用户的使用,因为每当有新的用户请求时,服务器都会创建新的服务器对象实例和装载初始化数据返还给用户使用。另一种服务器对象模式为池式模式,它并不销毁释放回的服务器对象实例,而是将之放进对象池中缓存,当新的用户请求出现时,服务器从对象池中取出实例供用户使用。池式对象可以被多个应用进程共享,故能支持更多的并发用户。非池式对象可读可写,池式对象可读不可写,对池式对象进行编辑操作将带来不可预知的后果。

1.2.3 服务器对象的应用状态

服务器对象分为有状态和无状态。有状态是一种可读写模式,意味着应用可以对服务器及其相关对象作改动;无状态是一种只读模式,意味着应用不能对服务器对象及其相关对象作改动。一般来说,池式的服务器对象只能被无状态使用,非池式的服务器对象为有状态使用[5]。服务器对象接口(如IMapServer和IG-eocodeServer)和服务器对象扩展接口 (如 INAServer)等粗粒度的 AO组件公开的属性和方法本向是无状态的,被调用时不会改变服务器对象的属性,因此不论是在池式还是非池式服务器对象上调用都是安全的。调用与服务器对象相关的细粒度 AO对象则有可能改变服务器对象的状态[6]。

2 实时水情发布系统实现

本文作者以上述开发环境设计并实现了济南市防讯预警决策支持系统实时水情发布子模块。空间数据存储在Geodatabase中,实时水情信息数据经由全市各水情测站采集统一存储在M icrosoftSQLServer中,Web服务器上通过安装ArcGISServerADF运行时来部署网络应用程序 (见图 1)。通过以上方法,初步实现了集中管理型的网络GIS应用系统,为济南市公众获取实时水情信息和市政相关部门分析决策提供了极大便利(见图2)。下面介绍系统与GIS服务器端空间数据交互的关键技术实现方法。

2.1 专题图的实现

根据各水情测站当前水位与自身警戒水位的对比,将所有测站分为两大类:超出警戒水位和低于警戒水位。考虑到可能地图上有站点在数据库中并没有相应的条目,增加“No data”类以示数据缺失。直接对水情测站图层进行分类渲染将改变服务器对象实例的内在状态,要求服务器对象配置为非池式模式。参看前面对非池式与池式两种模式的对比,非池式对象将较多地占用服务器资源,性能却较低下。如果实时水情信息散布在数据库中的多个数据表,数据库管理员可能编写存储过程将其公开给开发人员。这将迫使开发人员在Web服务器磁盘上创建临时DBF表格文件作为建立连接的外部数据源并清理过期的临时文件,增加了编码复杂度,降低了程序性能。解决方案是根据水情测站图层创建 FeatureGrahpicsLayer,覆盖在原图层上,然后将之与查询数据库得到的实时水情信息表通过测站编号字段连接合并,最后依据当前水位和警戒水位列值的大小对比做专题渲染。FeatureGraphicsLayer是Web ADF中的核心对象之一,它驻留在Web服务器的内存中,没有实体文件与之对应,与来自 ArcGIS Server/ArcIMS的地图资源叠加后发送到浏览器。关键代码如下:

图1 实时水情发布系统数据流程图

图2 基于ArcGISServer的实时水情发布系统

2.2 标注的实现

专题渲染虽然形象直观,但只是定性的表示,浏览者无法藉此获取精准的水情信息。如果可以把水情信息标注在地图上,则可以弥补这一缺撼,获得定量的对比。直接在原水情测站图层上进行标注涉及图层属性表和数据库表的连接,甚至有可能需要在硬盘上生成中间临时表,同样会改变服务器对象实例的AO组成,要求服务器对象配置为非池式模式。ElementGraphics-Layer可以解决这一问题,它与FeatureGraphicsLayer都继承自GraphicsLayer类,所不同的是其中的元素只具有几何形体没有对应的属性信息,但几何形体可以是不同的类型。实现标注功能的关键代码如下:

2.3 测站总览

将实时水情信息制成表格可以集中呈现,方便浏览者查阅,缺点是缺乏与地图的互动。为此编写的Grid-Results自定义控件扩展了表格功能,除为数据列提供了排序功能外,还为其增添了缩放,漫游和选择等常规GIS功能。浏览者可以缩放或漫游地图至特定或全体测站,还可以选择它(们)以在地图上高亮显示。GridResults控件将地图与列表数据联系起来,使传统的表格不再显得单调呆板,改善了用户体验。将水情信息绑定到GridResults控件的代码如下:

3 结 语

AO应用编程接口虽然功能强大,然而调用细粒度的AO组件有可能导致粗粒度的服务器对象状态改变,而一些编程任务又非服务器对象这样的粗粒度 AO组件所能胜任。本文提出了一种如何将 AO下的编程任务巧妙转化到ADF层的技术方法,并将其用在实时水情发布子系统中,实现了预期的功能,提升了系统性能,很好地体现了ArcGISServer在开发Web应用的一些特点。

[1] 郭婧,张立朝,王科伟.基于ArcGIS Server构建地理信息服务[J].测绘科学,2007,32(3):91-93

[2] 汪旻琦,吴健平,范力铭.基于ArcGIS Server的企业级GIS系统研究[J].甘肃联合大学学报:自然科学版,2006,20(6):83-87

[3] 吴功和,丛明日.基于ArcGISServer的分布式GIS应用[J].测绘科学技术学报,2006,23(1):52-55

[4] 赵自力,王东华,周晓光.基于ArcGISServer的网络GIS应用系统开发[J].遥感信息,2007,(1):76-80

[5] ESRICorp.The Developer Help System for ArcGISServer for. NET(VS2005)[CP/DK].ArcGISServer 9.2 for.NET,2005

Research on Developm ent of Web GISU sing A rcGISS erver

by Zuo Jinfu

ArcGIS Server provides a platform to deve lop space related enterprise applications,on which web applications and services based have broad application prospects.It mainly introduced the architecture of ArcGIS Server and its configuration and management and took example for real time riverine in formation publication sub-system to show the way how to transfer the task of AO APIto the ADF-tier to promote the performance of system.

Arc GIS server,web applicaton,ADF,AO (Page:121)

P208

B

1672-4623(2011)01-0121-03

2009-09-22

左进府,硕士,主要从事网络地理信息方面研究。

猜你喜欢
水情测站实例
GNSS钟差估计中的两种测站选取策略分析
曹新刚
基于单片机的简易水情检测系统装置
全球GPS测站垂向周年变化统计改正模型的建立
测站分布对GPS解算ERP的影响分析
甜水情
完形填空Ⅱ
完形填空Ⅰ
基于GPS坐标残差序列的全球测站非线性变化规律统计
千载空灵岸 悠悠湘水情