BIM,PIM接入GIS 需要解决的关键技术问题
随着技术发展,跨界融合已经不是新鲜事物,近两年BIM、PIM+GIS一张图的提出,给行业注入了一股清流。
为GIS行业发展带来了新的契机,同时也带来了一些新的挑战。面对挑战,本文将剖析BIM、PIM+GIS应用过程中遇到的难点以及应对方法。
首先我们要分析BIM与GIS的各自特点;
1).BIM、PIM注重微观、注重细节,GIS偏向宏观,
以一栋楼为例,BIM数据的模型数量(个体)可达到100万个对象数量【对象的概念:每一个对象是一个独立的个体,具有可编辑、可以测量、有独立属性】
以一个工厂为例,一个发电厂的模型数量可达到500万个对象。
2).BIM、PIM坐标系独立(无地理信息属性)
3). BIM、PIM数据侧重管理,可溯源。
4). BIM、PIM可测量,对精度要求高。
5).BIM、PIM的技术特点:参数化,轻量化,可编辑。
结合以上特点,把BIM、PIM接入到GIS中要解决的如下问题:
1.坐标转换、数据精度问题
无论是BIM、PIM、GIS都需要解决这样这个问题,尤其是将数据送到显卡进行绘制,很多显卡对双精度(double)支持不好,计算性能价差,移动端的显卡
设计上就不支持双精度计算。
GIS :因为坐标较大,单浮点已经无能为力,只能采用双浮点计算(double),在传递给显卡前需要消除大坐标 【传统解决大坐标办法】
BIM、PIM:未引入GIS前,因为坐标范围较小,基本上用单精度进行绘制不会出现失真的情况。
引入GIS后,因为增加了地理位置属性,坐标与GIS坐标一致,变大,单精度已经无法满足需求,当然也可以采用【传统解决大坐标办法】。
带来的问题:绘制的对象数有限,当对象数量超多10万个【传统解决大坐标办法】显得无能为力。
2.数据量问题
上文中提到,一般的BIM、PIM模型对象数量是极大的,对象数是百万级别的,而且特别的集中,这给CPU、GPU带来了新的挑战。
当然,这个难不倒攻城狮们,传统的解决办法:
1. 降低对象数量,很多模型100万个对象的模型被处理成只有不到10000个对象,这样大大的
降低了CPU的管理成本,可以实时的采用CPU裁剪,然后在将数据送到显卡执行。然而这种办法一直都有一个缺点:模型的颗粒度降低了,
无法满足更低级别的管理。
2. 按需加载,这种办法降低了加载模型的数量,把模型按照功能组排序分组,只展示特定的功能组数据。这种办法,用户只能看到部分模型。
3. 动态裁剪,采用LOD算法,这种算法比前面两种都要优秀,可以很大程度提升系统的吞吐量,一般优秀的系统可以支撑100万个对象实时展示。
遇到大体量的模型也无能为力了。
综上所述,不管采用什么样的技术方案-数据量停留在“百万对象”数据量的级别上,但现在数字化大趋势下,全网一张图的提出,数据远超过“百万级别”
笔者接触过的数据量,最大单体BIM数据量达到600万级别。
3.模型格式问题
BIM、PIM模型多数是参数化的,参数化的优势,可测量,可计算,可复用
传统模型的概念已经不能满足BIM的应用【模型是由三维点线面组成的方式】,这种模式下计算分析是不准确的。
例如:当我们需要计算两个管道之间的最小表面距离,采用传统的三角形mesh方法得出的结果是偏大的,如下图所示:
无论如何对管道表面进行三角细化,都只能是近似模拟,无法精确的计算表面积最短距离。这就是参数化模型的一个突出的优点
我们用表面光滑的圆柱-标识该模型是参数化的,用以区分。
计算体积,质心,物理模拟仿真等参数化的模型计算更加的科学准确。
4. 轻度编辑能力
目前国产化BIM+GIS将精力主要集中在表现上,画质上而忽略了核心应用,笔者对轻度编辑做如下定义(游戏中的场景编辑能力):
1). 修改调整模型的材质属性;
2). 修改模型的位置属性,6自由度信息即旋转、缩放、平移;
3). 修改模型的附加属性,工程应用中极具价值的要素;
4). 模型的合并;
5). 动画制作;
6). 场景编辑控制.
综上所属,在BIM、PIM+GIS结合上,技术上难以解决的两个问题:
1.大坐标的计算精度问题
后续笔者将总结现有的解决大坐标的方法,并说明其优点与缺点
提出新的更高性能的解决大坐标的方法。
2.参数化计算问题
后续专题论述
3.轻度编辑
后续专题论述
BIM,PIM接入GIS 需要解决的关键技术问题的更多相关文章
- GIS与FVCOM模型耦合的关键技术及解决思路
1. FVCOM本身为Linux下的MPI程序,首先将其移植到Windows下,可以编译成控制台程序. 2. FVCOM的前处理由GIS完成剖分网格和初始设定等工作. 3. FVCOM的输出采用自定义 ...
- Windows平台下C++插件系统实现的几个关键技术问题及其解决思路
根据我的实践,在Windows平台下设计并实现一个C++插件系统,需要解决几个关键技术问题.下面我谈谈需要解决的几个关键技术问题以及我想到的简单的解决思路.由于我主要专注于Windows平台C++程序 ...
- 5G关键技术评述
业内重大事件: 张 平:无线通信领域专家,北京邮电大学教授,博士生导师,现任北京邮电大学无线新技术研究所(WTI)所长.泛网无线通信教育部重点实验室主任以及中德软件研究所副所长.张平教授是国家宽带无 ...
- 实时视频应用之QoS关键技术分析
转自:http://www.aiweibang.com/m/detail/104476372.html?from=p 随着WebRTC标准的逐步推广,实时音视频通讯技术受到越来越多公司和技术人员的关注 ...
- 5G关键技术研究方向
对于还没体验4G移动通信魅力的国内的移动通信用户而言,5G也许还是镜中花,雾中月:但对于科研界而言,5G研究已经启程,三星电子5月份宣布,率先开发出了首个基于5G核心技术的移动传输网络,实现每秒1Gb ...
- Android无埋点数据收集SDK关键技术
前言 鉴于日益强烈的精细化运营需求,网易乐得从去年开始构建大数据平台,<<无埋点数据收集SDK>>因此立项,用于向大数据平台提供全量,完整,准确的客户端数据. << ...
- 小小知识点(二十七)20大5G关键技术
5G网络技术主要分为三类:核心网.回传和前传网络.无线接入网. 核心网 核心网关键技术主要包括:网络功能虚拟化(NFV).软件定义网络(SDN).网络切片和多接入边缘计算(MEC). 1 网络功能虚拟 ...
- 在线公开课 | 5G时代的视频云服务关键技术与实践
5G时代来临在即,视频技术将会如何发展呢?基于视频云服务的技术开发又有怎样的变化呢?为此,京东云视频云产品研发部高级总监魏伟为大家做出了详细解读. 魏伟拥有10多年视频行业研发经验,先后从事于AVS标 ...
- Linux多核并行编程关键技术
多核并行编程的背景 在摩尔定律失效之前,提升处理器性能通过主频提升.硬件超线程等技术就能满足应用需要.随着主频提升慢慢接近撞上光速这道墙,摩尔定律开始逐渐失效,多核集成为处理器性能提升的主流手段.现在 ...
随机推荐
- jquery中定义数组并给数组赋值后转为json格式为[]问题的解决
一.问题描述:jquery定义一个空数组,并赋值,结果转为json格式后打印值为空 我原本是这样写的,但是show_data值一直为[] var export_data = [];export_dat ...
- python-内置函数-compile,eval,exec
#将字符串,编译成python代码 compile()#执行,有返回值,执行表达式并获取结果 eval()#执行python代码,无返回值,接收:代码或者字符串 exec() s = "pr ...
- JAVA连接、操作数据库的DBHelper
工厂模式的DBHelper 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.Prepa ...
- 腾讯暑期 前后七面 + hr(已拿offer面经)
以下是时间线 魔方 魔术师工作室 3.19 一面(120mins) c++ struct和union区别? 指针和引用的区别? 左值和右值? 字节对齐的作用? 什么情况下需要自定义new? mallo ...
- C#中的元组(Tuple)和结构体(struct)
在正常的函数调用中,一个函数只能返回一个类型的值,但在某些特殊情况下,我们可能需要一个方法返回多个类型的值,除了通过ref,out或者泛型集合可以实现这种需求外,今天,讲一下元组和结构体在这一方面的应 ...
- 2021最新Java面试题全集-20210326版
在手撕了数千道网络流传的面试题,外加十多个不眠之夜, 终于从里面精心挑选出约500道题目, 做为大家求职.跳槽前复习准备面试使用. 一:挑选题目的原则: 常考的.常被面试问到的 题目有一定的深度和难度 ...
- 03.21 ICPC训练联盟周赛:UCF Local Programming Contest 2018正式赛
B Breaking Branches 题意:两个人比赛折枝,谁剩下最后1,无法折出整数即为输 思路:树枝长n,若是奇数,则Bob胜出,若是偶数,则Alice胜出,且需要输出1: 1 #include ...
- Redis 存储对象信息是用 Hash 还是 String
Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject 中的 type,则是代表一个 value 对象具体是何种数据类型,它包含字符串(St ...
- C++ string的size()和length()函数没有区别
C++标准库中的string中两者的源代码如下: size_type __CLR_OR_THIS_CALL length() const { // return ...
- 向Vertex Shader传递vertex attribute
在VBO.VAO和EBO那一节,介绍了如何向Vertex Shader传递vertex attribute的基本方法.现在我准备把这个话题再次扩展开. 传递整型数据 之前我们的顶点属性数据都是floa ...