首页 > 其他分享 >GIS融合之路(八)-如何用Cesium直接加载OSGB文件(不用转换成3dtiles)

GIS融合之路(八)-如何用Cesium直接加载OSGB文件(不用转换成3dtiles)

时间:2024-11-13 15:46:52浏览次数:1  
标签:GISBox GIS 山海 OSGB 可视化 3dtiles 加载

系列传送门:

山海鲸可视化:GIS融合之路(一)技术选型CesiumJS/loaders.gl/iTowns?

山海鲸可视化:GIS融合之路(二)CesiumJS和ThreeJS深度缓冲区整合

山海鲸可视化:GIS融合之路(三)CesiumJS和ThreeJS相机同步

山海鲸可视化:GIS融合之路(四)如何用CesiumJS做出Cesium For Unreal的效果

山海鲸可视化:GIS融合之路(五)给CesiumJS加上体积云(Volumetric Cloud)和高度雾(Height Fog)

山海鲸可视化:GIS融合之路(五)番外-山海鲸的体积云又又又升级了

山海鲸可视化:GIS融合之路(六)-Cesium的雨雪风雷电效果

山海鲸可视化:GIS融合之路(七)-Cesium实现夜空月亮星星渲染


本来觉得这个系列已经结束了,最近山海鲸研发了一个新产品-GISBox,研发过程中遇到了一个新的问题,那就是如何在Web中直接加载OSGB文件。

这里先说下GISBox项目的背景,我们在做倾斜摄影项目的过程有大量需要编辑OSGB模型的需求,但目前市面的产品要么就是产品功能单一,要么就是连试用都无法试用。我们希望打造一款真正业内愿意使用,也能一站式的搞定从OSGB编辑,转换,切片,分发完整链路的产品,这样GISBox就诞生了,目前产品正在快速完善中,大家可以下载体验:

GIS工具箱(GISBox)-免费的倾斜摄影OSGB/3Dtiles编辑转换发布平台

当然我们这篇文章并不打算介绍GISBox的研发内容,而是因为在GISBox中,我们要做OSGB文件的编辑。但OSGB如何直接加载呢?我们先看下OSGB文件的基本结构:

OSGB文件目录结构和文件内容结构

当然这张图对于osg::Group下面的osg::Geometry,osg::Texture2D,osg::DrawElement等等的元素没有进行描述,实际的文件结构要复杂的多,其中osg::PagedLOD上还存储了LOD不同计算方式和子文件地址的指向。

了解了文件的结构,那么问题来了。用什么库来加载呢?经过调研,我们发现了以下几种方案:

1.OSGViewer开源项目

最常见的做OSGB编辑的软件都是直接用OpenSceneGraph这个库里的OSGViewer开源项目来改的,这种方案的优势是OSGB的读取和渲染都无需自己写,只要在开源项目的基础上添加功能即可。但是这个方案的缺点也很明显,首先这个库是一个几乎10年前就停止维护的老库,渲染甚至还采用了OpenGL1.0的标准,想要在视觉上做一些调整几乎不可能。同时了解山海鲸的朋友应该知道,我们山海鲸创立了CS/BS动态切换的软件架构,我们所有的软件都可以既当作纯软件使用,也可以转换为服务器,变成内网协同的Web系统来使用。而OpenSceneGraph这套代码很难跑在Web上。

关于山海鲸的CS/BS切换,大家可以移步看下这个视频:

【山海鲸可视化CSaaS功能演示】实现BS/CS架构一键热切换

2.osg-serializer-js开源库

这个库应该是目前Github上唯一一个可以直接解析OSGB的JS库了,好心的作者根据OpenSceneGraph的C++版本写了一套js的版本。我们试用了一下,基本的功能还是实现的不错的,基本可以将OSGB的文件很好的加载进来。这个库的优点是可以方便的在Web上使用。问题也很明显,兼容性略显不足,有些OSGB文件不支持。作者自己也说了不再维护这个库,推荐直接编译OpenSceneGraph的wasm。而且渲染端也是需要自己写的。

3.OpenSceneGraph编译WASM

根据第2条中提到的作者说的方案,我们做了直接的OpenSceneGraph的wasm编译。这个方案优点是兼容性好,且可以直接在Web中使用,缺点呢主要是和前端代码的整合。我们最初使用这套方案时,是通过修改Ceisum中3dtiles渲染逻辑直接来渲染加载进来的osgb的,但因为OpenSceneGraph中使用NodeVisitor的逻辑,需要去继承C++的库,同时需要同时处理C++和JS之间的类通信问题。代码上需要进行较为复杂的处理。

4.自己写OSGB解析库

上面这三种方案各有各的优缺点,虽然我们采用第3条方案,成功地在Cesium中显示了OSGB,且可以正常的有PagedLOD的逻辑。但前文也说了,这个方案的问题是整个项目难以维护,需要同时维护C++和Cesium两端的代码,另外通信部分也较为复杂。因此最终我们放弃了这套方案,而是选择了一条根据OpenSceneGraph开源库完全重写一套自己的OSGB的TS库的方案,这个方案的显然是最直观的方案,但也是成本最高的方案。

完成了这套库后,我们处理了InputStream和Buffer的兼容性,实现了在Web上和软件中可以同样逻辑打开OSGB并显示的方案。另外将来也可以进一步去升级渲染效果和直接对OSGB的顶点数据直接进行修改,大家可以简单看下加载的效果,可以发现虽然相比C++的OSGViewer来说加载速度略有下降,但考虑到可以直接在Web上加载和编辑,也可以叠加我们系列文章中提到的大气云层效果,最终呈现已经很让人满意了:

大家也可以直接下载GISBox体验一下效果:

GIS工具箱(GISBox)-免费的倾斜摄影OSGB/3Dtiles编辑转换发布平台

标签:GISBox,GIS,山海,OSGB,可视化,3dtiles,加载
From: https://www.cnblogs.com/shanhaibi/p/18544122

相关文章

  • 2024年全新WebGIS开发学习方法
    现在每天都有越来越多的企业依靠与地理信息位置相关的数据来改善运营和增加利润,包括:客户位置、货物位置等,这些数据信息现在已经成为许多业务逻辑中不可或缺的一部分。但是,很少有人同时会GIS和编程,程序员分为很多种,但是GIS开发通常是指前端+GIS开发,大部分做前端的程序员,不会G......
  • WebGIS开发及二三维GIS开发框架对比分析
    GIS(地理信息系统)前端开发是GIS应用开发的重要组成部分,随着WebGIS技术的发展,前端开发在地图应用中的作用愈加重要。本文将介绍GIS前端开发的基本计划以及市面上各种二三维GIS开发框架的对比分析。WebGIS开发基础1.了解GIS基础知识GIS前端开发需要掌握GIS基础知识,如地图投......
  • 【就业反馈】2401期GIS开发特训营最高薪资13000元,人均1.4个offer
    总有人问想学GIS开发零基础能学会吗?学完真的能推荐就业吗?当然啦!!!新中地2401期GIS开发特训营毕业学员,就业反馈来啦!2401期GIS开发特训营,24年6月21日结业2401期就业数据反馈2401期就业数据反馈2401期班就业反馈图在新中地GIS开发特训营,很多人几乎都是从零......
  • 【项目实战】机器学习分类预测(RF/SVM/Logistic)与可解释性分析(SHAP/LIME)
    机器学习分类预测与SHAP可解释性分析研究目的今天,我将尝试预测一个人是否会中风。首先,我将进行广泛的数据可视化。这将帮助我了解是否有任何特征看起来预示着中风,或者实际上预示着不会中风。接下来,我将建立多个模型,并选出表现最好的一个。我将使用f1分数作为主要指标,因为......
  • 【吴恩达机器学习笔记】9.1-Logistic 回归的梯度下降
    使用同步更新来执行更新的办法罗杰斯特回归的梯度下降这张图片展示了逻辑回归中的梯度下降算法。逻辑回归是一种广泛使用的分类算法,它使用一个逻辑函数来预测事件发生的概率。梯度下降是一种优化算法,用于最小化损失函数,从而找到最佳的模型参数。图片中的内容可......
  • 信创背景下的GIS技术创新突破方向
    随着信息技术应用创新(信创)的推进,GIS技术正面临新的发展机遇与挑战。在信创背景下,GIS厂商如何通过技术创新来适应时代发展,成为了一个值得深入探讨的问题。 1.强化自主研发能力信创的核心在于自主可控,GIS厂商需要加强自主研发,掌握核心技术。通过自主创......
  • ArcGIS Pro SDK Addin-DAML
    ArcGISProSDKAddin-DAML文章目录ArcGISProSDKAddin-DAML1Panes:重置窗格2Button:从功能区中移除核心按钮3Button:将新按钮插入功能区上的现有组4Menu:在图层上下文菜单中插入一个新按钮5Menu:在MapContainer上下文菜单中插入新菜单6Menu......
  • ArcGIS006:ArcMap常用操作151-200例动图演示
    摘要:本文介绍了ArcMap邻域分析、栅格表面分析、水文分析、区域分析、提取分析等工具箱中的工具功能。包括计算图层间点、线、面要素间的距离、位置和角度,创建缓冲区,添加计算信息到属性表,分割面要素,编号,生成统计信息,计算几何测量值,按区域统计栅格数据、DEM高程等,使用DEM数据进......
  • 实用GIS工具箱对比:GISBox等倾斜摄影切片软件的优缺点解析
    在地理信息系统(GIS)领域,强大的工具可以帮助用户更高效地进行数据处理、分析和可视化。本文介绍了五款实用的GIS工具箱——GISBox、QGIS、ArcGISOnline、GlobalMapper、MapTiler。它们各自在数据编辑、格式转换、地图发布和切片等方面具有独特的功能,能够满足从地理数据管理到复杂......
  • 如何利用GIS提升自然资源数智化能力
    自然资源的数智化管理是推动生态文明建设和实现可持续发展的重要途径。地理信息系统(GIS)作为处理和分析空间数据的关键技术,在提升自然资源数智化能力方面发挥着至关重要的作用。 1.构建数字化基础设施首先,需要构建集约高效的数字化基础设施,这是实现自......