基于IFC标准的地质模型数据存储研究
2019-04-26田勤虎
张 峰,田勤虎
(1. 中交第一公路勘察设计研究院有限公司,陕西 西安 710075;2. 陕西省地震局,陕西 西安 710068)
0 引言
近年来,建筑信息模型(BIM)在世界各国得到广泛认可,BIM技术的发展与应用正引发一场工程界的重大变革。BIM是一种贯穿于建筑全生命期的三维数字技术,以可视化、虚拟化、协同、分析等特点,成为工程项目中的一种关键技术[1-2]。住房和城乡建设部《2016—2020年建筑业信息化发展纲要》中明确提出,“在工程项目勘察中,推进基于BIM进行数值模拟、空间分析和可视化表达,并推广基于BIM的协同设计,实现多专业间的数据共享和协同”[3]。工程地质作为建筑、公路、铁路、水利水电等基础设施工程建设的重要组成部分,其重要性不言而喻。但目前关于工程地质方面BIM技术的研究很少,特别是工程地质模型数据的存储。
工业基础类(Industry Foundation Class,IFC)标准是一种国际通用数据标准,由Building SMART负责,一直在不断更新和完善。最新IFC4 ADD2标准在核心层中定义了土木工程的抽象概念:土木单元(Ifc Civil Element)和土木类型单元(Ifc Civil Element Type)。由韩国建设技术研究院(KICT)研究的《Development of Information Model Standard and Verification Technique for Infra BIM》和我国铁路行业发布的《铁路工程信息模型数据存储标准》中只详细规定了道路、轨道、路基、桥梁、隧道等专业的数据存储,均未详细规定地质专业信息模型的存储,这将对基础设施项目在设计、建设和运营时期BIM模型的交换产生直接影响[4-5]。
基于现有IFC标准,研究IFC标准的体系框架和扩展方法,并针对地质模型的特点,提出地质模型数据存储的实体定义。通过开发Smart Geology地质软件平台对定义的地质实体进行验证。
1 IFC标准现状及扩展方法
1.1 现状
IFC标准是一种开放的面向对象的建筑数据模型存储与交换的国际标准,可解决各应用系统间的数据交换问题,做到支持建筑物全生命周期的数据交换与共享。正因如此,IFC标准是目前对建筑物信息描述最全面、最详细的模型数据存储标准,全球有100多款工程软件支持IFC标准。
IFC标准充分应用了面向对象的分析和设计方法,设计了一个具有可扩展性、模块化的总体框架。IFC总体框架分为4个层次,从下到上依次为资源层、核心层、共享层和领域层,每个层次内又包含若干模块,每个模块内包含若干实体。IFC体系架构见图1。
(1)资源层位于IFC架构最底层,定义了一些基本概念和对象,如材料资源(Material)、几何模型资源(Geometric Model)、约束资源(Constraint)、属性资源(Property)和成本资源(Cost)等。资源层不依赖其他层而独立存在,但可被高层次对象调用。
图1 IFC体系架构
(2)核心层位于I F C架构的第二层级,定义了IFC对象模型的基本结构和大部分的抽象观念,包含了基本核心(Kernel)和延伸核心(Core Extensions)两级抽象内容,该层的对象可被共享层与领域层的所有对象引用。
(3)共享层位于IFC架构的第三层级,定义了不同领域层模型之间公共的概念或对象,包含共享建筑服务元素(Shared Building Services Elements)、共享空间元素(Shared Spatial Elements)、共享建筑元素(Shared Building Elements)、共享管理元素(Shared Management Elements)和共享设备元素(Shared Facilities Elements),该层的对象可被领域层调用。
(4)领域层位于IFC架构的最高层级,定义了建筑工程各专业独有的对象模型。目前,IFC领域层包含建筑控制(Building Controls)、水暖消防(Plumbing Fire Protection)、结构元素(Structural Elements)、建筑(Architecture)、电气化(Electrical)等8个领域。
1.2 扩展方法
虽然IFC标准经过近年来的发展已经日臻成熟,但IFC标准提供的实体和属性仍无法满足工程项目信息交换的需求,研究人员可根据需要在IFC标准的模型架构下对IFC数据模型进行扩展,其主要提供3种扩展机制,即基于Ifc Proxy实体的扩展、基于新增实体的扩展、基于属性集的扩展。
(1)基于Ifc Proxy实体的扩展方式,是利用Ifc Proxy实体对原模型体系中未定义的信息进行实体扩展。IfcProxy实体是一个可实例化的抽象实体类型。通过实例化该实体,并通过其属性Proxy Type和Tag对新定义的实体信息进行描述。其中Proxy Type为Ifc Object Type Enum枚举类型数据,可定义几何、过程、控制、资源、项目等类型实体;Tag属性可描述新实体的属性值。
(2)基于新增实体的扩展方式,是在原有IFC标准的模型框架下对模型本身定义的扩充和更新,一般IFC标准的每次版本升级更多采用该方式。例如在IFC2x3中定义了653个实体,而在IFC2x4RC中实体数已经增加到812个。
(3)基于属性集的扩展是IFC标准提供的又一种模型扩展方式。属性集可理解为属性的集合,通过属性集里的属性可实现对信息的描述。作为构成属性集的基本单元,IFC标准中的属性可分成复杂属性和简单属性2类,用来描述模型各种复杂的属性信息。
上述3种方式各具特点,适用于不同应用需求。基于Ifc Proxy实体灵活、简便的扩展方式,主要适用于一般用户在不破坏IFC标准模型架构基础上进行的IFC扩展应用;通过新增实体的扩展方式超出了原有IFC标准的模型体系,是对IFC标准模型较大的更新或扩充;而基于属性集的扩展方式则介于两者之间,自定义属性集可用于一般用户的模型扩展需求,预定义属性集可实现对IFC标准的更新[6-7]。
图2 实际地层层序
图3 本次研究的地层层序
2 模型构建分析
2.1 地层划分
定义的地层层序概念与地质意义上的概念有一定区别,为了地层建模方便,地层层序要求所有地层贯穿于研究地区,且自上而下排序,一个有序完整的层序使用于每一个钻孔,但一个统一的地层层序似乎不太可能出现在每个钻孔中,地层常常尖灭或局部呈透镜体,且某一层可能呈现不连续状态,所以就要通过地层层序来表达这些常见的地质现象。实际地层层序见图2,包括黏土、土层、砂砾3个地层,在其左边和右边钻孔就不会探测到地层中部的透镜体地层。在建模过程中通过将每一层均作为完整的沉积岩层来解决透镜体结构的地层,通过调节尖灭地层厚度为零的方法产生地层结构。从而在建模时将地层分为四层:上层土、黏土、下层土、砂砾[8](见图3)。
2.2 数据处理
钻孔数据是地质建模中非常重要的数据,由于钻孔数据采集的工程成本高、难度大,有些地点受周围环境影响无法进行钻探,造成许多研究区域中的钻孔数据非常有限,并且在地理空间分布上不规则,部分区域相对密集,部分区域相对稀少。而除了钻孔数据外,通常工程地质数据还包括地质构造图、地形图、外业地调资料及工程地质人员根据经验对研究区域地质结构分析推理的结果。因此,在地质建模中将这些非钻孔数据转换成钻孔形式的数据非常重要,这些转换后的经验钻孔与原始钻孔作用完全相同。
因此,钻孔数据的处理包括原始钻孔和经验钻孔两部分,统一为钻孔数据。钻孔数据的处理,首先根据地层划分原理,将所有钻孔划分成统一的地层数,且地层顺序也完全相同,对于钻孔中缺失某一地层的情况,将该层厚度值设为零。在分析整理完地层数与地层顺序后,将每个钻孔编号、孔口坐标、地层厚度、地层顶板高程等数据依次录入钻孔数据库中,形成地质建模数据库。
2.3 数据结构
三维地质建模是对地质资料进行地学统计、地质解译、空间分析预测及三维可视化的地质分析技术。三棱柱建模法是其中较为常用的一种,其最大特点是数据量较少、建模速度快。三棱柱建模法主要使用地质钻孔数据,通过数据插值算法,以三棱柱表示地层的最小三维空间单元,由上、下2个不一定平行的三角形和侧面3个四边形组成。三棱柱集合表示地层,上、下2个面的三角形集合表示地层表面,周围3个四边形用于同一层相邻三棱柱之间的相互连接。三棱柱某一条棱边退化就变成了三棱锥、两条棱边退化就变成四棱锥。三棱锥和四棱锥可用来处理地层尖灭、透镜体、分叉等复杂的地质构造[9]。广义三棱柱体元见图4。
地质模型数据的存储可分为钻孔数据和地质体数据的存储,因此,对于IFC4地质模型存储的扩展也分为钻孔和地质体2个方面,每个方面需扩展对应的实体、枚举类型和属性等的定义。
2.4 建模过程
地质数据处理完成后,就可使用广义三棱柱方法进行地层建模。步骤如下:
(1)对钻孔孔口坐标(x,y)集合进行三角剖分,建立孔口坐标的三角网(TIN)。
(2)从三角网(TIN)中提取1个三角形,将这个三角形设置为第一层地层三棱柱的上三角形。
(3)按照三角形顶点的钻孔编号提取出对应的3个钻孔数据,以第一层地层厚度值为参数连接第一层地层三棱柱的下三角形;上、下三角形对应顶点相连形成侧面四边形。
(4)依此类推,连接这3个钻孔通过的所有地层对应的三棱柱,然后将三棱柱叠加在一起,形成相应的局部完整地层。
(5)重复步骤1—步骤3,直到三角网(TIN)中的三角形遍历完为止,至此,三维地层模型建立完成。
图4 广义三棱柱体元
3 地质模型定义
3.1 钻孔数据定义
钻孔原始数据包括钻孔编号、钻孔类型、孔口坐标、孔口标高及地层序号、地层名称、顶板标高、地层厚度等地层信息,钻孔的几何形状一般使用首尾相连不同颜色的圆柱表示。因此,要存储钻孔数据需定义Ifc Drill(钻孔)和Ifc Drill Layer(钻孔层)。目前,在IFC标准中Ifc Civil Element(土木单元)作为定义所有土木单元的基类,用来派生每个专业领域的土木单元。Ifc Drill(钻孔)将由Ifc Civil Element(土木单元)派生(见图5)。使用从Ifc Civil Element(土木单元)继承的属性Name表示钻孔编号、Object Placement表示孔口坐标和孔口标高,只需在Ifc Drill(钻孔)定义钻孔类型。钻孔的属性见表1。
Ifc Drill Layer(钻孔层)由Ifc Civil Element(土木单元)派生(见图5)。使用从Ifc Civil Element(土木单元)继承的属性Name表示地层序号,反射属性Has Associations引用分类与编码表示地层类型,Object Placement表示基准点,Representation表示钻孔层的圆柱体。同时需要定义Top Elevation表示地层顶板标高,Deepth表示地层厚度,To Drill表示反射属性与该层的钻孔(Ifc Drill)关联。钻孔层的属性见表2。
图5 实体继承关系
表1 钻孔属性表
表2 钻孔层属性表
3.2 地质体数据定义
根据三棱柱建模法,地质体的最小单元是三棱柱,由同一层的三棱柱构成地质层,由多个地质层构成地质体。因此,要存储地质体数据需定义Ifc Geology(地质体)和Ifc Geology Layer(地层)。在IFC标准中定义了Ifc Spatial Structure Element(空间结构单元)作为定义所有空间结构单元的基类,派生的空间结构单元经常被使用定义一个项目的组织结构。Ifc Geology(地质体)将由Ifc Spatial Structure Element(空间结构单元)派生(见图5),使用从Ifc Spatial Structure Element(空间结构单元)继承的Ifc Rel Contained In Spatial Structure(空间包含关系)组织Ifc Geology Layer(地质层)和Ifc Drill(钻孔),Ifc Geology(地质体)不扩展任何属性。空间组织关系见图6。
Ifc Geology Layer(地质层)将由Ifc Civil Element(土木单元)派生(见图5)。使用从Ifc Civil Element(土木单元)继承的属性Name表示地层序号,反射属性Has Associations引用分类与编码表示地层类型,Object Placement表示基准点,Representation表示地层的几何体,每个三棱柱由Ifc Triangulated Face Set(三角面集合)组成。
图6 空间组织关系
4 验证
依据上述方法选择试验区,试验区内共有10个钻孔(2个经验孔),地层统一划分为8层,分别是黏土、填筑土、黄土、砂壤土、漂石、砂砾、砂质页岩、大理岩。以开源的IFC转换插件(Ifc Plus Plus)和Open Scene Graph图形引擎[10-11]为基础,利用Visual C++语言,开发Smart Geology三维地质建模平台。将地质建模数据库中的钻孔数据和建立的三维地质模型存储到定义的Ifc Drill(钻孔)、Ifc Drill Layer(钻孔层)、Ifc Geology Layer(地质层)和Ifc Geology(地质体)等实体中,之后将IFC实体中的图形信息(Ifc Product Representation)和位置信息(Ifc Object Placement)转换成osg::Geometry和osg::Geode几何节点,将IFC实体中的属性信息(Ifc Property)转换成osg::Geode节点的Description List信息描述列表。最后将osg::Geode节点组织成osg Viewer::Viewer的Scene Data模型并显示(见图7)。
图7 地质模型
5 结束语
通过对国际IFC标准体系结构和扩展方法的研究分析,以工程地质为研究对象,分析基于三棱柱建模法的地质模型组成结构、地层划分、数据处理和建模过程,提出地质模型数据存储的实体和属性定义,并开发Smart Geology三维地质建模平台,实现地质模型的创建和数据存储,经过验证,输出的IFC实体与地质模型实体的描述吻合,证明了基于IFC地质模型实体扩展方式的可行性。