CN113535736B - 一种ifc模型存储方法 - Google Patents
一种ifc模型存储方法 Download PDFInfo
- Publication number
- CN113535736B CN113535736B CN202111053279.6A CN202111053279A CN113535736B CN 113535736 B CN113535736 B CN 113535736B CN 202111053279 A CN202111053279 A CN 202111053279A CN 113535736 B CN113535736 B CN 113535736B
- Authority
- CN
- China
- Prior art keywords
- entity
- instance
- attribute
- column
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/13—Architectural design, e.g. computer-aided architectural design [CAAD] related to design of buildings, bridges, landscapes, production plants or roads
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Architecture (AREA)
- Civil Engineering (AREA)
- Structural Engineering (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Evolutionary Computation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种IFC模型存储方法,包括步骤:步骤1.针对IFC实体的可独立交换实体中的基本实体、关系实体,分别建立数据表集合Tp、Tr;针对非独立交换实体建立信息列表Zs和数据表集合Tz;步骤2.根据IFC模型中可独立交换实体的实例特征,依次将IFC模型中可独立交换实体的各个实例的数据存入对应的Tp、Tr的数据表中;步骤3.根据信息列表Zs和IFC模型中非独立交换实体的实例特征,依次将IFC模型中非独立交换实体的各个实例的数据存入Tz的数据表中,并将关联的实体数据存入Tz中数据表。该方法将IFC模型中实例信息分别存入Tp、Tr、Tz的数据表中,提高了数据存储、检索和使用效率。
Description
技术领域
本发明涉及一种IFC模型存储方法,属于BIM技术领域。
背景技术
IFC(Industry foundation Classes)标准是对建筑模型的开放式、标准化数据存储格式,建筑建模软件创建的模型均可导出为IFC格式文件进行存储。IFC标准包含了各种类型的IFC实体,IFC标准以面向对象的方式进行数据存储,以各种类型的IFC实体的实例存储各个建筑构件及其关系。每个IFC实体有很多属性,用于存储建筑构件的信息。
如图1所示,IFC实体可分为可独立交换实体和非独立交换实体(又称资源实体)。可独立交换实体,包括全局唯一标识GlobalId,可被单独检索、提取和共享;非独立交换实体只有临时ID,不可被独立提取,不能在不同软件之间交换共享。
如图1所示,可独立交换实体又分为基本实体和关系实体。基本实体又分为主体实体、属性集实体、类型实体和项目实体。
主体实体又分为产品实体、过程实体、生产资料实体、组织实体、控制实体以及分组实体,构成IFC模型主要组成部分。其中产品实体用于描述建筑中物理构件,譬如梁、柱、墙等,包括几何属性和非几何属性;主体实体的其他实体没有几何属性。
类型实体用于定义同类型主体实体实例的共性特征,是对主体实体必要的补充描述。
属性集实体用于扩展描述主体实体的相关属性。IFC标准针对很各个主体实体定义了对应的类型实体和属性集实体。
项目实体是一个特殊的实体,每个IFC模型只有一个项目实体,定义模型的项目名称、地址等基础信息。
关系实体用于描述两个或多个基本实体之间的关系,基本实体之间不通过直接的相互引用建立关系,必须采用关系实体间接建立。如图2所示,IFC的关系实体均为1:n型关系,即描述实体实例A与实体实例集合Bs之间的关系。为方便描述,关系实体中定义A的属性为主要实体属性pa,定义Bs的属性为次要实体属性pb,称pa的关系实体为主要实体,pb的关系实体为次要实体。如图2所示,只有基本实体有反向属性,基本实体的反向属性的值是关系实体,用于查询与实例相关的关系实体。
目前已有针对IFC模型的存储方式,一般针对每个IFC实体定义一个表,针对实体的每一个属性建立一列,用于该实体的实例数据的结构化存储方式。这种存储方式没有考虑IFC模型中不同类型实体的语义特征,存在存储空间占用大,数据检索效率低等问题。特别地,由于IFC数据的面向实例特性,一个IFC实例的属性值可能是另一IFC实体的实例;因此在IFC实例数据提取时,需要到大量表中检索数据,然后进行数据合并获得最终检索结果,效率低。如图4所示,为了提取IfcBeam实例的信息,需要从IfcBeam、IfcProductRepresentation、IfcRepresentation、IfcRepresentationItem等多个表中检索并提取数据。另外,IFC实体中很多属性具有冗余性,导致IFC实例中很多属性没有录入实际值,即为空值;而传统的存储方式预先给每个实例的每个属性预留空间,从而导致大量空置的存储空间,导致数据存储空间浪费。
发明内容
现有IFC模型的存储方式导致的数据提取时,需要到大量表中检索数据,然后进行数据合并,效率低。针对该技术问题,本发明提出一种IFC模型存储方法,在减少数据存储空间的同时,提升数据检索效率。
为解决以上技术问题,本发明包括如下技术方案:
一种IFC模型存储方法,包括如下步骤:
步骤1:针对IFC实体的可独立交换实体中的基本实体、关系实体,分别建立数据表集合Tp={tp}、Tr={tr},tp、tr为数据表;针对非独立交换实体建立信息列表Zs和数据表集合Tz={tz},tz为数据表;
其中,Tp、Tr和Tz中数据表采用预设版式,均包括表名,表名采用相应的实体名称,Tp、Tr和Tz中的数据表内容均包括列类型、列名和列值;Tp、Tr中数据表的内容还包括唯一标识GlobalId列及GlobalId值;Tz中数据表包括临时ID和ID值;
其中,信息列表Zs={zsi},zsi=(zname,zpname),其中zname是非独立交换实体名,zpname是znamne索引属性名称,i=1,2,…,N,N为索引属性的个数;Tz中数据表的表名采用“非独立交换实体名称”zname,列名为索引属性名称znamne;Tz中数据表的内容还包含索引属性关联的实体信息,关联的实体列名为cze;
步骤2:根据IFC模型中可独立交换实体的实例特征,依次将IFC模型中可独立交换实体的各个实例的数据存入对应的Tp、Tr中数据表;
步骤3:根据信息列表Zs和IFC模型中非独立交换实体的实例特征,依次将IFC模型中非独立交换实体的各个实例的数据存入Tz中数据表,并将关联的实体数据存入Tz中数据表。
进一步,所述步骤2具体包括:
步骤2.1:遍历IFC模型中个各个实例e,并分析实例e的实体名称type,如果是基本实体进入步骤2.2;如果是关系实体进入步骤2.3;如果是非独立交换实体,继续遍历各个实例;
步骤2.2:根据基本实体的实例e的实体名称type,找Tp中对应的数据表tp,在该数据表Tp中新增一个数据组,用于存储实例e的信息;将实例e的GlobalId属性的值存入GlobalId列中;遍历实例e的各个属性cname,将属性cname写入列名中,将属性cname的值存入cname列值中;遍历实例e的各个反向属性vname,将反向属性vname写入列名中,将反向属性vname的值的实体名称和实例的GlobalId存入vname列值中;返回步骤2.1;
步骤2.3:根据关系实体的实例e的实体名称type,找对应的找Tr中对应的数据表tr,在表中新增一个数据组,用于存储关系实体实例e的信息;将关系实体实例e的GlobalId属性的值存入GlobalId列中;将关系实体实例e的主要实体属性值的实体名称和GlobalId存入相应列中;将实例e的次要实体属性值中各个实例的实体名称和GlobalId存入相应列中;遍历实例e的其他属性cname,将属性cname存入列名中,将属性cname的值存入列值中;返回步骤2.1。
进一步,所述步骤3具体包括:
步骤3.1:遍历IFC模型中各个实例e,并分析实例e的实体名称type,分析实例e是否为非独立交换实体,若否,则继续遍历;若是,则判定Zs中存在某个元素zsi的实体名称zname= type,若否则继续遍历;若是则进入步骤3.2;
步骤3.2:根据非独立交换实体的实例e的实体名称type,找对应的快速检索表Tz,在表中新增一个数据组,用于存储索引信息;将实例e的临时ID值存入GlobalId列;将实例e的索引属性zpname的值存入zpname列;
步骤3.3:根据非独立交换实体的实例e的临时ID,在IFC模型中索引属性值中包括实例e的实例zei,加入信息列表Ze={zei},并建立列表Re={};
步骤3.4:遍历信息列表Ze中所有实例zei,如果实例zei的实体类型是可独立交换实体,则继续执行步骤3.4;反之,如果的实体类型是非独立交换实体,则进入步骤3.5;直到Ze中所有实例的实体类型都是可独立交换实体,进入步骤3.6;
步骤3.5:将实例zei从信息列表Ze中删除,将zei加入Re;并根据实例zei的临时ID,在IFC模型中索引属性值中包括实例zei的所有实例Zre={zej},将Re和Ze中都没有而Zre中有的zej加入到信息列表Ze最后,返回步骤3.4;
步骤3.6:将信息列表Ze中所有实例zei的实体名称和GlobalId存入Tz中数据表。
进一步,在向Tp、Tr中数据表和Tz中写入信息时,若实例e的某一属性的列值为空,则不写入该属性的信息。
进一步,将可独立交换实体的各种属性信息存储在一个表中;根据需求针对非独立交换实体的索引属性建立数据表,支持根据人员、材料、机械、空间位置信息快速检索相关IFC实例。
本发明由于采用以上技术方案,使之与现有技术相比,具有以下的优点和积极效果:本发明一种IFC模型存储方法,将每个可独立交换实体实例的属性信息存储在一个表中,从而数据提取时无需从大量资源实体表中检索数据,数据检索和使用效率高;对于关系实体中主要实体属性和次要实体属性,以及基本实体的反向属性,只存储属性值中基本实体的实体名称和GlobalId,在支持快速查询基本实体之间关系的同时,避免了基本实体数据的重复存储;对于产品实体的几何属性和非几何属性,分类存储,有利于数据和几何模型分离存储;针对存在根据非独立交换实体的属性进行快速检索的需求时,建立快速检索表,支持根据资源实体属性快速检索非独立交换实例以及与之相关的可独立交换实体,支持根据人员、材料、机械、空间位置等信息快速检索相关IFC实例,避免需要遍历所有表进行检索;针对每个实例的空值属性,不进行存储,节约存储空间。
附图说明
图1为IFC模型的实体分类示意图;
图2为关系实体、基本实体与反向属性实例示意图;
图3为常规存储方式下IFC数据检索示意图;
图4为本发明一种IFC模型存储方法的流程图;
图5为本发明中的产品实体 IFCBEAM表的结构示意图;
图6为本发明中的关系实体IfcRelAssignsToActor表的结构示意图;
图7为本发明中的快速检索表IfcPerson的结构示意图;
图8为 IFC模型示例;
图9为本发明实施例中数据表IFCBEAM存储的实例的非几何属性信息;
图10为本发明实施例中数据表IFCBEAM存储的实例的几何属性信息;
图11为本发明实施例中数据表IFCACTOR存储的信息;
图12为本发明实施例中数据表IfcPerson存储的信息。
具体实施方式
以下结合附图和具体实施例对本发明提供的一种IFC模型存储方法作进一步详细说明。结合下面说明,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
本实施例提供的一种IFC模型存储方法,包括如下步骤:
步骤1:针对IFC实体的可独立交换实体中的基本实体、关系实体,分别建立数据表集合Tp={tp}、Tr={tr},tp、tr为数据表;针对非独立交换实体建立信息列表Zs和数据表集合Tz={tz},tz为数据表。
Tp、Tr和Tz中数据表tp、tr、tz采用预设版式,均包括表名,数据表tp、tr、tz的内容均包括列类型、列名和列值。Tp、Tr中数据表tp、tr的内容还包括唯一标识GlobalId。需要说明的是,基本实体的表名采用实体名称,比如针对产品实体中的梁实体,表名采用IFCBEAM,IFC模型中的所有梁都共用一个表,数据表集合Tp中除了梁实体的表,还有柱实体的表、门实体的表,表的内容格式相同,仅表名不同。因此,数据表集合Tp是基本实体的数据表tp的总称,另外基本实体中的产品实体包括几何属性、非几何属性和反向属性,几何属性的列类型为G,非几何属性的列类型为B,反向属性列类型为V。对于基本实体中除产品实体以外的其它实体仅包括非几何属性和反向属性,没有几何属性,其中非几何属性的列类型为B,反向属性列类型为V。基本实体的每个实例都包含一个唯一标识GlobalId。
如图5所示,产品实体IFCBEAM的表名为IFCBEAM,几何属性列包括ObjectPlacement、Representation,非几何属性列包括Name、OwnerHistory、Description、ObjectType和Tag,反向属性列包括Decomposes、IsDecomposedBy、HasAssociations和HasAssignments。
需要说明的是,关系实体的的表名采用实体名称,列名为属性名称,主要实体属性和次要实体属性分的列分类均为R,其他属性的列列类型B。关系实体的每个实例都包含一个唯一标识GlobalId。
如图6所示,关系实体IfcRelAssignsToActor的表名为IfcRelAssignsToActor,主要实体属性列为RelatingActor, 次要实体属性列为RelatedObjects,基本属性列为Name、OwnerHistory、Description、ActingRole和RelatedObjectsType。
需要说明的是,信息列表Zs={zsi},zsi=(zname,zpname),其中zname是非独立交换实体名称,zpname是znamne索引属性名称,i=1,2,…,N,N为索引属性的个数;数据表集合Tz中数据表tz表名采用“非独立交换实体名称”zname,列名为索引属性名称znamne,列类型B;数据表Tz还包含索引属性关联的实体信息,关联的实体列名为cze,列值为关联的实体的临时ID,列类型为R。
如图7所示,针对人员实体IfcPerson的名称Name建立快速检索表,则表名为IfcPerson,列名采用属性名,以及列名包括Name及关联的实体列cze。
需要进一步说明的是,非独立交换实体的索引属性可以为人,比如由人员A创建的实体,检索时需要针对创建的人员名称建立快速检索表;非独立交换实体可以为材料信息,比如混凝土,通常材料信息都存在产品实体(比如梁、柱、墙)中,需要针对混凝土材料建立快速检索表;非独立交换实体可以为机械B,由某台机械施工的实体,需要针对机械B建立快速检索表;非独立交换实体还可以是空间位置或其它。
进一步,数据表Tz采用如下方式建立:1)先建立信息列表Zs={zsi},zsi=(zname,zpname),其中zname是非独立交换实体名,zpname是znamne索引属性名称;譬如,为了根据名称快速检索某个人员创建的模型数据,输入快速检索资源实体需求zs=(IFCPERSON,Name)。2)遍历Zs表中各个需求zsi,针对各个非独立交换实体索引属性,建立快速检索表Tz,表名采用“非独立交换实体名称”zname,比如IFCPERSON;列名为索引属性名znamne,比如Name,类型为B;关联的实体列名为cze,类型为R。
步骤2:根据IFC模型中可独立交换实体的实例特征,依次将IFC模型中可独立交换实体的各个实例的数据存入对应的Tp、Tr中数据表。具体包括以下步骤:
步骤2.1:遍历IFC模型中个各个实例e,并分析实例e的实体名称type,如果是基本实体进入步骤2.2;如果是关系实体进入步骤2.3;如果是非独立交换实体,继续遍历各个实例;
如图8所示,该IFC模型给出了一个数据片段,该数据片段包括#1、#2、#3、#9、#10、#11、#12共7个实例,其中#1实例类型是IFCRELASSIGNSTOACTOR,为关系实体;#2实例类型是IFCACTOR,为组织实体;#3实例类型是IFCBEAM,为产品实体;#9实例类型是IFCOWNERHISTORY,为资源实体;#10实例类型是IFCPERSON ,为资源实体; #11实例类型是IFCPERSONANDORGANIZATION,为资源实体;#12实例类型是IFCORGANIZATION,为资源实体。作为举例,若当前实例为#1实例,则转入步骤2.3;若当前的实例为#3实例,则转入步骤2.2;当前的实例为#9实例,则继续遍历。
步骤2.2:根据基本实体的实例e的实体名称type,找Tp中对应的数据表tp,在该数据表tp中新增一个数据组,用于存储实例e的信息;将实例e的GlobalId属性的值存入GlobalId列中;遍历实例e的各个属性cname,将属性cname写入列名中,将属性cname的值存入cname列值中;遍历实例e的各个反向属性vname,将反向属性vname写入列名中,将反向属性vname的值的实体名称和实例的GlobalId存入vname列值中;返回步骤2.1。
结合图8和图9所示,对于#3实例,在表IFCBEAM中新增一组信息,用于存储#3实例的信息;将#3实例的GlobalId属性的值0ZgNCWiYT1Zeg0wDMZq3Dq存入该组的GlobalId列中;遍历实例e的各个属性OwnerHistory、Name、Description、ObjectType、PredefinedType等属性,将各个属性对应的值(#9,'混凝土柱',$,$,, 'BEAM')存入OwnerHistory、Name、Description、ObjectType、PredefinedType列;其中Description、ObjectType属性的值为‘$’,表示空值,可以不存储,节约空间。实例e的反向属性HasAssignments的属性名、类型、值分别对应存储。结合图8至图10所示,对于几何属性ObjectPlacement、Representation等可进行独立于非几何属性进行存储,有利于数据和几何模型分离存储。在数据检索时,如果需要提取某个IFCBEAM实例(梁)的所有信息时,只需要从IFCBEAM一个表中查收数据,而无需从其他表检索数据。
步骤2.3:根据关系实体的实例e的实体名称type,找对应的Tr中对应的数据表tr,在表中新增一个数据组,用于存储关系实体实例e的信息;将关系实体实例e的GlobalId属性的值存入GlobalId列中;将关系实体实例e的主要实体属性值的实体名称和GlobalId存入相应列中;将实例e的次要实体属性值中各个实例的实体名称和GlobalId存入相应列中;遍历实例e的其他属性cname,将属性cname存入列名中,将属性cname的值存入列值中;返回步骤2.1。
结合图8和图11所示,对于#1实例(关系实体的实例),在表IFCRELASSIGNSTOACTOR中新增一个数据组,用于存储#1实例的信息;将#1实例的GlobalId属性的值0ZgNCWiYT1Zeg0wDMZq3Dn存入GlobalId列中;将#1实例的主要实体属性RelatingActor的值“IFCACTOR”(基本实体实例#2的实体名称)和“0ZgNCWiYT1Zeg0wDMZq3Do”(基本实体实例#2的GlobalId)存入RelatingActor列;将#1实例的次要实体属性RelatedObjects的值中实例的实体名称IFCBEAM和GlobalId(0ZgNCWiYT1Zeg0wDMZq3Dq)存入列RelatedObjects。还需要遍历#1实例的各个属性OwnerHistory、Name、Description、RelatedObjectsType、ActingRole等属性,将各个属性对应的值(#9,$, 'PRODUCT',#2,$)存入相应的OwnerHistory、Description、RelatedObjectsType、ActingRole列,其中Name 的值为‘$’,表示空值,可以不存储,节约空间。数据存储存储时,不会重复存储IFCRELASSIGNSTOACTOR实例中RelatedObjects和RelatingActor属性值中的基本实体属性的大量数据,只存储其实体名称和GlobalId。
步骤3:根据快速检索非独立交换实体的信息列表Zs,在快速检索表Tz中存入索引数据。具体包括以下步骤:
步骤3.1:遍历IFC模型中各个实例e,并分析实例e的实体名称type,分析实例e是否为非独立交换实体,若否,则继续遍历;若是,则判定Zs中存在某个元素zsi的实体名称zname= type,若否则继续遍历,若是则进入步骤3.2。
如图8所示,#10实例类型是IFCPERSON ,是人员实体检索需求,与信息需求表中的一个元素zsi的实体名称zname相同(步骤1中设置数据表Tz时已经将人员实体设置为其中的检索元素),则转入步骤3.2。
步骤3.2:根据非独立交换实体的实例e的实体名称type,在Tz中找对应的数据表tz,在表中新增一个数据组,用于存储索引信息;将实例e的临时ID值存入GlobalId列;将实例e的索引属性zpname的值存入zpname列。
结合图8和图12所示,针对#10实例,找到对应的快速检索表IFCPERSON,在表中新增一个数据组,用于存储#10的索引信息;将#10的临时ID(#10)存入row的GlobalId列;将#10的Name属性值‘Yufq’存入相应列;
步骤3.3:根据非独立交换实体的实例e的临时ID,在IFC模型中索引属性值中包括实例e的实例zei,加入信息列表Ze={zei},并建立列表Re={}。
结合图8和图12所示,根据#10的临时ID(#10),在IFC模型中索引属性值中包括#10的实例zei=#11,加入实例集合Ze={#11}。
步骤3.4:遍历信息列表Ze中所有实例zei,如果实例zei的实体类型是可独立交换实体,则继续执行步骤3.4;反之,如果的实体类型是非独立交换实体,则进入步骤3.5;直到Ze中所有实例的实体类型都是可独立交换生实体,进入步骤3.6。
如图8所示,遍历Ze,#11是非独立交换实体,进入步骤3.5。
步骤3.5:将实例zei从信息列表Ze中删除,将zei加入Re;并根据实例zei的临时ID,在IFC模型中索引属性值中包括实例zei的所有实例Zre={zej},将Re和Ze中都没有而Zre中有的zej加入到信息列表Ze最后,返回步骤3.4。
作为举例,对于#10的实例zei=#11,实例集合Ze={#11},将#11从Ze中删除,并根据#11实例的临时ID#11,从IFC模型中索引属性值中包括#11的所有实例,如zej=#9,加入Ze中,Ze={#9};然后返回步骤3.4。#9仍是非独立交换实体,继续转入步骤3.5,然后删除#9,并继续寻找到使用#9的实例#1、#2和#3,加入Ze;最后得到Ze={#1、#2和#3};Zre={#11、#10、#9}
步骤3.6:步骤3.6:将信息列表Ze中所有实例zei的实体名称和GlobalId存入Tz中数据表。至此,Tz中数据表包含了所有待检索元素关联的实体信息,在今后需要检索非独立交换实体信息时,可在Tz中进行快速检索。
结合图8和图12所示,将实例#1、#2和#3的实体名称和GlobalId数据“IFCRELASSIGNSTOACTOR”、“0ZgNCWiYT1Zeg0wDMZq3Dn”、“IFCACTOR”、“0ZgNCWiYT1Zeg0wDMZq3Do”、“IFCBEAM”、“0ZgNCWiYT1Zeg0wDMZq3Dq”存入cze列。数据检索时,可以根据IFCPERSON表,快速检索与人员“Yufq”相关的可独立交换实体{#1、#2和#3}。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (3)
1.一种IFC模型存储方法,其特征在于,包括如下步骤:
步骤1:针对IFC实体的可独立交换实体中的基本实体、关系实体,分别建立数据表集合Tp={tp}、Tr={tr},tp、tr为数据表;针对非独立交换实体建立信息列表Zs和数据表集合Tz={tz},tz为数据表;
其中,Tp、Tr和Tz中数据表采用预设版式,均包括表名,表名采用相应的实体名称,Tp、Tr和Tz中的数据表内容均包括列类型、列名和列值;Tp、Tr中数据表的内容还包括唯一标识GlobalId列及GlobalId值;Tz中数据表包括临时ID和ID值;
其中,信息列表Zs={zsi},zsi=(zname,zpname),其中zname是非独立交换实体名,zpname是znamne索引属性名称,i=1,2,…,N,N为索引属性的个数;Tz中数据表的表名采用“非独立交换实体名称”zname,列名为索引属性名称znamne;Tz中数据表的内容还包含索引属性关联的实体信息,关联的实体列名为cze;
步骤2:根据IFC模型中可独立交换实体的实例特征,依次将IFC模型中可独立交换实体的各个实例的数据存入对应的Tp、Tr中数据表;具体包括:
步骤2.1:遍历IFC模型中个各个实例e,并分析实例e的实体名称type,如果是基本实体进入步骤2.2;如果是关系实体进入步骤2.3;如果是非独立交换实体,继续遍历各个实例;
步骤2.2:根据基本实体的实例e的实体名称type,找Tp中对应的数据表tp,在该数据表Tp中新增一个数据组,用于存储实例e的信息;将实例e的GlobalId属性的值存入GlobalId列中;遍历实例e的各个属性cname,将属性cname写入列名中,将属性cname的值存入cname列值中;遍历实例e的各个反向属性vname,将反向属性vname写入列名中,将反向属性vname的值的实体名称和实例的GlobalId存入vname列值中;返回步骤2.1;
步骤2.3:根据关系实体的实例e的实体名称type,找对应的找Tr中对应的数据表tr,在表中新增一个数据组,用于存储关系实体实例e的信息;将关系实体实例e的GlobalId属性的值存入GlobalId列中;将关系实体实例e的主要实体属性值的实体名称和GlobalId存入相应列中;将实例e的次要实体属性值中各个实例的实体名称和GlobalId存入相应列中;遍历实例e的其他属性cname,将属性cname存入列名中,将属性cname的值存入列值中;返回步骤2.1;
步骤3:根据信息列表Zs和IFC模型中非独立交换实体的实例特征,依次将IFC模型中非独立交换实体的各个实例的数据存入Tz中数据表,并将关联的实体数据存入Tz中数据表;具体包括:
步骤3.1:遍历IFC模型中各个实例e,并分析实例e的实体名称type,分析实例e是否为非独立交换实体,若否,则继续遍历;若是,则判定Zs中存在某个元素zsi的实体名称zname=type,若否则继续遍历;若是则进入步骤3.2;
步骤3.2:根据非独立交换实体的实例e的实体名称type,找对应的快速检索表Tz,在表中新增一个数据组,用于存储索引信息;将实例e的临时ID值存入GlobalId列;将实例e的索引属性zpname的值存入zpname列;
步骤3.3:根据非独立交换实体的实例e的临时ID,在IFC模型中索引属性值中包括实例e的实例zei,加入信息列表Ze={zei},并建立列表Re={};
步骤3.4:遍历信息列表Ze中所有实例zei,如果实例zei的实体类型是可独立交换实体,则继续执行步骤3.4;反之,如果的实体类型是非独立交换实体,则进入步骤3.5;直到Ze中所有实例的实体类型都是可独立交换实体,进入步骤3.6;
步骤3.5:将实例zei从信息列表Ze中删除,将zei加入Re;并根据实例zei的临时ID,在IFC模型中索引属性值中包括实例zei的所有实例Zre={zej},将Re和Ze中都没有而Zre中有的zej加入到信息列表Ze最后,返回步骤3.4;
步骤3.6:将信息列表Ze中所有实例zei的实体名称和GlobalId存入Tz中数据表。
2.如权利要求1所述的IFC模型存储方法,其特征在于,
在向Tp、Tr中数据表和Tz中写入信息时,若实例e的某一属性的列值为空,则不写入该属性的信息。
3.如权利要求1所述的IFC模型存储方法,其特征在于,
将可独立交换实体的各种属性信息存储在一个表中;根据需求针对非独立交换实体的索引属性建立数据表,支持根据人员、材料、机械、空间位置信息快速检索相关IFC实例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111053279.6A CN113535736B (zh) | 2021-09-09 | 2021-09-09 | 一种ifc模型存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111053279.6A CN113535736B (zh) | 2021-09-09 | 2021-09-09 | 一种ifc模型存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113535736A CN113535736A (zh) | 2021-10-22 |
CN113535736B true CN113535736B (zh) | 2021-12-10 |
Family
ID=78123054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111053279.6A Active CN113535736B (zh) | 2021-09-09 | 2021-09-09 | 一种ifc模型存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113535736B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609417A (zh) * | 2011-01-21 | 2012-07-25 | 清华大学 | 基于ifc标准的建筑信息模型数据集成与交换引擎装置和方法 |
CN113255044A (zh) * | 2021-06-09 | 2021-08-13 | 青岛理工大学 | 基于bim的装配式建筑智能出图方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787156B (zh) * | 2016-02-04 | 2018-07-24 | 嘉兴国电通新能源科技有限公司 | 一种基于ifc实体数据抽取的子模型生成方法 |
FI20165787A (fi) * | 2016-10-14 | 2018-04-15 | Enterprixe Software Ltd Ab | Menetelmä ja järjestelmä tietojen vaihtamiseen eri osajärjestelmien välissä |
CN110059086A (zh) * | 2019-03-19 | 2019-07-26 | 西安理工大学 | 基于ifc模式及其映射模型的结构化自动存储方法 |
CN111931269B (zh) * | 2020-07-10 | 2023-01-31 | 上海建工四建集团有限公司 | Bim与图纸中重要构件信息一致性的自动审核方法和系统 |
CN112100195B (zh) * | 2020-11-10 | 2021-02-05 | 上海建工四建集团有限公司 | 一种基于语义分类的ifc模型变更检测方法 |
-
2021
- 2021-09-09 CN CN202111053279.6A patent/CN113535736B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609417A (zh) * | 2011-01-21 | 2012-07-25 | 清华大学 | 基于ifc标准的建筑信息模型数据集成与交换引擎装置和方法 |
CN113255044A (zh) * | 2021-06-09 | 2021-08-13 | 青岛理工大学 | 基于bim的装配式建筑智能出图方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113535736A (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100468402C (zh) | 一种数据存储及查询方法 | |
CN104794123B (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
CN102663076B (zh) | 文件数据处理方法 | |
US20050065910A1 (en) | Method and apparatus for storage and retrieval of information in compressed cubes | |
CN104657459A (zh) | 一种基于文件粒度的海量数据存储方法 | |
KR20010083096A (ko) | 가치-사례-연결을 통한 컴퓨터에 의해 구현되는데이터베이스 | |
US4893232A (en) | Data management system for efficiently searching data elements and having a flexible registration order of data elements | |
JP2016539449A (ja) | データベース実現方法 | |
US20020091704A1 (en) | Database system and method of organizing an n-dimensional data set | |
CN110851663B (zh) | 管理元数据的方法和装置 | |
CN102609492B (zh) | 一种支持表模式可变的元数据管理方法 | |
CN112163048A (zh) | 基于ClickHouse实现OLAP分析的方法、装置 | |
JPS62145369A (ja) | 図形デ−タの検索方法 | |
CN113535736B (zh) | 一种ifc模型存储方法 | |
JP2019185394A (ja) | データカタログ自動生成システム及びその自動生成方法 | |
CN101833511A (zh) | 数据管理方法、装置和系统 | |
CN111241131B (zh) | 一种数据查询方法、装置、设备及计算机可读存储介质 | |
US20050108184A1 (en) | Data joining/displaying method | |
JP4914117B2 (ja) | データ処理システム | |
CN103309890A (zh) | 一种Linux文件系统与实时数据库索引融合的技术 | |
KR19990025292A (ko) | 필터링 과정에 의한 이미지 데이터 베이스의 효과적 검색 방법 | |
CN110910058A (zh) | 管理物料的方法和装置 | |
CN113360686B (zh) | 配电网单线图存储方法、调阅方法、调阅系统及服务端 | |
JP2001517338A (ja) | データベース内の情報をコンピュータにより動的に作成、変更、削除、保持する方法 | |
CN109241098A (zh) | 一种分布式数据库的查询优化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |