热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

浅析倾斜摄影单体化OSG关系

近年来,测绘领域兴起了一项新的技术热点——倾斜摄影三维建模及应用。测绘产业链上下游的企业为此都在积极探索,以推动该项技术的健康发展和落地应用。然而&#x

        近年来,测绘领域兴起了一项新的技术热点——倾斜摄影三维建模及应用。测绘产业链上下游的企业为此都在积极探索,以推动该项技术的健康发展和落地应用。

  然而,什么样的技术才是真正符合用户实际应用需求的?在这里,我们要和大家讲解倾斜摄影应用的两个重要话题——倾斜摄影自动化建模成果(后文简称“倾斜模型”)的数据组织和单体化。

数据组织:要LOD 更要便捷和安全

  倾斜模型的一个突出的特点就是数据量庞大,这是因其技术机制、高精度、对地表全覆盖的真实影像所决定的。那么,如何承载海量的倾斜模型数据、保证快速加载和流畅渲染?这是倾斜摄影技术顺利实现应用的第一大“拦路虎”,必须拿下。

  近期看到业界两大厂商发布的稿件,对于这个问题的看法各有不同,一家推出全新的GIS技术支撑,可以直接读取OSGB格式的倾斜摄影模型海量数据,而另一家则认为需要导入和处理数据格式后读取,并对前者的处理方式表示质疑。究竟哪家强?

  这里暂且卖个关子,我们先聊一下另外一个概念:LOD(Level of Detail)。LOD是GIS平台提高性能的一个重要法宝,即对同一个数据从清晰到模糊有多份。当屏幕视角距离某个地物近时,软件自动调用最清晰层的数据;当屏幕视角远离该地物时,则自动切换为模糊层的数据。由于人眼本来就无法看清远处的数据,因此这样做并不影响视觉效果。例如影像金字塔、地图分比例尺切图等,都采用此方式。

  对于手工建模的模型,一般是通过三维GIS平台自行计算出多层LOD,并处理其远近距离的切换关系。而对于倾斜模型,由于其技术原理是先计算稠密点云、经过简化后再构建TIN,因此在数据生产的过程中,就能通过不同的简化比例来得到数据LOD,而不再需要GIS平台来进行计算。并且数据生产过程中计算出来的LOD效果也是最佳的。也正因为如此,无论是街景工厂还是Smart3D,其生产出来的倾斜模型都是自带多级LOD的,一般至少带有5-6层,多则10层以上。

  数据本身自带LOD,从技术原理上就决定了其看似庞大,其实完全可以做到非常高的调度和渲染性能(只要不破换原始自带的LOD)。这也是为什么我们使用数据厂家自带的Viewer就可以获得很好的加载和浏览性能。

  分析到这里,你就会明白:采用直接读取倾斜模型原始OSGB格式相比采用导入的方式更好。为什么这么说呢?一方面,导入过程费时费力,处理海量倾斜模型数据往往需要数周。更重要的是,在数据导入过程中,为了和平台内部格式保持一致,往往会破换原始数据的LOD,自行再构建LOD。这样构建的LOD,无论是效果还是性能,都远逊于原始LOD,导致性能不佳。

  此外,在格式选择上,倾斜摄影建模软件有内部私有格式(如Smart3D的s3c),另外还可输出为OSGB和DAE两种外部格式。其中,DAE格式由于是文本格式,直接读取效率太低,因此被排除在外。而OSGB格式是开源的OSG库所自带的二进制格式,直接读取效率高,且格式公开,有免费的开源库可直接使用,并且适合作为后续网络发布与三维服务共享的模型传输格式,因此成为最佳选择。

  那么,有人可能会问:OSGB作为公开格式,若直接使用,如何解决网络发布后的数据安全问题?对于这个问题,其实并不难解决:在服务端,我们虽然是直接读取osgb文件,但在网络发布缓存到客户端的模型,已经是通过服务端加密,并在客户端压缩打包为一个内部的大文件,如下图所示。因此,直接读取OSGB格式绝对不存在数据泄露等安全问题。

图 1服务端的OSGB文件

图 2客户端缓存后的大文件

  解答完上述问题,可能还有人会问:一大堆OSGB的小文件,拷贝和管理都很麻烦。如何解决?针对这个问题,我了解到国内相关GIS企业正在研发采用分布式数据库来存储和管理osgb文件,便于海量OSGB文件的存储、拷贝、管理和服务发布。让我们小小地期待一下先。

  值得注意的是,即便我们采用数据库来进行存储和管理,也是直接把每个OSGB小文件放到数据库中,而不是导入OSGB格式——我们坚决不破破坏数据原有的LOD,也坚决捍卫OSGB格式的开放性。彼时,数据的安全性则可以通过数据库本身的安全体系来予以保证。

单体化:切割还是矢量化?

  提到单体化,可能很多人说起来都是眼泪。基于倾斜影像,若做人工干预的建模,自然就不存在单体化的问题,生成的模型本来就是单体的。而自动化建模的成果,由于其生成机理,得到的模型是一个连续的TIN加贴图,并没有根据建筑物划分为一个个可以单独选中的对象。而我们都知道,在GIS管理和应用中,若倾斜模型不能进行对象的单独选中和查询,就只能和影像一样作为底图浏览,无法进一步深入应用。单体化成为第二大“拦路虎”,我们必须闯关成功。

如何实现单体化才是最好的?

  我想你脑海中冒出的第一个直观的想法一定是:对倾斜模型进行切割呀,这样切割之后的模型就和人工建模成果一个样了。

  不过我要很遗憾地告诉你:想法貌似很完美,但其实是一条“死胡同”。只要你切割一下数据,做一个小小的实验,就会一目了然了。当看到效果的一刹那,我想你一定会心凉半截。

图 3 倾斜模型切割后的边缘效果

 

  如上图,我想这样的边缘效果肯定不是用户所想要的。更重要的是,切割之后,两个主要后续用途都没法实现:

  一是替换人工精细建模的模型。看到这样的锯齿边缘,真不知道人工建模的人员如何才能把锯齿边缘接上去。难以想象建模人员的抓狂。

  第二个用途是隐藏某种类型的地物。这样露出一个锯齿状的空洞,你说评审专家是让项目不过啊,不过啊还是不过啊?

  为什么会有锯齿呢?是技术不够高?为此我截取了某知名厂商最近发表相关文章的截图。注意看,只要稍稍放大,你就能看到同样的锯齿。所以,我想说的是:这种锯齿是因倾斜模型生成机理而造成的,和GIS平台无关。

图 4 某厂商发布图片放大后看到的切割倾斜模型边缘效果

 

  第二个问题是,这样的切割后,也抛弃了数据自带LOD的优点,导致GIS平台只能按照普通模型的方法来构建LOD。倾斜模型数据量庞大,想想这性能表现也是醉了。

  切割之后存在的第三个问题是:切割必须事先输入对应地物的矢量底面数据。经过漫长的等待,切割出来之后,若发生任何一点变动,对不起,数据还得再返工切一遍。因此,其灵活性几乎为零。

  现在,让我们换一个思路来看待倾斜模型:它事实上就是带有TIN作为高程背景的影像。在二维GIS中,有谁见过根据矢量底面来把影像数据切割为建筑物影像图层、道路影像图层、绿植影像图层的吗?正确的思路是:我们在影像数据上进行矢量化,从而可以在影像+矢量的图层上选中建筑物、道路等地物。若一定需要把影像上的某种类型地物隐藏,也是通过叠加这种地物的矢量图进行显示过滤。

  把GIS的科学原理搞清楚了,我们回过头来再看待如何进行倾斜模型的单体化,就胸中有丘壑了。只要你试一下就知道,通过叠加的矢量底面,在渲染层面实现单体化,效果ganggang的:被选中的地物像是被高透膜紧密包裹,底部边缘笔直。

图 5 矢量化后的倾斜模型单体化边缘效果

 

  采用矢量化的方式,在保证效果、不破坏原始数据及LOD的同时,最大的好处还在于它打通了基于三维的倾斜模型和基于二维的矢量面之间的关键“关卡”,实现三维和二维GIS的完美一体化。基于此,GIS的一系列功能(如图查属性、属性插图、缓存区分析与查询、专题图制作等等)都可轻松实现。至此,我想对于倾斜模型的应用,你可以不用再纠结于选择哪个GIS平台,而是要充分发挥应用的广阔想象力。

  它带来的价值还体现在动态性和灵活性的大大提升。由于叠加的矢量面只需要一个简单的图层设置就可以起作用,这也就意味着:在应用过程中,可以随时更换需要叠加的矢量面。当用户增加数据类型后,不用再大费周章的把数据重新切割一遍,而是点两下鼠标,就可快速搞定。想一想,这是多么惬意的一件事。

  目前,支撑倾斜摄影应用的GIS技术还有一些缺陷,这个技术变革“加速度”的时代,快速响应、快速迭代、快速研发成为关键,想用户之所想,实现基于倾斜模型的更多能力、追求更优化的性能和效果,永远是我们GIS人共同的追求。


推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 网易严选Java开发面试:MySQL索引深度解析
    本文详细记录了网易严选Java开发岗位的面试经验,特别针对MySQL索引相关的技术问题进行了深入探讨。通过本文,读者可以了解面试官常问的索引问题及其背后的原理。 ... [详细]
  • 本文深入探讨了 Redis 的两种持久化方式——RDB 快照和 AOF 日志。详细介绍了它们的工作原理、配置方法以及各自的优缺点,帮助读者根据具体需求选择合适的持久化方案。 ... [详细]
  • 本文探讨了如何在日常工作中通过优化效率和深入研究核心技术,将技术和知识转化为实际收益。文章结合个人经验,分享了提高工作效率、掌握高价值技能以及选择合适工作环境的方法,帮助读者更好地实现技术变现。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 帝国CMS多图上传插件详解及使用指南
    本文介绍了一款用于帝国CMS的多图上传插件,该插件通过Flash技术实现批量图片上传功能,显著提升了多图上传效率。文章详细说明了插件的安装、配置和使用方法。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
author-avatar
佩菱淑华7
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有