一种基于Redis和Mongodb的IFC模型存储方式的制作方法

文档序号:17721345发布日期:2019-05-22 02:11阅读:353来源:国知局
一种基于Redis和Mongodb的IFC模型存储方式的制作方法

本发明属于建筑业信息技术领域,ifc模型存储展示方式,具体涉及一种基于redis和mongodb的ifc模型存储方式。



背景技术:

随着国内bim(建筑信息模型)技术的迅猛发展,高速增长的bim数据对存储系统的高可用性、负载均衡、横向扩容等功能以及如何快速展示存储的bim数据提出了更高的要求。

mongodb是一个基于分布式文件存储的数据库,redis一个键-值存储系统,属于开源的使用ansic语言编写、支持网络、可基于内存亦可持久化的日志型、key-value(键-值)数据库,并提供多种语言的api(应用程序编程接口),ifc是一种文件格式。



技术实现要素:

为了克服上述背景技术的缺陷,本发明提供一种基于redis和mongodb的ifc模型存储方式,存储展示ifc(国际通用的bim标准),解决海量ifc模型数据的存储及web展示问题。

为了解决上述技术问题本发明的所采用的技术方案为:

一种基于redis和mongodb的ifc模型存储方式,包括:步骤一,解析ifc模型数据,并进行轻量化处理;步骤二,将解析后ifc模型数据存储到mongodb;步骤三,将当前使用频繁的ifc模型数据存储到redis内存;步骤四,web端通过webworker线程根据ifc模型唯一身份标识号码id从redis中快速读取模型数据,web端主线程通过3d绘图协议webgl渲染展模型数据。

较佳地,步骤一解析ifc模型数据包括:服务端解析ifc模型文件,将模型数据分为属性数据、材质数据、几何数据三种,这三种数据独立存储,通过模型构件唯一id关联。

较佳地,步骤一进行轻量化处理:针对模型几何数据,通过参数化几何图形描述和图元合并两种方式进行轻量化处理包括:参数化几何图形描述轻量化处理,图元合并轻量化处理。

较佳地,步骤二将解析后ifc模型数据存储到mongodb包括:服务端解析完ifc数据后,对于单个的ifc文件,存储在单独的mongodb集合中,ifc文件中的属性数据、几何数据、材质数据存储于集合的文档中。

较佳地,步骤三将当前使用频繁的ifc模型数据存储到redis内存包括:利用redis高速读写、高并发能力的特点,在服务端启动时,将mongodb中常用的ifc模型数据存储于redis中,在内存中构建键-值格式ifc模型高速缓存,供web端调用。

较佳地,步骤四web端通过webworker线程根据ifc模型唯一id从redis中快速读取模型数据,web端主线程通过webgl渲染展模型数据,包括webworker进行交互请求以及数据获取,浏览器主线程中进行bim模型的渲染。

较佳地,web端主线程通过webgl渲染展模型数据的方法包括:发送多个请求获取数据,接收到所有数据后统一进行模型的渲染。

较佳地,web端主线程通过webgl渲染展模型数据的方法包括:每发送一个数据请求都调用渲染接口进行部分数据渲染。

本发明还的有益效果在于:能够利用计算机集群的性能,解决单机内存容量可能不足的问题。利用redis高速读写、高并发能力的特点,在服务端启动时,将mongodb中常用的ifc模型数据存储于redis中,在内存中构建键-值格式ifc模型高速缓存,供web端调用。本发明就bim行业中ifc数据的存储展示,设计了一种以mongodb和redis组合的方式存储展示ifc数据。

附图说明

图1为本发明实施例的方法流程图。

具体实施方式

下面结合附图和实施例对本发明做进一步的说明。

本实施例提供了一种以mongodb和redis组合的方式存储展示ifc数据,解决海量ifc模型数据的存储及web网页展示问题。

本发明专利由web端、服务端、redis内存数据库、mongodb文档数据库几大部分组成。

服务端负责解析ifc数据,并存储到redis内存数据库和mongodb文档数据库中,同时负责响应web端的请求。

web端从服务端读取ifc模型数据并渲染展示。

具体包括:

步骤一:解析ifc模型数据,并进行轻量化处理;

服务端解析ifc模型文件,将模型数据分为属性数据、材质数据、几何数据三种,这三种数据独立存储,通过模型构件唯一id关联。

针对模型几何数据,通过参数化几何图形描述和图元合并两种方式进行轻量化处理:

1)参数化几何图形描述轻量化处理:

用多个参数来描述一个几何体,我们称之为参数化几何描述。

例如:一个立方体8个顶点,可以使用3个参数描述:

参数1、2:立方体底部矩形斜对角顶点坐标

参数3:立方体高度

这样,就能用较少的数据来描述保存图元,非常精简,参数化几何描述可以将单个图元做到最极致的轻量化。

2)图元合并轻量化处理:

在一个bim模型中,会有很多重复的图元,只是位置不一样,这个时候我们可以做图元合并:只保留一个图元的几何数据,其它图元用该图元的位置坐标和图元几何数据的唯一id表示。

通过这种方式我们可以有效减少图元数量,达到轻量化的目的。

步骤二:将解析后ifc模型数据存储到mongodb;

ifc格式bim模型是基于step标准(产品模型数据交互规范),是采用数据建模语言express描述的实体关系模型,作为建筑行业的通用数据标准,ifc提供了跨多个领域的实体模型。ifc的可扩展性使得可通过预定义或扩展属性集描述增加模型的实体类型和属性信息。

ifc庞大、复杂的定义使得ifc数据的处理成为影响其实际应用的重要技术难题。现有ifc数据存储方式可以分为3类:关系数据库、对象数据库、非关系型(nosql)数据库。在数据量达到一定量级时,非关系数据库相较传统数据库在存取效率上将体现出较大的优势。

mongodb是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似轻量级的数据交换格式json的二进制形式的存储格式bson格式,因此可以存储比较复杂的数据类型。ifc的express格式数据属于聚合类型数据,比较适合用json来表示,可以用mongodb来存储。

服务端解析完ifc数据后,对于单个的ifc文件,存储在单独的mongodb集合中,ifc文件中的属性数据、几何数据、材质数据,则存储于集合的文档中。

步骤三:将当前使用频繁的ifc模型数据存储到redis内存;

redis是一个开源的、分布式、可基于内存亦可持久化的键-值型存储系统。redis最大特点在于使用内存进行数据的存取,极大提升了数据的读写速度,同时分布式的设计使得redis能够利用计算机集群的性能,解决单机内存容量可能不足的问题。本专利利用redis高速读写、高并发能力的特点,在服务端启动时,将mongodb中常用的ifc模型数据存储于redis中,在内存中构建键-值格式ifc模型高速缓存,供web端调用。

步骤四:web端通过webworker(运行在后台的javascript,可为javascript创造多线程环境)根据ifc模型唯一id从redis中快速读取模型数据,web端主线程通过webgl渲染展模型数据;

html5中提出了多线程webworker的概念,使得浏览器可以使用利用多线程去完成一些复杂的工作。本专利中,webworker负责一般的交互请求以及数据获取,浏览器主线程中只负责bim模型的渲染工作。

目前bim模型web端渲染模型有两种方式:发送多个请求获取数据,拿到所有数据后统一进行模型的渲染;或者每发送一个数据请求都调用渲染接口进行部分数据渲染。

常规选择的是方法一,这种方法在数据下载时,页面呈现空白状态,用户可能会感觉页面卡死或者网络报错,当数据量比较大时,数据全部下载占用的时间比较长,用户体验很不好。

方法二是在下载数据的同时也进行模型渲染,配合webworker多线程技术,可以使两个步骤同步执行,用户可以马上看见模型一块一块出现,而不用等待很长时间,这样速度快,用户体验也比较好。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1