杨 文,向明明,谢邱平
(1. 中国电建集团昆明勘测设计研究院有限公司,云南 昆明 650033;2. 中国电建集团市政规划设计研究院有限公司,广东 珠海 519000)
随着信息技术的深入发展,通过数字化、信息化技术提升工程项目管理水平,促进建设行业数字化转型,已逐渐成为行业创新发展的前沿。BIM 与GIS 技术是实现工程数字化的数据基础,以BIM、GIS 模型为载体,融合项目设计阶段的几何参数、属性参数,施工阶段的造价、进度、质量、安全、验收等信息,运维阶段的设备性能等属性,为工程项目信息化提供全生命周期的信息模型,打通项目各环节数据流通渠道,形成项目数字化资产,促进工程建设行业数字化转型,并为数字孪生城市、智慧城市等建设奠定基础[1]。CityMaker 是成熟且应用广泛的国产三维GIS 平台,对二三维GIS 数据、各平台BIM 数据都具备良好的支持,在BIM 与GIS 的多源数据整合、大范围三维场景渲染等方面的性能尤其突出[2]。基于CityMaker 开展BIM 与GIS 的应用,实现工程项目数字化平台建设,是国内众多工程数字化研究的首要选择[3]。其中,基于CityMaker 的平台软件Builder,对BIM 数据进行格式转换、坐标配准、拆分合并、属性字段添加、重命名等操作,是实现BIM 与GIS 集成的首要环节[4]。然而,CityMaker 现有的BIM 模型处理工具较少,且局限性较强,难以满足实际项目需求。为有效提升BIM模型处理效率,本文结合项目实际需求,基于CityMaker开发接口,设计了开发BIM模型处理工具的技术路线,研究了常用工具开发的关键技术,形成了通用的BIM模型处理工具集。
不同BIM平台的数据转换为CityMaker数据后,其格式统一为FDB。这是CityMaker特有的三维空间数据结构,是关系型数据库FirebirdDataBase的缩写,同时表明CityMaker 的FDB 数据本质上是通过关系型数据库进行管理的。FDB数据结构分为数据源、数据集和要素类3层树形结构(图1),其中数据源与数据集都是逻辑结构上的概念,不存储具体数据,相当于文件夹的作用,一个数据源可包含多个数据集[5]。FDB 数据中的数据实体存储在最下层,即要素类中,一个数据集可包含多个要素类。要素类和数据库中表的概念一致,其本质上就是关系型数据库的一张表,包含字符串、数字、布尔等类型的字段。较为特殊的是,要素类中存在名为Geometry的二进制类型字段,用于存储模型的几何信息,这也是GIS 数据存储的通用方法,如Orable、SQLServer 数据库中均通过扩展的Ge⁃ometry字段实现对空间几何数据的存储[6]。
图1 FDB数据的3层数据结构
1)要素类整合与拆分需求。CityMaker 通过BIM插件的方式将BIM模型转换为自身平台支持的FDB格式,从而实现对不同BIM格式的统一。然而,插件转换而来的FDB格式的数据内部分类较详细,以BIM 平台Revit 为例,转换后的数据以族类别划分,如将建筑物的墙、门、窗分为不同的要素类,结构过于详细,不利于模型的整合应用,需将转换后的要素类批量合并。此外,对于已整合的FDB 格式的BIM 数据,在工程数字化平台开发过程中,基于不同的业务开发需求,需要对要素类进行拆分,如为实现基于BIM模型的进度可视化模拟,需要BIM模型与工程分部分项WBS 对应,此时就需要将BIM 模型按照WBS 进行拆分。
2)属性字段批量添加与删除需求。BIM 模型的某项重要角色是项目全过程全范围信息的载体,因此需对FDB格式BIM模型的字段进行定制化的新增与删除,如添加时间类型的计划施工时间、实际施工时间,便于在模型中存储各构件的施工进度信息,从而进行BIM4D模拟分析。
3)字段值批量设置需求。BIM 模型的构件数量庞大,如一幢普通别墅的全专业构件可能上万,构件中某些字段值可能相同或可按条件批量赋值,如在BIM4D 进度模拟中需对已施工完成的构件进行标记,就需要对相关字段值进行批量设置。
4)坐标系批量设置需求。坐标系是GIS平台整合BIM模型的标志性特征,只有在统一、真实的地理坐标系下,BIM模型才能具备模拟真实世界的空间参考基础。在实际项目中,BIM 模型个数众多,而其GIS坐标系往往相同,因此就产生了对众多模型批量设置坐标系的需求。
5)数据集与要素类重命名需求。在现有的City⁃Maker 数据处理软件Builder 中,用户只能对第一层结构(数据源)进行重命名,而数据集与要素类是FDB中检索数据的重要依据,在不同的平台开发业务需求中,经常需对二者进行重命名,如需要根据项目编码对各要素类进行命名,便于对数据进行统一的编码管理。
CityMaker 是基于Windows 开发的桌面端GIS 平台,对其进行二次开发时,首选Windows 平台下的.NET 开发环境。目前,CityMaker 开发的SDK 对于WinForm的支持优于WPF,因此本文采用基于.NET的WinForm进行BIM模型处理工具的开发[7]。技术路线如图2 所示。需要注意的是,与一般GIS 桌面程序二次开发不同,CityMaker二次开发时需将工程的输出目录设置为CityMakerConnect的安装目录或将Connect安装路径下的文件拷贝至工程的bin/Debug 路径下,才能确保程序顺利运行。此外,若需使用AxRenderControl控件显示FDB模型,则需在WinFrom初始化后,通过代码创建AxRenderControl 实例,并将其加入WinFrom的Panel等容器控件中。
图2 基于CityMaker的BIM数据处理工具开发技术路线
1)要素类整合与拆分。要素类整合工具开发的基本思路为将源要素类的每一行数据(即每个BIM构件)复制为新的IRowBuffer 实例,再将该实例通过目标要素类的遍历游标新增到目标要素类中,其核心API 除打开数据源、数据集、要素类的常用接口外,主要为ITable.Search、IFdeCursor.InsertRow 等。要素类拆分工具开发的基本思路为依据要素类某字段的唯一值,将要素类中的数据行分离为不同的FDB 数据。在新建的FDB中,需要将源数据集中的模型、材质进行拷贝,其核心API 主要为IQueryFilter、IResourceM⁃anager、IModel、IImage等。
2)属性字段批量添加与删除。属性字段批量添加工具的开发思路为首先定义需添加字段的类型、名称、别名等信息为配置文件,再通过接口按配置文件批量添加新字段,其核心API 为ITable.AddField。属性字段删除工具则是通过设定需删除字段的名称,利用接口ITable.DeleteField实现。
3)字段值批量设置。该工具可通过要素类逐行遍历和UpdateSQL 语句两种方式实现。通过实验对比发现,后者效率远高于前者。UpdateSQL 语句的实现思路为获取要素类对应的关系数据库表名,定义Up⁃dateSQL 语句,其核心API 为IDataSource.ExecuteUp⁃date。
4)坐标系批量设置。FDB 数据集中的要素类具备同一坐标系,因此数据的GIS 坐标系定义在数据集中。该工具的开发思路为定义坐标系WKT,遍历FDB 中所有数据集进行坐标系批量设定,其核心API 为ICRSFactory.CreateFromWKT、IFeatureDataSet.SpatialReference。
5)数据集与要素类重命名。该工具是BIM 数据处理过程中较常用、开发方式较简单的工具,其核心API为IFeatureDataSet.Name、IObjectClass.Name。实现界面如图3所示。
图3 数据集与要素类重命名工具实现界面
作为国产三维GIS 领域中为数不多的成熟平台,CityMaker 对多源BIM 的支持使其在工程数字化、CIM、智慧城市等领域的应用前景广阔;但其现有BIM数据处理软件所具备的工具难以满足实际应用需要;因此,基于其丰富的二次开发接口进行定制开发,是解决数据处理瓶颈的必然选择。本文结合工程项目实际需求,研究了常用工具的开发需求、技术路线和实施过程,在此基础上,可进一步开展模型批量更新、二进制设计参数解析、模型偏移、坐标转换、多格式导出、空间关系计算等高级BIM模型处理工具的定制开发,进一步深化BIM 与GIS 的集成融合,为基于BIM 与GIS 的工程数字化应用奠定良好的数据基础。