倾斜摄影自动化建模成果的数据组织和单体化

2024-05-10 08:08

本文主要是介绍倾斜摄影自动化建模成果的数据组织和单体化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源:超图软件 2015-04-23 13:43:37

  倾斜摄影三维建模及应用是近年来测绘 领域关注的热点,产业链上下游的企业为此都在积极探索,以推动该项技术的健康发展和落地应用。然而,什么样的技术才是真正符合用户实际应用需求的?在这 里,我们要和大家讲解倾斜摄影应用的两个重要话题——倾斜摄影自动化建模成果(后文简称“倾斜模型”)的数据组织和单体化。

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

  倾斜模型的一个突出的特点就是数据量庞大,这是因其技术机制、高精度、对地表全覆盖的真实影像所决定的。那么,如何承载海量的倾斜模型数据、保 证快速加载和流畅渲染?这是倾斜摄影技术顺利实现应用的第一大“拦路虎”,必须拿下。是直接读取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的小文件,拷贝和管理都很麻烦。如何解决?针对这个问题,超图软件正在研发采用分布式数据库来存储和管理osgb文件,便于海量OSGB文件的存储、拷贝、管理和服务发布。

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

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

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

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

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

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


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

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

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

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

  为什么会有锯齿呢?是切割的技术不够高?完全不是。根源在于倾斜模型数据本身其实就是三角面片加纹理,切割算法无非是根据建筑底面来决定哪些三 角面片保留,哪些三角面片被抛弃;边缘的锯齿其实也就是留下来靠边的三角面片而已。说到底是倾斜模型自动化生成算法所决定了的,和GIS平台真没什么关 系。

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

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

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

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



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

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

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

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

这篇关于倾斜摄影自动化建模成果的数据组织和单体化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975907

相关文章

计算机Java项目|基于SpringBoot的网上摄影工作室

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路  关注作者有好处 文末获取源码  项目编号:L-BS-QBBSSPRINGBOOT

摄影约拍管理系统

摘 要 摄影约拍管理系统是一种基于SSM框架的系统,旨在为摄影师和用户提供便捷的约拍服务。本文通过对系统的设计与实现,解决了传统约拍方式中存在的信息不对称、预约流程繁琐等问题。本文介绍了系统的研究背景与意义,分析了国内外发展现状,并介绍了相关技术——Java、SSM框架、JavaScript等,明确了研究内容与创新点,且对设计结构进行了分析。此外,文章通过数据库设计和系统非功能设计,搭建了系统环

文华财经T8自动化交易程序策略模型指标公式源码

文华财经T8自动化交易程序策略模型指标公式源码: //定义变量 //资金管理与仓位控制 8CS:=INITMONEY;//初始资金 8QY:=MONEYTOT;//实际权益 8QY1:=MIN(MA(8QY,5*R),MA(8QY,2*R)); FXBL:=N1; DBKS:8QY1*N1;//计算单笔允许亏损额度 BZDKS:=MAX(AA-BB,N*1T)*UNIT; SZDKS:=MAX(

直线一级倒立摆微分建模

建模内容如下:         https://mp.weixin.qq.com/s?__biz=Mzg5OTIyNDEzMg==&mid=2247483673&idx=1&sn=c4e8024ebffd87611b757f7fd570f3c4&chksm=c057c632f7204f2442d0aab652847e342447fa604f04d74faafb798f022fb30e

Selenium进行Web自动化测试

Selenium进行Web自动化测试 Selenium+Python实现Web自动化测试一、环境配置 Selenium+Python实现Web自动化测试 一、环境配置 环境基于win10(X64) 安装Python;安装PyCham安装chomedriver chomedriver下载地址 可以查看本地chrome软件版本下载对应的chomedriver,如果没有则下载最新

【Sklearn驯化-环境配置】一文搞懂sklearn建模的最优环境搭建用法

【Sklearn驯化-环境配置】一文搞懂sklearn建模的最优环境搭建用法   本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 相关内容文档获取 微信公众号 🎇 相关内容视频讲解 B站 🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机

Kafka中的数据本身就是倾斜的,使用FlinkSQL该如何处理

又是经历了一段不太平的变动,最近算是稳定了点,工作内容又从后端开发转换成了sql boy,又要开始搞大数据这一套了。不同的是之前写实时任务的时候都是用的java代码,新环境却更加偏向与使用flink sql 解决,所以记录下使用flink sql 的一些感悟和遇到的问题吧。 查看反压:         如果flink任务是这么一坨或者几坨task组合在一起,有些时候是如法看

selenium Python自动化测试(基本的键盘事件)

#coding=utf-8 ''' Created on 2015-5-10 @author: user ''' ''' 几种常用的键盘指令: send_keys(Keys.BACK_SPACE) 删除键(BackSpace) send_keys(Keys.SPACE) 空格键(Space) send_keys(Keys.TAB) 制表

WebDriver基本操作入门及UI自动化练手页面

在这里集中了我们在做UI自动化时常见的一些控件操作。希望能对新手有帮助。 下载地址:http://files.cnblogs.com/zhangfei/demo.rar package com.test;import java.util.List;import java.util.Set;import org.openqa.selenium.Alert;import org.o

Selenium Test 自动化测试 入门级学习笔记

1、下载安装Firefox-selenium插件    需要下载插件可以联系,这里暂不提供下载地址。   2、集成Eclipse   需要下载jar包可以联系,这里暂不提供下载地址。   集成Eclipse非常简单,加载进去jar包就OK! 3、通过Selenium IDE 录制脚本     { 点这里就开始录制!} 以上操作是:百度输入hao123,点击搜索。 4、