中国智能高铁主要包括装备智能、建造智能和运营智能3部分内容,我国已明确智能高铁2.0的内涵特征、体系架构及实施路径
[1]。为保持中国高铁在世界上的领先地位,建设好维护好世界上最发达的高铁网,实现“数字赋能、智慧运维”,建筑信息模型(Building Information Model,BIM)与地理信息系统(Geographic Information Systems,GIS)的融合技术成为数字铁路建设及运维的核心技术之一
[2-3],例如,基于云计算与WebGIS的铁路运营监控
[4]、BIM与3DGIS的集成技术
[5]、铁路一体化信息集成平台
[6-7]等。接触网是电气化铁路的关键设备,其施工质量直接关系铁路的安全运营和社会经济效益
[8]。随着高铁接触网BIM模型文件体量变大会产生海量数据
[8-9],以普通商用BIM软件构建的接触网BIM模型通常超过数十Gb。在桌面端Web浏览器应用场景下,加载渲染Gb级别的BIM模型数据需要占用大量系统内存和显卡计算资源,存在加载速度慢和渲染卡顿的问题,严重影响BIM技术在高铁工程项目中的应用。因此,BIM模型轻量化和快速加载渲染问题亟待解决。
本文针对高铁接触网BIM模型数据特点,结合Web浏览器BIM场景三维加载渲染技术现状,研究面向接触网BIM模型的数据轻量化及加载渲染优化算法。在数据轻量化方面,提出按照“构件参数属性”和“三维几何表达”2个维度对BIM数据进行剥离的轻量化算法,减小模型文件大小,减少网络传输数据体量;在加载渲染优化方面,提出结合树形数据结构(K-Dimensional Tree,KD树)对长大干线模型空间进行划分和索引,提高BIM三维模型数据加载和渲染效率。通过数据轻量化和加载渲染优化,从整体上解决高铁接触网模型在浏览器端进行文件网络传输和三维场景加载渲染的低效问题。
1 接触网BIM模型数据轻量化关键算法
针对BIM模型数据轻量化,国内外学者已做了大量相关研究工作,主要算法包括基于网格简化算法(Quadic Error Metrics,QEM)的复杂构筑物BIM单体模型轻量化,面向线性工程特点的BIM重复构件图元合并算法
[10-20]等。当前,BIM模型数据在创建过程中大多以文件格式存储,其中构件参数属性数据与三维几何表达数据耦合在文件中,导致BIM模型数据在网络传输中无法按需进行传输和加载。同时,商业化BIM文件大多对数据采用加密机制,导致用户只能通过设计软件厂商授权二次开发才能进行BIM数据的提取应用。此外,高铁接触网BIM模型相对于传统建筑BIM模型具有长大干线工程特点,需要在大尺度地理空间内进行数据的组织和管理,这也加大了BIM模型数据轻量化和加载渲染的难度。
1.1 接触网BIM模型属性数据轻量化算法
构件作为BIM模型的基础组成单元,是进行BIM模型轻量化的主要对象。针对BIM模型构件参数属性数据与三维几何表达数据耦合封装在同一文件进行存储的现状,并结合数据存在大量重复的特性,以BIM数据共享协同及应用在项目中的实际需求为出发点,从数据源头进行轻量化和标准化治理,用以满足各类应用及其场景对BIM模型属性信息的要求。
通过对铁路行业编码标准
[10]进行解析,为高铁接触网BIM模型构件进行标准化赋码。高铁接触网BIM模型构件属性信息提取及赋码流程如
图1所示。
具体实施过程如下。
(1)文件读取。读取BIM模型文件。
(2)建立构件集合。遍历BIM模型中每个构件,形成构件集合。
(3)提取构件集合属性。通过调用读取BIM软件2次开发接口,对构件集合进行属性提取。
(4)构件编码与属性存储。获取构件全局唯一编码(Identity Document,ID)和属性信息,并形成键-值存储结构。通过遍历ID集合中的数据标识索引对应构件,提取对应的基础类型信息、材质品牌等构件参数属性信息,将以上数据信息存储到键-值结构,并存储到数据库中。判断同类构件属性是否在已存储,依照提取的参数属性数据对已经存储数据库中数据集合进行比对,对已经存在的属性集合信息将不再重复存储,流程则循环到下一个构件依上述进行重复循环处理,若信息不存在,则将该构件ID与已存在参数属性集合存储到数据库并返回构件全局ID与存储属性所在数据表中的自增ID,以便进入下一个流程进行标准赋码,从而保障该构件属性信息被完备提取存储。
(5)输入编码标准规则文件。导入国家或行业标准规范形式的编码文件,为后续构建标准编码映射器提供输入依据。研究时以中国铁路BIM联盟发布的《铁路工程信息模型分类和编码标准1.0》
[10]版本为依据(见
表1)。
(6)构建构件标准编码映射器。基于输入标准规则文件,进行形式化解析,形成具有语义特征的标准编码映射器。映射器采用分类编码形式化对象表示法JSON(JavaScript Object Notation,JavaScript对象表示法)格式进行描述。
(7)构建编码规则算法。通过读取编码规则构建编码规则算法,对遍历当前构件名称信息与编码规则集合中的类别名称进行字符串匹配,基本程序如下:如果匹配中包括“包含”“等于”逻辑关系,那么将构件与对应的编码进行关联,实现构件的标准化编码;否则,获取该构件下一级类别信息,依次迭代逐层判断递归至该构件的分类最终节点。如果该类别仍未找到分类编码,那么将构件归入未分类集合,并进入后续人工处理编码流程。以接触网“防断式中心锚结”为例,描述构件分类描述映射规则如
图2所示。
1.2 接触网BIM几何实例合并及转换算法
1.2.1 接触网BIM几何实例合并算法
高铁接触网一般为数百公里长大干线工程,一般性接触网BIM模型中的相同型号零部件数量可达到数10万个。这些零部件模型在三维几何表达信息上是一致的,因此可通过构件实例合并算法进行合并。BIM构件实例合并的目的是无须为大量重复相同的构件都保存1份完整的数据。重复构件可以由单一的“模板构件”与“实例”构件共同表示。模板构件包含该类型构件的所有三维几何表达的通用共享数据(如几何形状、材质等),而实例构件只需包含与本实例相关且与模板共享数据不同的特例化数据(如位置、角度等)。通过将大量重复构件合并,将重复表达的三维几何用“模板构件”进行表达,并兼顾保留构件的特例“实例化”数据,可有效降低BIM数据尺寸,对于BIM数据存储与网络传输具有重要意义。
构件实例合并导出算法,输入为BIM模型的构件集合,输出为合并后的构件实例集合。具体实施过程如下。
(1)初始化。创建1个空的集合(称为“合并集合”),用于存放已经合并的构件实例。
(2)属性匹配。对BIM模型中的每1个构件进行遍历。
(3)信息提取。提取当前构件的参数属性数据信息和三维几何表达信息。
(4)实例查找。在“合并集合”中查找是否存在具有相同参数属性数据和三维几何表达信息的构件实例。
(5)实例判断。如果构件实例存在,更新该构件实例的数量和位置信息;如果不存在,将当前构件作为1个新的构件实例添加到“合并集合”中。
(6)位置信息处理。对于每一个在“合并集合”中的构件实例,存储其所有实例的位置信息。信息存储可通过多种方式完成,例如存储每个实例的中心点坐标。
(7)返回实例数据集合。包含合并后的构件实例及其位置信息。
1.2.2 接触网BIM三维几何表达数据转换算法
3D Tiles是一种三维地理空间数据创建、可视化和分享的开放标准,它为多种场景和数据提供高效的数据组织与存储方式
[11]。3D Tiles包括瓦片集数据(tileset.json)和瓦片数据(tile),其中瓦片数据包括多种数据类型,有批量三维模型(b3dm)、实例三维模型(i3dm)、点云模型(pnts)、矢量模型(vctr)、复合数据(cmpt)等。i3dm格式文件作为3D Tiles瓦片数据的其中一种类型,主要用于表示大量的、相似的三维模型物体实例化表达和存储,i3dm文件仅通过存储1个单一实例模型与该实例的空间位置变换矩阵即可实现数据的压缩和高效存储。i3dm文件格式数据结构见
表2。
瓦片数据i3dm文件格式的三维模型实例化是指通过在要素表中存储每个实例的语义信息(如位置、旋转和缩放)实现对单一模型多个实例变换矩阵的存储,然后使用这些信息为每个实例生成其在3D空间中的确切变换矩阵。i3dm可以被组织成1个3D Tiles数据集。每个i3dm代表1个空间区域内的所有模型实例。3D Tiles数据集是1个树形结构,每个节点都可以包含1个或多个i3dm。通过这种方式,可在不同的空间尺度上访问和渲染模型实例。
结合瓦片数据i3dm的高效三维模型实例化数据组织方式,基于上节1.2中的构件实例导出算法,结合3D Tiles数据格式特点,对BIM模型三维几何表达数据进行转换,形成适用于Web场景下的大规模铁路BIM模型的渲染和数据管理。研究面向3D Tiles标准的构件实例转换算法,其中算法输入为合并后的构件实例集合,输出为i3dm格式数据。具体实施过程如下。
(1)准备合并后的构件实例集合数据。
(2)准备1个包含所有主构件及其相对位置索引的数据结构。
(3)创建初始i3dm数据集,创建数据集的根节点,并为其添加必要的元数据(例如空间范围、级别等)。
(4)进行数据转换,将每个主构件的三维几何表达数据和参数属性数据信息转换为GLB格式。
(5)创建空间位置,通过主构件的空间位置索引确定复制主构件的相关子节点,并用地址链接与主节点进行关联。
(6)创建子节点,在上步确定的子节点上复制主构件,并根据空间位置索引进行适当的空间变换。
生成i3dm文件,将所有生成的数据打包成1个或多个i3dm文件。
2 接触网BIM模型数据加载渲染优化算法
高铁工程具有空间里程长及模型体量大的特点,从源头对接触网BIM模型数据进行压缩与几何优化,虽然能减轻Web浏览器端传输与加载压力,但是对模型进行全部加载时Web浏览器端仍将难以支撑大体量全线模型数据的流畅加载和渲染。为解决长大干线工程大规模数据的访问效率和渲染速度,结合接触网工程长大干线工程特点,在地理空间场景下进行空间划分和索引研究。
常见的空间划分和索引算法包括R-Tree
[12],Quard-Tree
[13]以及面向一维空间数据处理HBase
[14]的Geohash算法等,基于时空索引的算法包括面向坐标查询的3DR-Tree算法
[15],面向时间查询的HR-Tree
[16]和MV3R-Tree算法
[17]等,基于轨迹索引的算法包括TB-TreSe
[18]和SEB-Tree算法
[19]等。以上算法是面向点状应用场景下的不同数据查询,并不适用于高铁工程长大干线工程大规模数据的查询和应用。
2.1 基于KD树的空间划分算法
在高铁长大干线工程大规模数据的可视化中,通过对大规模三维模型数据的有效地组织和管理,实现数据的高效查询和加载。空间划分算法将高铁工程所在地理空间划分为多个子空间,每个子空间可以包含一部分模型实例。通过空间划分,将高铁长大干线工程大规模的三维模型数据划分为多个小规模的数据,从而提高数据的访问效率和渲染速度。
KD树是一种用于在多维度空间中存储数据的数据结构,为二叉搜索树的扩展。KD树中,每个节点都定义了1个超平面,该超平面将空间划分为2个空间。KD树的主要优点是可以适应数据的空间分布和维度的重要性。KD树划分结构示例如
图3所示。
对于高铁接触网这种平面延伸结构,接触网工程的BIM模型数据主要在其中1种维度(纵向)上进行布置,该维度的跨度远大于另外2种维度(垂向和横向)。在垂向和横向维度上,采用传统的八叉树和四叉树结构对空间进行均匀地划分,可能会产生与BIM模型几何数据无关的空白节点或含少量数据的节点,造成存储空间的浪费和查询效率的下降。
在接触网工程中,线路里程数据和接触网支柱信息是重要的空间描述参数。其中线路里程数据可以提供铁路线的方向和位置信息,接触网支柱信息可以提供相对于线路中心的位置信息。使用这2个空间描述参数进行构建KD树空间分割,具体方法如下。
将高铁线路里程数据与接触网支柱信息作为2个划分维度。在构建KD树时,依据设定的空间划分条件,根据线路里程数据与接触网支柱信息将数据集分为多个子集,然后在每个子集上逐级迭代细化,直至每个子集的大小满足空间划分要求。
依照以上方法,KD树中的每个子集节点都将与铁路空间逐一对应。
2.2 基于KD树的空间索引算法
在地理信息系统和计算机图形学中,空间索引是一种常见数据结构,可以对空间数据进行组织和管理。空间索引的主要目标是提高空间查询的效率,如进行模型加载时需要快速查询同类BIM构件,通过空间索引满足高效查询,从而提高大规模场景下数据的访问速度和渲染效率。
结合3D Tiles数据结构特点,在KD树空间划分基础上对接触网工程中的大规模BIM数据进行空间索引。以主要数据模型文件格式i3dm为例,在3D Tiles结构中的每个i3dm瓦片数据都具有1个空间范围,其定义了瓦片数据的位置和大小。此外,每个i3dm瓦片数据都有1个父瓦片和多个子瓦片,形成1个树状结构。这个树状结构可以被看作是一种空间索引,用于组织和访问3D数据。
研究基于KD树的空间索引算法,其中输入为KD树空间划分数据集,输出为空间索引结构。具体实施过程如下。
(1)初始化。创建1个空的3D Tiles数据集,这个数据集将包含所有的瓦片数据。
(2)数据映射。映射KD树节点到3D Tiles瓦片数据中,通过遍历KD树的每一个节点,创建与节点对应的3D Tiles瓦片,且保持该瓦片空间范围与KD树节点的空间范围一致。
(3)构建关联关系。生成3D Tiles瓦片的父子关系,将KD树中父节点和子节点关系映射到3D Tiles瓦片中,具体对应规则为KD空间分割中的父子节点对应的3D Tiles父子瓦片。
(4)返回结果。通过进一步填充3D Tiles数据,返回KD树的每个节点及其与该空间区域相关的数据。
通过基于KD树的空间索引算法,输入KD树划分的空间数据后再返回空间索引结构3D Tiles数据结构,可以将KD树的空间划分结构和数据映射到3D Tiles的空间索引中,当需要加载或查询某个高铁空间区域的数据时可以通过KD树快速定位到该区域对应的3D Tiles瓦片,而无须遍历所有的瓦片,从而提高大规模BIM模型数据场景下的加载效率。
3 实例验证评估
选取某高铁接触网工程项目对构件编码标准化、数据轻量化、数据加载渲染优化3个方面进行应用有效性验证。
3.1 构件编码标准化实例应用
通过分类映射规则对构件进行标准化编码,并将构件与编码信息存储到对应的数据库表中,从而实现对BIM构件的标准化治理。通过构件赋予的编码信息,可以实现构件的专业分类与通过编码进行同类构件的快速检索,从而满足BIM数据的应用、管理与分享。分类编码对构件自动赋码实例如
图4所示。
3.2 数据轻量化验证
选取天津—大兴铁路全线、固安—永清南区段的BIM模型的轻量化文件总体压缩比进行测试验证,具体指标对比见
表3。
在实际应用中,接触网BIM模型的构件几何实例数量由合并前约85 600个减少为约为9 200个。通过
表3可以看出:不同专业BIM模型对比结果表明,接触网BIM模型的文件较大、重复率高;采用几何实例合并算法进行轻量化后,接触网BIM模型文件只为原来大小的约8.8%,同时路桥隧、通信、变电等专业BIM模型只为原来大小的约30%,取得了较好的压缩效果,这为快速加载整体模型奠定了基础。
3.3 数据加载渲染优化验证
基于Web应用场景下,针对转换后的3D Tiles格式数据,采用基于KD树的空间划分与索引渲染优化方法,选取BIM模型网络传输时间缩短率((优化前加载时间-优化后加载时间)/优化前加载时间)和渲染帧率提升比(优化后渲染帧率/优化前渲染帧率)2项指标进行对比。选取天津-大兴铁路项目的区间(固安—永清南)与全线(天津—大兴)进行验证,对比结果见
表4。
通过
表4可以看出:通过基于KD树的空间划分和索引方法进行数据组织传输后,固安—永清南区段网络传输时间时间缩短率92.9%,天津—大兴区段网络传输时间时间缩短率99.3%,整体传输加载等待时间优化得到较大提升,实现全线模型秒级传输。
在渲染优化帧率提升方面,原先全线数据因模型体量较大无法加载,帧率低至1帧 · s
-1或卡顿崩溃。通过基于KD树的空间划分与索引方法进行数据组织加载后,帧率提升到流畅操作18帧 · s
-1。在固安—永清南区间段相对优化前渲染帧率提升500%,而天津—大兴区段多专业渲染帧率提升达1 800%。这表明,上文提出的轻量化和加载渲染优化方法能够显著提高大规模BIM模型在Web浏览器中的渲染性能,满足工程应用需要。基于KD树的高铁工程空间划分示意图如
图5所示。
4 结语
针对高铁接触网BIM模型数据特点,结合Web浏览器BIM场景三维加载渲染技术现状,提出面向接触网工程模型的数据轻量化和渲染优化方法。通过构件参数属性数据轻量化治理、几何实例合并与转换算法、基于KD树的空间划分与索引算法等关键技术,解决高铁接触网模型在浏览器端进行文件网络传输和三维场景加载渲染的低效率问题。
研究成果通过某区段和全线高铁接触网工程项目进行验证表明,提出的方法能够有效减少BIM模型文件体量,提高网络传输效率和Web浏览器渲染性能。研究成果在高铁接触网工程项目中得到应用,为数字化设计、智能建造、智能运维等提供了技术支持。未来工作中,将进一步研究优化算法,应用于高铁站后四电工程BIM模型轻量化以及快速加载渲染优化,推动BIM技术在高铁工程中的深入应用。
中国中铁股份有限公司重大专项课题(2021-专项-07)