王子启
(1.山东正元地球物理信息技术有限公司,山东 济南250101)
城市地下管线是城市基础设施的重要组成部分,是保证城市生产、生活正常运转的重要基础条件,是城市安全与繁荣的根基,是城市的“生命线”和“血脉”,也是城市规划、建设和管理的基础资料和公众共享的信息资源。然而,地下管线错综复杂,走向、管径、埋深以及管线交界处的管点各异,且数据量巨大,采用传统的三维建模软件进行人工建模,工作效率低下。
在综合分析管线数据的基础上,本文设计了以WGS84为坐标系的城市地下管线动态三维建模方法。通过分析不难发现,地下管线有其共性:对于管线来说,其三维表现均为圆柱形和方形,区别在于走向、管径、纹理和形状不同;对于管点来说,均为点状模型,区别在于形状、方向和套合不同。点图层数据中的阀门、管井等复杂模型可通过3ds Max等建模软件建模后导入,但转弯、三通以及多通的部分角度多变、情况复杂[1]。设计和开发城市地下管线三维成图组件,能实现具有较好展示效果的管线三维动态建模,并能对外提供自动化成图和更新维护的Web服务接口,便于其他相关应用的调用。
从自动化程度来看,管线三维建模方法可分为人工建模和自动化建模[2],人工建模虽然模型精细,但工作量巨大,且城市管线场景大,需要分区协同作业,接边整合的工作量无谓增加,效率低、成本高和周期长的问题非常突出;自动化建模主要是通过在系统中自动调用阀门、水表等点状固定点精细模型实现,但弯头、多通接合部位无法精确设计模型,显示效果较差,细节上与人工建模有很大差距,因此尽可能提高建模精度和自动化程度是地下管线三维建模首选的技术方法。另外,采用B/S架构的管线三维信息化应用系统,不论是基于SkyLine还是SuperMap等平台,均需使用相应的专用工具发布地图服务,每次数据更新都需要处理相应的工程文件,人工发布服务,无法实现在线的二三维数据实时更新和可视化显示。
1)建立模型库和纹理库。地下管线是由管点、管线按一定连接关系构成的线,代表实际管线的走向。阀门、窨井等管点利用3ds Max软件建立相应的管点模型[3],形成固态模型的一系列文件,格式为xpl。管线则通过不同的纹理区分种类,参考相关标准中管线表达的颜色要求,在画图工具中形成一系列纹理文件,格式为bmp,供组件调用。
2)对管线探测成果库数据进行预处理。首先将管线属性数据预处理为矢量数据,再基于二维管线矢量数据,根据各类管线点和管线段的特点,通过空间、属性和材质信息映射,实时驱动生成地下管线三维模型[4]。对于管线数据,根据管径动态生成三维管线(圆形或方形),并根据管线类型动态粘贴纹理;对于管点数据,根据其附属物和特征,动态选定管点模型导入,并根据提取的参数,确定其位置和方向,套合管的尺寸等信息。进一步优化弯头、多通接头等模型的角度和拼接,以保证三维模型的生成速度和准确性。
3)基于生成的三维数据,开发直接操作数据库表生成三维实体的相关功能,并进一步封装,形成服务器端的组件接口服务。
4)实现三维管线数据的在线更新。通过参数控制覆盖、追加或删除,实现二三维管线数据的同步动态更新。数据库中的数据更新后,自动刷新服务重新获取最新数据进行展示,无需重新发布地图服务。
基于SkyLine平台开发的B/S三维应用系统,是在C/S系统中生成三维数据,再人工发布到服务器端,不能实现在服务器端的实时编辑和更新。因此,为了实现组件成图服务和在线动态更新,本文分析了SkyLine客户端的成图接口和参数,开发了成图相关功能,实现了在服务器端的在线更新。
1)SkyLine客户端组件成图。绘制三维物体时,为了提高物体图形的真实感,除进行投影变换和消隐处理外,还需采用合理的光照模型进行光照,利用纹理映射技术模拟物体表面的纹理细节,使计算机绘制出的物体更加接近实际物体。具体的原理和步骤为:①透视投影;②方管线采用四方体建模,圆管线采用圆柱建模;③管线采用光照加材质渲染;④管线段之间采用固化点模型和部件模型来衔接。
2)通过分析总结数据库三维数据表发现,每条记录对应一个三维实体,进一步厘清各数据项的含义。管点三维实体记录结构如图1所示,管线三维实体记录结构如图2所示。其中,比较关键的是Yaw、Pitch和Roll三个角度,Pitch(俯仰角)围绕X轴旋转,Yaw(偏航角)围绕Y轴旋转,Roll(翻滚角)围绕Z轴旋转;Length(长度)、Fillcolor(填充色)、Linecolor(线颜色)等为其他三维属性。只要给所有属性赋予正确的值,并作为一条记录插入三维表中,即可在SkyLine中可视化显示该三维实体。
图1 管点三维实体记录结构图
图2 管线三维实体记录结构图
3)参考SkyLine客户端成图相关的接口和参数,在坐标转换组件的参与下,计算得到表达三维管点和管线每个实体的所有属性数据项,并直接操作对应的三维数据表,通过数据库记录的增、删、改来实现相应的三维实体操作。
4)组件封装,实现在服务器端运行的自主开发的成图服务Web接口。
为了实现真正与SkyLine的函数计算结果一致,消除误差,必须实现SkyLine在WGS84和西安1980两个坐标系之间的高精度转换[5]。首先将WGS84坐标系转换为空间直角坐标系,并基于最小二乘法求解布尔莎七参数;再进行布尔莎七参数模型转换和高斯投影坐标转换。本文开发了坐标转换组件,用以求解准确长度和角度等三维属性信息,做到cm级正反算的无损转换。
模型库中除精细化的阀门等固态化模型外,还增加了专用于接合处的部件模型。准确提取和计算不规则结合处的相关参数,确定其位置与方向,实现准确摆放。当多个部件模型整合显示时,点线的套合效果非常好。只是该管点位置对应了多个部件模型,需做好实体标识。
本文以ArcSDE为空间数据引擎,以PostgreSQL为数据库管理软件,以SkyLine为三维可视化平台,实现了服务器端的三维成图以及在线数据更新功能。成图的关键在于计算Yaw、Pitch、Roll等三维属性值,本文在ArcGIS的SDE空间数据库中二维数据表的基础上,直接操控数据库,形成管点与管线的三维数据表。对于多通等模型库无法支持的细节,通过优化点模型与线模型来整合显示。
在组件设计方面,为了方便客户端通过Web方式调用,本文对比了3种设计方案。
1)ActiveX控件开发。其优点为ActiveX控件是分布式对象技术,能保护开发者以前的投资,是开放的技术,既包容现有标准又鼓励第三方的参与;其缺点为ActiveX控件体积可能过于庞大,客户端部署困难、下载速度较慢,支持ActiveX的平台仅限于Windows系列,平台无关性弱,开发和维护较困难。
2)将组件注册为后台服务,Web客户端通过数据库传递参数,服务器端组件服务程序实时监听数据库表参数变化,自动进行处理。其优点为开发维护较容易,调用方便,将请求写入数据库即可;其缺点为增加了服务器资源占用,安全性不高。
3)采用Web Service技术开发。其优点为Web Services是自包含、可自我描述、可跨平台和跨语言的,部署较灵活,升级和维护Web服务简单、方便,可实现多数据、多服务的聚合,与其他系统接口耦合度低,使用SOAP协议通信,封装了XML格式的数据,以ASCII文本的方式传输而非二进制,调试方便;其缺点为单机应用程序不适合使用Web Service,局域网的同构应用程序采用DCOM会比SOAP/HTTP高效。
综合分析本组件开发需求,本文采用Web Service技术进行开发。具体开发步骤为:客户端→阅读WSDL文档(根据文档生成SOAP请求)→发送到Web服务器→传输给Web Service请求处理器(ISAPI Extension)→处理SOAP请求→调用Web Service→生成SOAP应答→Web服务器通过HTTP的方式反馈给客户端。
本文开发的组件的主要功能是实现管线从二维到三维的自动化[6],再通过SkyLine平台展示为服务器端的三维数据服务,并能为JS脚本所调用,如图3所示。
图3 系统框架图
管线数据自动化三维成图组件应具有的功能如表1所示。
表1 管线数据自动化三维成图组件主要功能列表
1)建立模型库和纹理库。管线种类通过不同的纹理区分,根据管类形成不同颜色的一系列纹理文件;阀门、窨井等管点则形成相应的固态模型文件。以阀门为例,对应的xpl文件在SkyLine中加载,如图4所示。除固态模型外,组件还增加了部件模型文件,专用于转弯、多通等接合处的模型拼接,如图5所示。
图4 三维模型库(固态模型)
图5 三维模型库(部件模型)
2)管线数据预处理。将采集的管点、管线属性数据导入数据库,调用该组件数据访问接口,导入数据连接参数,测试数据连接是否正常;在数据连接正常的情况下,调用该组件数据核查接口,依据相关标准规范对预处理数据进行核查质检,生成相应质检报告(质检结果不通过时需人工处理,不含在本次开发内容中);质检合格后[7],可调用该组件数据预处理接口,后台自动将管点、管线属性数据根据坐标生成矢量数据存储在ArcSDE空间数据库表中[8]。
3)生成管点、管线三维数据并在线更新。调用组件自动化三维管线成图接口[9],后台根据相关参数自动将预处理好的管点、管线数据生成SkyLine平台中可调用的管线三维模型实体记录。通过参数控制覆盖、追加或更新,实现管线数据动态更新。
4)刷新数据。调用组件的刷新接口,后台自动刷新三维数据库表,实现三维管线更新数据的实时显示。
1)通用接口,名称为OpenSDEWorkspace,负责打开ArcSDE空间数据库工作空间。返回true表示成功,返回false表示失败。
2)管点操作插入接口,名称为Insert_Point_Feature,负责将二维管点图层中指定条件的对象插入到三维管点图层中。返回true表示成功,返回false表示失败。其参数说明如表2所示。
表2 管点操作插入接口参数说明
3)管点操作更新接口,名称为Update_Point_Feature,负责将二维管点图层中指定条件的对象更新到三维管点图层中。返回true表示成功,返回false表示失败。其参数说明如表3所示。
表3 管点操作更新接口参数说明
4)管点操作删除接口,名称为Delete_Point_Feature,负责在三维管点图层中删除指定条件的对象。返回true表示成功,返回false表示失败。其参数说明如表4所示。
表4 管点操作删除接口参数说明
5)管线操作插入接口,名称为Insert_Line_Feature,负责将二维管线图层中指定条件的对象插到三维管线图层中。返回true表示成功,返回false表示失败。其参数说明如表5所示。
表5 管线操作插入接口参数说明
6)管线操作更新接口,名称为Update_Line_Feature,负责将二维管线图层中指定条件对象更新到三维管线图层中。返回true表示成功,返回false表示失败。其参数说明如表6所示。
表6 管线操作更新接口参数说明
7)管线操作删除接口,名称为Delete_Line_Feature,负责在三维管线图层中删除指定条件的对象。返回true表示成功,返回false表示失败。其参数说明如表7所示。
表7 管线操作删除接口参数说明
8)图层刷新接口,名称为Refresh,负责刷新指定图层。返回true表示成功,返回false表示失败。其参数说明如表8所示。
表8 图层刷新接口参数说明
利用组件开发测试工具,调用组件服务,基于部分数据的三维成图效果(未优化)如图6所示;第三方应用调用效果(优化后)如图7所示;生成的图形细节如图8所示。
图6 数据成图效果
图7 应用调用效果图
图8 三维展示效果
本文在总结现有三维管线系统自动建模的基础上,以PostgreSQL为数据库管理软件,以ArcSDE为空间数据引擎,以SkyLine为三维可视化平台,利用ArcGIS Server WFS 服务开发了城市地下管线三维成图组件,提供了可供Web应用、桌面应用、移动端应用的多平台调用接口。利用该组件能更好地实现管线三维动态建模以及在线实时更新。实践表明,该组件具有以下特色:
1)人工建模与自动化建模相结合,优化处理固态模型无法准确表达的弯头、多通等空间角度多变的细节部分,整体的三维展示效果有较大提升。
2)基于Web服务的架构,可便于城市管线相关应用调用。
3)可扩展可定制管线数据种类及其相关属性信息(材质、特征等),随着城市发展可满足相应的变更需求。
4)通过预处理功能进一步检查和优化外业探测成果,提高了数据质量和三维成图速度。
5)组件直接操控空间数据库,并利用SkyLine可视化机制,实现了在线的数据更新和服务更新,无需数据更新后重新发布服务,提高了成图效率和客户体验的及时性,简化了数据更新服务的过程。