潘 飞 张社荣
(天津大学水利工程仿真与安全国家重点实验室 天津 300350)
目前,BIM与GIS集成已经成为当前学术界和工业界的前沿技术。从GIS和BIM各自的特点来看,GIS更加注重外部宏观环境,而BIM更加注重内部微观信息。因此将微观领域的BIM信息和宏观领域的GIS信息进行融合,既可以发挥各自优势,又可拓展新的应用领域[1]。然而,大多数应用者或研究者主要停留在软件互操作层次或者数据模式层次。软件互操作层次指BIM和GIS程序的双方通过理解彼此支持的文件格式或使用集成软件从双方读取文件来集成异构数据。例如Arcgis使用数据互操作扩展模块支持 BIM/IFC 源的数据[2]。另一方面,诸如Autodesk InfraWorks之类的组合方法通过合并来自CityGML、IFC以及多种文件格式或数据库源的数据来创建基本模型[3]。这种方式需使用昂贵的专业软件,而且由厂商集成,用户无法定制。数据模式层次主要通过解决几何和语义信息之间的差异来集成异构的模式模型[4-6]。在这种情况下,用户必须熟悉底层数据模式,这对于普通用户来说是非常复杂的。这种方法需完成巨大的转换工作量,而且随着数据标准的扩展更新,维护工作也十分繁重。
随着计算机技术及网络技术的不断发展,异构平台之间数据互联需求的不断增加,Web Service技术应运而生[7]。它能够实现不同平台、不同语言之间相互交换数据,为BIM信息与GIS信息的共享与集成提供了新的解决方案[8-9]。与此同时,新一代3D图形标准WebGL的发展也带动了网络三维可视化技术的发展[10-11]。无论是异构数据源的交换与集成,还是其加载速度和渲染性能,都使两种不同邻域信息的融合变得更加可行和便捷。
土木水利工程中常常涉及较大单体工程、长线工程以及大规模区域性工程,工程管理中既对区域宏观管理有要求,也对单体精细化管理有一定要求;同时,对于土木水利工程整体的数据管理来说,宏微观信息的融合可以为后续数据的处理、分析、挖掘及信息共享提供统一的数据平台。因此实现跨领域的空间信息和模型信息的集成变得十分重要。本文主要基于3D WebGIS,通过服务接口传入BIM模型信息数据,以WebGL为容器建立了一套融合建筑模型信息以及地理空间信息的土木水利工程三维交互场景,实现了BIM信息与GIS地理信息的集成、可视化分析与信息查询、对象级数据管理以及资产设施管理等基本功能,为土木水利工程各阶段的建设管理提供了技术支撑。
本文中采用基于WebGL的3D WebGIS作为容器,首先通过调用地形及地图服务接口,建立GIS地理信息环境;然后在此场景的基础上通过调用BIMServer的Web Service接口,加载BIM服务器中的BIM模型信息,进而将BIM和GIS信息融入到统一的WebGL环境中,实现原理如图1所示。
图1 3D WebGIS中BIM数据集成原理
在上述方案中,BIM服务器由IFC解析组件、数据库以及数据访问接口组成。IFC解析组件负责解析IFC文件,建筑物的解析层次结构按“项目-场地-建筑-楼层-领域构件”进行,对于每一层次结构,分别建立对应数据结构表将解析后的IFC数据存入数据库中,然后建立Web Service接口,用于通过Web的方式从数据库获取IFC数据。GIS服务器由数据库、发布程序和地形地图服务接口组成。地形地图服务接口负责获取地形地图数据。最后通过WebGL容器对模型的几何、材质数据、地形地图数据进行统一的图形绘制。在WebGIS中调用Web Service接口时,通过传入LOD级别参数、模型所在球面坐标参数以及当前视点与建筑物的距离参数,分层次传输IFC数据,以实现模型的LOD动态加载,同时保证整个融合环境的流畅性。
在WebGL中,几何细节使用Primitive(图元)类型绘制并存储在缓冲数组中。本文中BIM模型文件采用标准IFC格式。IFC模型的加载和显示主要包括5个步骤:(1) 准备缓冲数组,包括顶点缓冲、索引缓冲、法向量缓冲和色彩缓冲;(2) 读取IFC模型;(3) 解析IFC文件;(4) 将解析结果写入缓冲数组;(5) 在WebGL环境中绘制模型。
其中,步骤(2)至步骤(3)由统一BIMSie[12]接口完成。步骤(3)至步骤(4)通过编写JavaScript脚本,使用Ajax异步数据传输技术实现数据的传输,可通过JSON或Binary格式进行数据交换。其中代码1显示的是步骤(4)读取IFC模型数据并封装几何体数组的部分代码。
代码1步骤(4)部分代码
//读取WebSocket消息
Function readObject(data, geometryType)
{
//图元类型为三角形
if(geometryType==PrimitiveType.TRIANGLES)
{
var geometryDataOid = data.readLong();
var nrIndices = data.readInt();
var indices = data.readShortArray(nrIndices);
//索引
data.align4();
var nrVertices = data.readInt();
var vertices = data.readFloatArray(nrVertices);
//顶点
var nrNormals = data.readInt();
var normals = data.readFloatArray(nrNormals);
//法向量
var nrColors = data.readInt();
var colors = data.readFloatArray(nrColors);
//色彩
}
}
//封装的几何体
var geometry = new Geometry({
attributes: {
normal: new GeometryAttribute({
componentDatatype: ComponentDatatype.FLOAT,
componentsPerAttribute: 3,
当前,我国大多从事水产养殖的人员在从业之前并未接受过专业的水产养殖培训,对水产病害情况、相关的用药方法和标准等不够了解,也缺乏科学正确的水产动物病害预防知识,所以只能将用药作为病害防治的唯一途径。水产动物在养殖过程中发生病害,养殖人员也无法对其病情和病理进行正确诊断,更何谈对症下药?因此,盲目用药成为水产养殖过程中的普遍现象,不仅可能造成水域污染,而且使得病菌的耐药性不断增强,致使水产动物的病害防治用药量逐年增加,从而形成恶性循环。
values: new Float32Array(normals)
}),
//法向量
position: new GeometryAttribute({
componentDatatype: ComponentDatatype.DOUBLE,
componentsPerAttribute: 3,
values: new Float64Array(vertices)
}),
//顶点
colors: new GeometryAttribute({
componentDatatype: ComponentDatatype.FLOAT,
componentsPerAttribute: 4,
values: new Float32Array(colors)
})
//色彩
},
indices: indices,
//索引
//图元类型
primitiveType: PrimitiveType.TRIANGLES,
//包围球
boundingSphere: BoundingSphere.fromVertices(vertices)
})
坐标转换的问题实际是坐标系原点之间的换算。由于地理坐标系和局部坐标系都是右手坐标系,两个坐标系之间的转换矩阵Tr可用旋转矩阵R和平移向量T来描述[13]。
假设,BIM模型中某一个坐标点P0(x0,y0,z0),其局部坐标原点将放置在位置P(Longitude, Latitude, Height)。那么,根据地理坐标转换为笛卡尔直角坐标,可以将P表示为P1(x1,y1,z1)。因此坐标原点从球心移到P1需要进行旋转和平移操作。假设局部坐标的Z轴垂直于地表,局部坐标的Y轴指向正北,θx、θy、θz分别是旋转矢量与X轴、Y轴和Z轴的夹角,则各轴的旋转矩阵Rx,Ry,Rz可分别用4×4的齐次坐标矩阵表示。然后再通过平移矩阵T将球心原点到平移点P1,那么P0坐标就和当前的坐标系一致,同理可求由局部坐标系转为球心坐标系的转换矩阵。代码2和代码3分别显示了旋转矩阵Rx和平移矩阵T的部分实现代码。
Tr=RT
(1)
R=RzRyRx
(2)
式中:
Tx=x1Ty=y1Tz=z1
代码2旋转矩阵
var rotate_x =Math.toRadians( );
//转成弧度
var quat_x = Quaternion.fromAxisAngle(Cartesian3.UNIT_X, rotate_x);
//为围绕这个X轴旋转θx的四元数
var rot_mat_x = Matrix3.fromQuaternion(quat_x);
//为根据四元数求得的3×3旋转矩阵
var Rx = Matrix4.fromRotationTranslation(rot_mat_x, Cartesian3.ZERO);
//为4×4旋转变换矩阵,这里平移为(0,0,0),
//用Cartesian3.ZERO表示
代码3平移矩阵
var P1= ellipsoid.cartographicToCartesian(Cartographic.fromDegrees(Longitude, Latitude, Height));
//得到局部坐标原点的全局坐标,即
var T = Transforms.eastNorthUpToFixedFrame(P1);
//为局部坐标的Z轴垂直于地表,局部坐标的Y轴指向正北的
//4×4平移变换矩阵
由于可视化过程中涉及到海量信息的显示,因此模型的渲染至关重要。与GIS不同,IFC模型中并不支持LOD。因此为了实现模型渲染时流畅的效果以提高用户体验,本文定义了IFC模型的传输规则。IFC标准中大约有超过700个实体,大多数具有几何表达的实体分布在共享层和领域层[14]。在层级0显示模型的最低层次,以项目场地为主,主要涉及IfcProject和IfcSite;层级1是所含建筑或楼层的包围盒,涉及的实体为IfcBuilding和IfcBuildingStorey;在层级2和3中,这些IFC类型是代表建筑元素的主要实体,构成建筑物的建筑结构,层级2主要为外部元素,如IfcWall、IfcBeam、IfcColumn和IfcRoof,层级3主要为内部部分元素,如IfcWindow、IfcDoor、IfcSlab及IfcStair。最后第4层级中,IFC类型是更详细的领域实体,如建筑内部具体的设施和其他特定领域的元素。图2显示了各级IFC模型的渲染情况。
图2 各层级IFC模型的渲染
在统一交互环境中主要有两种领域的信息:GIS领域的地理特征要素信息和BIM领域的建筑模型信息。根据它们各自的特性,信息的查询应分开进行考虑。
GIS地理特征信息的显示主要采用基于矢量的数据模型,这些特征可以通过几何类型、属性或空间参考分类为河流系统、道路、管道等。在本研究中,使用Geojson用于表示简单的地理特征,它是一种基于JavaScript对象符号(JSON)的开放标准格式,同时,它可以轻松地存储在数据库中,以便在文档和查询之间进行数据交换。
由于上述地理特征都是2D形状,所以本文中所涉及的3D特征主要是指BIM模型。当用户进行选择动作时,将返回不同的特征类型(图元或模型),如图3所示。前者GIS特征,后者为BIM模型。一旦特征类型已知,信息显示变得容易。GIS地理特征信息和BIM对象的属性将被分别检索并显示在信息窗体中。其中,一种开放BIM查询语言BIMQL[15]被引入到BIM建筑信息模型的信息检索中。
图3 GIS特征和BIM模型的不同表达类型
本文中原型系统采用B/S架构进行设计。系统自下而上分为3个层次,分别为数据层、应用层和表示层,如图4所示。
图4 原型系统总体架构设计
(1) 数据层位于底层,主要关注数据的存储和访问。数据存储部分由BIM模型数据库、地理空间数据库、关系数据库和文档数据库组成。数据通过诸如数据库访问驱动、Web服务接口以及由开放地理空间联盟(OGC)提出的开放标准(例如,WFS,WMS)等来进行访问。
(2) 应用层包含许多使用PHP语言编写的Web应用程序。基于各种引擎或服务接口构建的各种功能应用(例如,数据可视化和查询,设施管理等)是框架的关键部件,构成了系统架构的真正核心。
(3) 表示层是指为最终用户提供数据可视化、交互式查询和操作的用户界面。作为最外层,它采用HTML5、JavaScript和CSS进行开发,可以在支持WebGL的Web浏览器(如Google Chrome、Mozilla Firefox、Safari和Opera)上显示3D内容。
该原型系统主要使用开源软件和遵照开源规范进行开发。根据使用目的的不同,将所使用的工具软件分为三种主要类型:预处理工具、客户端工具和服务器端工具。预处理工具主要用于从地理空间数据库创建地图和地形数据,以及从Revit模型转换IFC文件,包括Cesium Terrain Builder(CTB),GDAL开源栅格空间数据转换库和Revit导出IFC插件工具。服务器端包括一个HTTP服务器、IFC服务器和GIS服务器,分别为WampServer、BIMServer、GeoServer和Cesium Terrain Server(CTS)。客户端Web应用程序基于Cesium库开发,可以通过支持WebGL的浏览器访问。表1显示了本文中使用的主要开源软件和服务列表。
表1 开发工具的详细信息
为满足系统的要求,输入BIM模型必须为没有错误的IFC文件。在本研究中,BIM模型通过Revit 2014版IFC导出插件转化为IFC格式。地形原始数据由中国科学院计算机网络信息中心(http://www.gscloud.cn)提供。使用CTB创建了中国云南省的地形数据,并通过CTS进行发布。地图数据由谷歌WMS接口服务提供。图5为3D WebGIS中构建的图像和地形模型,网格最小分辨率为256×256。
图5 地形影像模式和线框模式
3.4.1 可视化与查询功能
由于WebGL的支持,客户端能够进行各种图形可视化展示,包括BIM建筑模型、地形和各种专题地图数据。Cesium本身提供了几个自带的功能进行3D导航,例如缩放、平移、旋转和特殊动画功能,另外还提供基于时间动态可视化,允许用户创建时间驱动的动态场景。查询功能采用双向交互机制,通过单击对象或特征来显示语义信息,或通过查询这些对象或特征的记录或属性,然后视图中高亮突出显示。
3.4.2 对象级数据管理
对象级数据管理是BIM的优势。该功能确保平台能够清楚地显示基础物理设施的层次结构,并直接基于对象进行数据维护。此外,用户可以执行隐藏、隔离、显示、透明等操作。图6所示为水轮机构件以及其工作时实时状态参数查看。
图6 水轮机构件的实时属性信息查看
3.4.3 分析工具
根据土木水利工程项目的实际需要,客户端提供基本的分析功能。本文的研究中,开发的功能包括:(1) 插值分析,用于空间离散数据的插值计算;(2) 缓冲区分析,用于计算某个因子的影响范围;(3) 网络分析,用于路径选择、网络流量分析等;(4) 安全监测分析,用于实时查询和分析土木水利工程安全监测数据。图7展示了测试平台中的部分分析功能。
图7 原型系统的部分分析功能
3.4.4 资产设施管理
BIM和GIS的集成为资产设施管理提供了理想的工作环境,能够使模型、属性、记录和地理位置信息统一在一个环境中,从而为资产设施管理提供一致、完整和可靠的信息。通过本功能,用户可以查询相关设备信息,包括设备状态、用户手册和维护记录。同时可以进行设备养护的计划编制、工单派发以及台账记录(图8),大大提高了工作效率。
图8 设施维护任务工单派发
GIS和BIM的融合可以为土木水利工程领域提供地理信息数据支持和三维信息模型表达支持,以及在宏微观领域的各种分析功能,是未来该领域努力的方向之一。针对几何可视化和坐标变换、面向领域的信息查询和模型渲染三个关键问题,本文提出了一种在3D WebGIS环境中整合和管理BIM数据的方法,并基于开源工具开发了原型测试系统。测试案例显示了将BIM数据集成到3D WebGIS的进行土木水利项目管理的可能性和优越性。但是,研究只是初步的可行性探索。首先,只考虑了现有的BIM模型的复用,而没有考虑GIS领域中现有的CityGML模型的集成。其次,基于本文架构建立的原型系统只是用作可行性测试研究。对于具体项目,还需根据工程需求建立详细的应用层功能架构。最后,整个测试环境基于Web,数据流较大时的传输效率和流畅性还没有得到充分的解决,需要进一步研究以改善结果。
[1] 李德超,张瑞芝.BIM技术在数字城市三维建模中的应用研究[J].土木建筑工程信息技术,2012,4(1):47-51.
[2] 彭志兰,高惠瑛,贾婧.基于GIS和BIM联合应用的三维数字小区建模[C]//Proceedings of the 7th Conference on Engineering and Business Management.Wuhan:Scientific Research Publishing,2016:70-75.
[3] 任晓春.铁路勘察设计中BIM与GIS结合方法讨论[J].铁路技术创新,2014(5):80-82.
[4] 汤圣君,朱庆,赵君峤.BIM与GIS数据集成:IFC与CityGML建筑几何语义信息互操作技术[J].土木建筑工程信息技术,2014,6(4):11-17.
[5] 朱亮,邓非.基于语义映射的BIM与3D GIS集成方法研究[J].测绘地理信息,2016,41(3):16-19.
[6] 李晓明,王伟玺,郭晗,等.集成建筑信息模型的建筑报建核查系统[J].测绘科学,2016,41(6):148-152.
[7] W3C.Web Service architecture[EB/OL].2004-02-11.[2017-10-12].http://www.w3.org/tr/ws-arch.
[8] 王玮.基于Web Service的BIM项目地理信息解决方法[J].铁路技术创新,2014(5):89-91.
[9] 薛梅,李锋.面向建设工程全生命周期应用的CAD/GIS/BIM在线集成框架[J].地理与地理信息科学,2015,31(6):30-34,129.
[10] 方路平,李国鹏,洪文杰,等.基于WebGL的医学图像三维可视化研究[J].计算机系统应用,2013,22(9):25-30.
[11] 左正,胡昱,段云岭,等.基于第5代HTML标准的拱坝工程三维可视化网络平台[J].计算机辅助设计与图形学学报,2014,26(4):590-596.
[12] National Institute of Building Sciences.BIM Service interface exchange (BIMSie)[EB/OL].2014-01-10.[2017-10-12].http://www.nibs.org/?page=bsa_bimsie.
[13] Kang T W,Hong C H.A study on software architecture for effective BIM/GIS-based facility management data integration[J].Automation in Construction,2015,54:25-38.
[14] 成于思,李启明,成虎.IFC数据在关系数据库上的实现研究与应用[J].计算机应用与软件,2014,31(11):33-34,44.
[15] Mazairac W,Beetz J.BIMQL-An open query language for building information models[J].Advanced Engineering Informatics,2013,27(4):444-456.