张现军,陈甫
(济南市勘察测绘研究院,山东 济南 250012)
城市地下管网作为城市最重要的基础设施的一部分,是维持城市正常运转的“生命线”,其担负着一个城市能源输送、信息传输等工作[1]。我国城市地下管线种类繁多,包括供水、热力、燃气、排水、通信管网、电力等8大类20余种管线。随着全国范围内地下管线普查工作的逐步完成,各个城市建立并完善了地下管线数据库,城市中的相关部门、管线企业根据不同应用背景,研发出了具有多种应用特点的管线管理系统。
随着城市基础建设的快速发展,地下管线变动频繁,虽然变化较小,但实时性要求高,如何保证已建立的管线数据库的同步更新、保持数据库的活力,对管线系统提出了新的要求。目前已建立的地下管线管理系统对管网数据的维护多采取C/S(Client/Server)模式,这种方法对客户端配置要求高,需要专业人员进行维护,适用于大批量数据的更新和维护,但对于小范围或少量数据的动态更新具有一定的局限性。相较于C/S模式,B/S(Browser/Server)模式具有跨平台、动态、可重用、实时性强等特点,对客户端要求较低。部分学者基于B/S(Browser/Server)模式,结合开放地理空间信息联盟(OGC)标准规范中的WFS服务实现了管线数据的维护,在一定程度上实现了数据的动态更新。但这种方法只是对要素的属性及简单要素进行了编辑,并没有对管线间的拓扑关系进行维护。
本文在通用管网模型的基础上研究具有良好适应性的专业管网数据模型,对专业管网的特征和拓扑关系进行表达,用关系型数据库存储实现,通过WebService进行管网数据的编辑和拓扑维护。在用户交互界面,基于客户端缓存的要素捕捉,提高数据编辑的准确性。
城市地下管网作为城市重要的基础设施,其实体种类繁多,数量庞大,网络拓扑结构复杂[2]。城市地下管网按照分布一般可以分为三类:呈树枝状分布,呈环状分布或呈辐射状分布。城市地下管网数据作为基本网络模型中的一种,因此其具有网络模型的一般特征,从管网的结构上来说,管网是由连接管段的管点以及管点之间的管段组成。管点根据要素实体的类型可以分为阀门、节点等。根据管网类型管点又可细分为多个子类型,例如供水管网节点分为水表、消火栓、水泵、水厂、接入点等,燃气管网节点分为用户、供气站、加压站、阀门等。
城市地下管网中设施并不是孤立存在的,设施间具有拓扑关联关系,如供热管网中用户、阀门等与供热管道之间;燃气管网中用户、供气站等与输送线路之间;排水系统中检查井与雨水管之间等。城市地下管网空间数据的各个图层中均不包含面状实体,城市基本框架中虽然包括诸如小区、公园等面状实体,但基本框架数据在管线应用中通常作为背景图用于指明地下管网的具体位置,精度要求不是很高,因此在建立管网模型可以进行适当简化,无须考虑面状实体,同样考虑空间数据的拓扑时可以忽略与面状实体相关的拓扑关系[3]。
本文构建的基于元数据面向实体的管网数据模型将管网元数据和管网要素实体分开存储。元数据用于存储各专业管网的划分及其相对应的管网特性,空间要素存储根据管网分类按照一定的规则存储管网的空间要素及其之间的拓扑关系。模型将管网中的要素抽象为点、线两类要素,点要素表示管网中连接管段间的设备,线要素表示管网中的管段。管网中的拓扑关系在线状要素表中进行存储,即线状要素由起点和终点连接而成,其中起点和终点必须与点状要素相连,线状要素不能脱离点状要素孤立存在[4]。
(1)元数据逻辑结构组织
元数据存储由管网分类规范、数据库元规范、设备分类、设备字段组成,其对应的数据库表名分别为M_GWFL、M_DBMETA、*_M_MT、*_M_MT_FLD,其中设备分类、设备字段表名前的“*”为专业管网在数据库元规范中所对应的管网名称。设备分类表和设备属性字段表之间通过设备分类标识字段“Dno”进行关联。元数据逻辑结构组织关系如图1所示。
图1 元数据逻辑结构组织
(2)管网实体逻辑结构组织
模型中将各专业管网的点、线要素根据自身的专业特征分开存储,对应的表名分别为*_nod和*_lin,表名前的“*”与设备分类和设备字段表名前的“*”规则一致。
模型中点线要素表的要素关系,实际上表示的是管网中要素的拓扑关系。点线之间拓扑关系的表示是管网编辑中拓扑关系维护的基础,在该数据模型下,对点、线要素的添加、删除、更新不再是简单的编辑操作,在进行管网数据维护的同时,还需保持管网拓扑关系的完整性。
WebGIS三层架构中的服务层作为各类服务提供的载体,对下管理共享数据,对上集成支撑各类业务应用,服务层的实现主要是通过WebService进行实现。WebService通过SOAP、UDDI和XML等标准技术为应用软件之间的通信制定了的统一的标准,应用程序之间通过标准的方式进行通信[5]。
本文需要对业务数据和管网空间数据同时进行管理和操作,在服务层的实现中使用了WebService与GIS结合的GIS WebService。服务接口根据服务类型分为地图元数据接口与要素编辑接口,接口在设计上遵循OGC规范,能够与其他业务系统进行很好的对接。要素编辑接口如表1所示。
要素编辑接口 表1
(1)缓存方式选择
WebGIS系统是一个具有多层结构的分布式系统,WebGIS空间数据的缓存可分为服务器端缓存和客户端缓存[6]。服务器端缓存通常适用于缓存数据量比较大、缓存需要被多个用户进行共享的情况。某些应用系统中有些数据不需要被其他用户进行共享,但建立缓存可以提高单个客户端数据请求的响应速度,这种情况下通常采用客户端缓存[7]。
为了提升用户交互体验以及数据编辑的准确性,地下管网编辑系统中的部分功能添加了要素捕捉,需基于已有的空间数据实时计算捕捉目标点。为了减少网络和服务器性能因素对实时捕捉的影响,本文选择将相关的空间数据在客户端进行缓存。
(2)缓存空间数据的选取
本文所研究的管网空间数据在线编辑主要是针对管网数据进行编辑维护,但根据具体的功能需求差异,对捕捉数据具有相应的要求。例如执行线上加点操作时,需要对管网数据进行捕捉;执行解析录入操作时需要对地形图进行捕捉。部分编辑操作对于捕捉数据的要素类型也有一定的要求,例如某些编辑操作仅对点、线要素进行捕捉或对二者同时进行捕捉。
对于管线数据的编辑通常在地图缩放比例比较大时进行,地图缩放在较小级别时进行空间数据缓存需要存储的数据量比较大,而且缓存的数据也没有利用价值,反而会影响系统的性能。
鉴于以上分析,对于缓存空间数据的选取不仅要考虑空间数据的类别,还要考虑空间数据的要素类型以及建立缓存的时间点。
(3)空间数据缓存的创建及更新策略
客户端的空间数据缓存通常以空间范围进行存储,空间范围改变时需要向服务器发送请求更新缓存。如图2所示,当对地图进行操作时,首先判断捕捉是否开启,如果没有开启直接返回,如果处于开启状态,继续判断地图操作是否被拖动或进行了缩放,即判断地图范围有没有发生变化,如果没有变化,直接跳出,如果符合条件进行下一步判断,判断当前地图缩放级别是否大于用户设定的或者系统默认的级别阈值,不符合条件跳出,符合条件则向服务器发送请求更新当前缓存。
(1)要素捕捉的过程
要素捕捉的过程是根据鼠标光标点与地物要素点的位置关系获取最优点的过程,这个最优点可以是距离光标点最近的点或者最近线的端点、垂点、中点等。根据设定的捕捉半径,在光标点周围形成一个捕捉范围(通常为矩形范围),捕捉范围内的点要素或者与捕捉范围相交的线要素为待筛选的目标捕捉对象,根据捕捉算法在目标捕捉对象中筛选最优点,如果目标捕捉对象为空,则认为捕捉失败。
本文的捕捉思路如图3所示,用户执行某个编辑功能操作,在鼠标移动选择目标对象时,系统首先判断条件1:功能是否打开了捕捉开关,如果捕捉没有打开,执行操作1:正常执行选择操作。在捕捉开启的情况下,判断条件2:本地缓存是否为空,如果缓存为空,执行图2所示的流程更新本地缓存后仍不满足条件,直接返回,执行操作1。如果满足条件2或者更新缓存后缓存不为空,继续向下执行,根据当前光标点的屏幕坐标与本地缓存中的数据根据设定的捕捉半径进行计算,筛选符合条件的捕捉目标对象,如果目标对象为空,执行操作1,对象不为空时,通过计算定位捕捉点在目标对象上的位置,根据目标定位的位置(单点或线上的垂点、终点、端点)选择合适的Symbol在地图上进行绘制,完成一次捕捉操作。
图3 要素捕捉的思路
(2)捕捉优化的策略
GIS中的空间对象通过地物的空间坐标来表示自然地物,构成对象的最小元素是点,点与点之间构成线段或者弧段,线段与线段(或者线段与弧段,或者弧段与弧段)之间构成线条,闭合的线条构成单面,多个不同方向的闭合线条构成多面或有岛的面[8]。缓存中是以对象的形式存储的空间数据,有些对象的空间跨度很大,需要对对象进行分解,例如多点拆分成点数组,线条或单面拆分成线段数组来进行捕捉计算,分解后根据捕捉范围剔除一些明显不符合要求的数据,缩小参与计算的数据量。
经过数据精简筛选后的空间对象,通过在空间数据缓存池中对目标空间对象建立索引,可以快速查询和获取到需要进行捕捉计算的空间实体,提升捕捉的性能。
基于上述研究内容,作者开发了基于WebGIS的管网在线编辑系统实例。实例系统的运行环境包括客户端环境和服务器端环境,客户端环境:内存 2 GB以上,主频 1.8 GHz以上,Windows vista以上操作系统,IE8以上浏览器;服务器端环境:内存 4 GB以上,主频 2.0 GHz以上,Windows Server 2008以上操作系统,JSP+Jetty运行环境,需要良好的 100 MB以上的以太网络系统。
基于WebGIS的管线在线编辑系统实例采用WebGIS的三层架构设计,其中数据存储层采用本文所研究的基于元数据面向实体的管网数据模型的物理存储结构对管网数据进行管理,通过关系型数据库SQL Server 2008 R2进行存储;业务服务层基于ArcObjects SDK for Java和GeoTools进行使用编辑服务接口的开发,对空间数据和属性数据进行维护;应用展示层基于ArcGIS API for JavaScript结合Html5、Ajax技术进行实现。图4为系统主界面,系统实现了移动管点、合并管点、管段上添加管点、删除管线、延长管线至管点、批量删除管点等功能,对基于缓存的要素捕捉、基于管网模型的拓扑维护进行了验证。
图4系统主界面
针对城市地下管网空间对象和对各专业管网的特性的表达,建立了基于元数据面向实体的管网空间数据模型,对于管网实体数据、管网元数据以及管网空间实体之间的拓扑关系进行存储。本文提出的WebGIS客户端基于空间数据缓存的要素捕捉,实现了对数据进行快速有效的更改和处理,通过实例系统对以上研究内容进行了验证。
[1] 李金平,薛泮成,孟祥来. 城市地下管网信息系统设计与实现[J]. 测绘工程,2004,13(4):25~27.
[2] 何屹. 基于Web分类技术的农业信息获取系统的研究与实现[D]. 北京邮电大学,2010.
[3] 程小凯,李恺毅,李景文等. 面向对象的城市管网数据组织模型设计[J]. 地理空间信息.2010(02):127~129.
[4] 卢丹. 地下管网地理信息系统通用模型的设计与实现[D]. 哈尔滨:哈尔滨工程大学,2003.
[5] 杨志波. 基于Ajax技术的WebGIS研究及实现[D]. 中国科学院广州地球化学研究所,2006.
[6] 彭建伟. Ajax技术在WebGIS中的应用研究[D]. 长沙:中南大学,2008.
[7] 李浩松,朱欣焰,李京伟等. WebGIS空间数据分布式缓存技术研究[J]. 武汉大学学报·信息科学版,2005,30(12):1092~1095.
[8] 吴磊,黄先锋,舒宁. GIS大数据量编辑处理中快速捕捉的优化策略[J]. 武汉理工大学学报·交通科学与工程版,2005,29(2):315~318.