徐州市三维地下管线信息系统设计与实现
2019-02-27张奎王军
张奎,王军
(徐州市勘察测绘研究院,江苏 徐州 221000)
1 引 言
由于诸多种类地下管线共处于地下空间中,地下空间在城市发展中变得十分复杂,地下管线管理信息系统相对于其他的空间信息管理系统建立起来更加困难,必须在二维GIS系统的基础上继续发展以满足实际中的应用需求。好在虚拟现实基础上的各类三维系统的完善为之提供了很好的借鉴和参考,如果能够将错综复杂的地下管线情况用三维图形信息真实地还原出来,能够使管线的规划和管理更加简便,使得决策的过程变得更加科学高效[1]。
徐州市三维地下管线管理信息系统的设计,就是利用二维的地下管线基础信息,并结合虚拟现实技术而成。精确的二维地下管线基础数据使得形成的三维地下管线管理系统不仅能够准确、真实地描绘出城市的地下管线情况,而且由于基于三维的系统能够给人们呈现出和现实视觉一致的场景,因此系统能够更直观、更立体地展现整个管线的空间关系,为管线的查询、统计、分析提供了更有利的空间服务方式[2]。
2 系统总体设计
2.1 系统总体开发技术路线
(1)基于开放式主流系统开发环境
系统开发基于主流开发工具Microsoft Visual Studio 2005。
Microsoft Visual Studio 2005是Windows环境下支持B/S与C/S运行环境的强大的开发工具,在Microsoft Visual Studio 2005环境下,开发者能够充分利用Windows操作系统提供的开发资源,创建一个集数据库、通讯、GIS、Web技术、多媒体[3]等多种技术的应用桌面环境,并在此环境下开发出一套具有可维护性、稳定性好、运行效率高、简洁无冗余等优点的系统。
(2)以C/S为主体,结合B/S的应用体系
徐州市三维地下管线信息系统将结合不同的应用采用以C/S为主体,结合B/S的应用体系。
本系统数据库存储着大量地下管线和地形空间及属性数据,而对这些数据的操作需要专业的技术人员来进行,包括数据的编辑、统计、分析以及历史数据的存储,以保证系统数据的安全性、运行速度和运行效率,因此为了满足对地下管线和地形空间及属性数据的处理和对数据服务的需求,这部分系统设计为C/S结构,并为专业技术人员提供对数据库存储的大量地下管线和地形空间及属性数据交互和变更操作、空间分析和统计工具以及便捷灵活的制图功能。
由于地下管线的权属单位和管理单位各不相同,为了满足各管线权属单位、政府其他部门以及公众对地下管线数据的信息访问、查询等需求,这部分系统设计为B/S结构,在此模式下,系统为各管线权属单位、政府其他部门以及公众等用户设置不同的权限,以满足他们对地下管线数据不同的浏览、查询等需求。其中,通过城域网和防火墙的认证,地下管线各权属单位可以浏览查询自己管辖的地下管线及设施;通过Internet浏览器,政府其他部门及公众可以访问不同密级的地下管线信息;通过本单位的局域网,其他部门可以快速地浏览各种地下管线信息,以实现系统数据的信息共享。
(3)基于Oracle+ArcSDE数据库环境
数据库的设计是系统设计环节的核心与基础,最基本的应遵循数据与操作的分离原则。建立起的地下管线数据库,需要满足数据的集中管理,集中维护,分布使用,先进的空间数据库引擎技术能够为其提供支持。本系统利用Oracle关系数据库,实行对地下管线空间数据与属性数据的管理,能够提供高效的查询、访问、分析功能[4,5]。地下管线空间数据的操作与管理则通过ArcSDE进行,但是数据的完整性和更深层次的操作应该在应用层完成。
Oracle的海量数据存储、高并发访问及不间断运行的特点加上ArcSDE的空间数据库引擎,能够使得系统底层脱离冗长的数据存储,同时又能够实现所有高效的地理信息系统的相关操作。ArcSDE调用C API和JAVA API接口获取底层数据,这样的系统设计保证开放端口的客户能够使用到有效的地理信息数据。
(4)基于ArcGIS Engine的GIS组件开发
为了使系统各个功能模块既相互独立,相互之间又不受影响,系统必须采用组件化的开发模式,降低功能模块的耦合度以避免系统因某个动作或某个突发事件导致数据丢失和系统瘫痪[6]。ArcObjects组件是ArcGIS产品的核心,为开发者提供了强有力的工具,ArcGIS Engine作为将ArcObjects的部分组件单独打包的组件库,能够开发脱离ArcGIS平台独立运行的GIS软件。使用ArcGIS Engine组件库能够在系统的开发费用、效率上有较大的优势[7]。
ArcGIS Engine作为一套完备的嵌入式GIS组件库和工具库,提供了包括基本服务(Base Services)、数据存取(Data Access)、地图表达(Map Presentation)、开发组件(Developer Components)、扩展功能(Extensions)5部分。
2.2 地下管网三维场景构建
由于各种类型的地下管线,在城市地下空间的共存使得地下管线的布设犹如搅乱的线团般,往往难以从二维信息想象立体空间中管线之间的位置关系,这种不清晰会给地下管线的建设带来阻碍甚至失误。以此构建三维地下管网场景来清晰地反映在交错复杂的地下各管线之间及管线与周边地物之间的空间位置关系,存在必要性。总体来说,城市地下管线的三维可视化,除了管线数据的探测、管线数据库的建立之外,主要是三维模型建立,其中建模的关键是在于特征点空间坐标的建模。
其构建流程如图1所示。
图1 地下管网三维场景构建流程
地下管网设备分为管点和管线两类。
管点三维模型的创建过程如下:①设计符合相应二维符号标准的三维管点的样式;②使用3ds Max三维建模软件创建三维实体模型,以统一的格式保存并通过转入器将各类管点三维模型建立符号库;③对管点设备符号化。
在城市地下管线中,除较少部分不规则形状的管线,其余大部分的地下管线基本上可归为方形和圆形两类。建模主要还是以构建方形和圆形的管线为主。ArcGIS Engine中IMultipatch提供动态的方式生成三维模型。例如,方形管模型由4个片及其坐标生成;圆形管模型由管线的外环等分割片组合成。具体来说,通过使用ArcEngine提供的IMultiPatch接口,依据三维坐标将这些特征点集合起来生成多片,按照管径的属性组合生成管线的三维模型[8~10]。Geodatabase进行存储和管理各管线的管点坐标、起点埋深、终点埋深、管径大小等数据信息。
2.3 系统总体技术架构
根据徐州市三维地下管线信息系统的功能分析,将系统技术框架分为5层如图2所示,数据层、GIS服务层、通用开发接口层、业务逻辑层和应用层。通过在不同层次设立标准规范制度和安全保障体系,使得稳定性和共享性得以提高,并形成高度整合化的系统。
图2 系统总体技术架构图
(1)数据层
数据层:采用Oracle+ArcSDE为系统提供基本的数据服务,Oracle储存空间数据与属性数据,利用ArcSDE为Oracle提供的数据引擎。
(2)GIS服务层
提供如发布和访问空间数据的底层GIS功能服务。
(3)通用开发接口层
提供对GIS服务层的底层访问接口。根据系统的功能需求,遵循开放地理空间信息联盟的设计标准,利用ArcGIS Server[11]的应用开发框架(ADF)和元数据来设计并封装的一套通用开发接口。通用开发接口提供了如点、线、面对象获取服务、视图服务、用户权限等服务,并对其进行封装以便于业务逻辑层调用。
(4)业务逻辑层
提供供应用层调用的功能接口。此层以通用开发接口层的接口为原件,组合封装B/S应用功能和C/S应用中的大颗粒度的业务功能接口,这些功能接口是采用COM、HTTP和Web Services技术实现的。
(5)应用层
此层提供了徐州市三维地下管线信息系统各应用功能模块,包括浏览、编辑、分析、统计、查询等。
通过这五层架构,系统的服务性能和地下管线空间数据的相关性和动态管理得以加强。
2.4 系统功能设计
徐州市三维地下管线信息系统建设的根本目的在于建立一个综合地下管线管理、更新维护、应用服务的统一信息化平台,实现全市综合地下管线数据资料的汇集、处理、建库、管理、维护、分发等服务。它以城市地下管线和数字地形图为基础空间数据、以属性信息数据为资源,通过城市地下管线信息和城市基础地理信息的联合查询、统计和分析,进而为城市地下管线规划、建设、管理提供技术决策支持[12]。为此,徐州市三维地下管线信息系统主要实现了浏览应用功能模块、编辑应用功能模块、查询应用功能模块、分析应用功能模块、统计应用功能模块、量算应用功能模块以及标注应用功能,具体的系统功能模块结构图如图3所示。
图3系统功能模块
2.5 数据库设计
当前GIS技术发展的最新趋势是将空间数据与非空间数据集成到一体化之中,其中空间数据使用关系数据库或对象关系数据库来管理,对非空间数据利用SQL语言进行操作,同时利用海量数据管理、事务处理(Transaction)、记录锁定、并发控制、数据仓库等关系数据库的功能集成空间与非空间数据。
选择Oracle关系数据库,实行对地下管线空间数据与属性数据的管理,能够提供高效的查询、访问、分析功能[13,14]。Oracle的海量数据存储、高并发访问及不间断运行的特点加上ArcSDE的空间数据库引擎,能够使得系统底层脱离冗长的数据存储,同时又能够实现GIS应用系统所有高效的地理信息系统的相关操作。ArcSDE调用C API和JAVA API接口获取底层数据,这样的系统设计保证开放端口的客户能够使用到有效的地理信息数据。
徐州市三维地下管线信息系统的建设涉及对大量的空间信息数据的采集与处理,具体包括各种空间信息的存储、编辑、空间分析、统计查询等。本次设计的主导思想是:采用ESRI公司提供的空间数据模型GeoDatabase对空间数据进行组织管理,采用Oralce大型关系型数据库存储空间数据及其属性数据,利用ESRI公司的ArcSDE空间数据库引擎作为数据接口,基于ESRI公司提供的ArcEngine和AO作为开发平台,坚持先进性、实用性和易用性、安全性和稳定性、创新性、扩充性和高效性的设计原则,建立一个开放的、灵活的综合地下管网数据库,保证建成的数据库能实现对数据的管理应用,还可以为整个徐州市的各行各业提供统一的数据服务,为需要使用地下管网数据的各政府职能部门及商业机构提供不同数据格式的综合管线数据。
3 主要模块功能及实现
系统采用STAMP三维地理信息引擎软件实现三维管线的发布和展示,主要模块功能及实现如下:
3.1 断面分析
断面分析的基本原理为:在一定区域内(如某一段马路、某一条河流等地下管线)对管线进行垂直/水平剖面,通过剖面后会显示出管线的断点与其垂直方向上的属性,查看该管线的走向、坡度及空间位置管线等。
以横断面为例,分析流程如图4所示。
图4 横断面分析流程图
3.2 爆管分析
爆管分析是应对爆管事件需要的关阀处置分析功能。根据爆管位置通过系统已经建立的管道连通情况追查需要关闭的阀门情况。目前深度优先搜索算法是最普遍的爆管分析算法,但在日常使用中比如有向的供水排水燃气网,可以采取优化的搜索算法,即只需要搜索最近上游的阀门管点,提高分析效率。分析流程图如图5所示,分析结果如图6所示。
图5 爆管分析流程图
图6 爆管分析
爆管分析的部分程序如下:
//获取节点
Dim PTraceFlowsolver As ITraeeFlowsolverGEN
Dim PEnumNetEID_Junctions As IEnumNetEID
Dim PEnumNetEID_Edges As IEnumNetEID
Dim PNetElements As INetElements;Dim PNetFlag As INetFlag
Dim PTraceFlowsolver As ITraceFlowsolverGEN
PNetElements.QueryDs(intEdgeID,esriElementTyPe.esriETEdge,
intEdgeUserClassID,intEdgeUserID,intEdgeUsersubID)
Debug.Assert((intEdgeUserClassID>0) And (iniEdgeUserID>0))
PNetFlag.UserClassID = intEdgeUserClassID
PNetFlag.UserID = intEdgeUserID
PNetFlag.UsersubID = intEdgeUsersubID
PaNetFlag(i) = iPNetFlag
PTraceFlowSolver.FindFlowElements(esriFlowMethod.esriFMDownstream,
esriFlowElements.esriFEJunctionsAndEdges,pEnumNetEID_Junctions,
PEnumNetEID一dges)
//判断节点是否为阀门
Dim pValveLayerPointCol As IPointCollection'//获取阀门层中所有的点
Dim pfeature As IFeature
Dim pFeatureclass As IFeatureClass
Dim pFeatureCursor As IFeatureCursor
Dim PQueryfilter As IQueryFilter
Dim PPoint As IPoint
Dim pCol As IPointColleetion
PCol = NewMultiPoint
PValveLayerPoiniCol = PCol
PQueryfilter = NewQueryFilter
PFeatureCursor = PFeatureclass.Search(PQueryfilter,False)
Pfeature = PFeatureCursor.NextFeature
Dim Pfields As IFields
PEnumEIDInfo.Reset()
Dim PBase As IMultiPoint
Dim PComparison As Point
PBase = NewMultiPoint;PComparison = NewPoint
Dim PRelOP As IRelationalOPerator
PBase = PValveLayerPointCol;PRelOP=PBase
pEIDInfo = pEnurnEDInfo.Next
PGeometry = PEIDInfo.Geometry;PComparison = PGeometry
If PRelOP.Contains(pComparison) = True Then
PNewGeometryColl.AddGeometry(pGeometry)
End If
Next
4 结 语
本文在分析了国内外三维地下管线系统建设的现状基础上,深入地研究了徐州市三维地下管线数据采集的内容和技术,从实际作业生产的角度分析了系统功能需求设计,给出了三维地下管线信息系统的总体框架和技术体系,并从利于优化系统性能的角度选择了C/S+B/S架构模式,结合AE、AO开发了徐州市三维地下管线信息系统的主要功能。系统的建成,大大提高了数据管理、维护、更新的效率,提高了地下空间的利用率,有利于充分发掘地下空间的潜力。