无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例
作者:mmseoamin日期:2023-12-14

无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例

    • 运行环境
    • Cesium 加载 3dtile 数据,用来测试环境
    • OSGB 数据下载
    • OSGB 格式数据转为 3dtile
      • 工具和产品介绍
      • OSGB 文件和元数据配置文件
      • 亲测可用工具以及过程
        • 3dtile工具
        • osg2cesiumApp.exe 工具,版本:1.13
        • 试错全过程
        • 总结
        • 在线示例

          2023年4月19日更新—搞了一个 Cesium 镜像,欢迎使用:沙盒示例 和 API

          公司平台需要展示离线 3dtile 数据,之前一直使用在线资源,后来尝试加载本地发布的 3dtile 数据也没问题。

          考虑到以后实际中应用,一般为无人机拍摄的 斜影数据,基本都是 OSGB、OBJ 等类型,而公司平台使用 Cesium 来加载 3dtile 数据,目前 Cesium 还不支持 OSGB、OBJ 等数据,因此需要将数据转为 3dtile 格式。

          经过几乎一天的尝试,走了众多弯路 (PS:CSDN 真是互相抄啊),终于搞定,这里记录一下过程问题,以及最终解决方案,为类似需求的广大 GISer 节约时间。

          本文内容包括:运行环境、Cesium 加载 3dtile 数据、OSGB 数据下载、OSGB 格式转为 3dtile、试过全过程


          运行环境

          操作系统:windows 10

          Cesium版本:1.96

          浏览器:谷歌

          Tomcat:8.5

          Java:1.8


          Cesium 加载 3dtile 数据,用来测试环境

          首先要确保环境和代码没问题,以下是测试资源以及在线示例:

          测试资源: 大雁塔场景

          在线示例:Cesium 在线加载 3dtile 场景

          如果大雁塔场景可以加载,说明环境没问题,则可以进行下一步。

          嫌麻烦可以直接下载这个资源,可以直接解压启动访问: Cesium 加载 3dtile 示例


          OSGB 数据下载

          首先是测试数据的获取,经搜索,发现两个神网站:

          1. 申请数据使用:全国地理信息资源目录服务系统

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第1张

          2. 直接下载数据: 三维实景模型

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第2张

          PS: 原网址已经失效,新网址:三维实景模型

          感谢博主 biabia3

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第3张

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第4张

          推荐使用第二个网站资源,很方便。

          已下载数据展示:

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第5张

          OSGB 格式数据

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第6张

          3dtile 数据

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第7张

          此网站可以选择下载 OBJ、3dtile、OSGB 三种格式,其中 3dtile 可以直接使用 Cesium 加载(可使用本文提供源码测试),其他格式需要转换才行。

          本文主要是对 OSGB 的转换。


          OSGB 格式数据转为 3dtile

          本来以为,OSGB 格式转 3dtile 应该是非常成熟的技术了,应该很快就可以搞好,结果几乎把所有失败都经历了一遍,直到最后一刻才算是比较完美的解决了。


          工具和产品介绍

          尝试的工具主要包括:Cesiumlab 2、OSGBLab 2、3dtile.exe、osg2cesiumApp.exe、Converter.exe

          简单总结一下(不排除因版本问题导致的偏见),后边有专门试错过程:

          1. Cesiumlab 2 未知原因,转换失败,只生成了 tileset.json

          2. OSGBLab 2 可以转换成功,速度也很快,但是有一些问题:一个是必须设置压缩参数;另外,效果比较差,失真严重

          3. 3dtile.exe,命令行执行,可以转为 3dtile ,但是 Cesium 加载失败

          4. osg2cesiumApp.exe 转换失败,或者转换之后,模型加载显示全白色

            更正一下:osg2cesiumApp.exe 1.3 转换失败;最新版 osg2cesiumApp.exe 1.13 转换成功,加载也正常!

          5. Converter.exe 转换成功,但是坐标系不对,国内 坐标偏移到国外

          结论:经测试发现,新版 3dtile.exe 可以完美将 OSGB 格式转 3dtile 格式,而且可以在 Cesium 中正常加载

          注意:旧版 3dtile.exe 转换成功的 3dtile 文件,Cesium 加载会报错,而且全网没找到解决办法。

          错误信息:RuntimeError: Unsupported glTF Extension: KHR_technique_webgl。


          OSGB 文件和元数据配置文件

          本文 OSGB 文件结构:

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第8张

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第9张

          必备元数据配置文件:metadata.xml

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第10张

          
          
          	
          	EPSG:2326
          	
          	835786,820849,0
          	
          		Visible
          	
          
          

          注意: metadata.xml 一般是跟 OSGB 一起生成的,如果没有,可以在获取 OSGB 数据的地方寻找一下。

          笔者当时废了半天劲,自己创建元数据配置文件,后来还出现各种问题,最后发现,原来在 OSGB 资源网站可以下载

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第11张

          PS:如果实在没有 metadata.xml,也可以手动创建,只不过最后的坐标可能会偏移!!!


          亲测可用工具以及过程

          3dtile工具
          1. 准备 3dtile 工具,开源项目,下载地址:3dtile

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第12张

          2. 准备 OSGB 数据,按照上文目录结构

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第13张

          4. 执行命令,生成 3dtile 格式数据

          3dtile.exe -f osgb -i  本机OSGB地址\input -o  本机3dtile输出地址\output
          

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第14张无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第15张

          5. 将 3dtile 拷贝至 tomcat 中

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第16张

          6. 运行 tomcat(cesium页面和3dtile需要在同一个tomcat下,否则会跨域),查看效果

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第17张

          osg2cesiumApp.exe 工具,版本:1.13
          1. 准备 osg2cesiumApp.exe 工具,下载地址:osg2cesiumApp.exe 1.13

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第18张

          1. 准备 OSGB 数据,按照上文目录结构

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第13张

          4. 启动程序,选择路径,配置参数,生成 3dtile 格式数据

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第20张

          1. 将 3dtile 拷贝至 tomcat 中

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第21张

          1. 运行 tomcat(cesium页面和3dtile需要在同一个tomcat下,否则会跨域),查看效果

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第22张


          试错全过程

          1. Cesiumlab 2 未知原因,转换失败,只生成了 tileset.json。

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第23张

          1. OSGBLab 2 可以转换成功,速度也很快,但是有一些问题。必须设置压缩参数;另外,效果比较差,可以看以下截图。

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第24张

          返回数据

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第25张

          加载效果,失真比较严重:

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第26张

          1. 3dtile.exe(低版本),命令行执行,可以转为 3dtile ,但是 Cesium 加载失败

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第27张

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第28张

          错误:RuntimeError: Unsupported glTF Extension: KHR_technique_webgl。

          经长时间搜索,全网几乎都是同一个答案,亲测无效,建议放弃!!!

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第29张

          1. osg2cesiumApp.exe 开始转换失败,后来可以转换,但是 全是白色

            注意:osg2cesiumApp.exe 1.13 亲测可以转换成功!

            无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第30张

            无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第31张

          2. Converter.exe 可以转换,坐标系偏移很大,此时坐标在香港,但是实际坐标在北极圈附近。

            无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第32张

          无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第33张


          总结

          关键因素:

          1. 使用 3dtile 工具,且不能使用旧版
          2. 元数据配置文件 metadata.xml 必须有且正确。
          3. 命令输入正确:3dtile.exe -f osgb -i 输入路径\test\input -o 输出路径\test\output

          干扰因素:

          1. 3dtile 千万不要下载错版本。

            旧版:

            无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第34张

            新版:

            无人机斜影(倾斜摄影)数据(OSGB)转 Cesium 3dtile 数据归纳总结以及亲测可用示例,在这里插入图片描述,第35张

            当然,也可以直接下载本文提供的工具。

          2. 避开过期博客。很多博客都是 2018年、2019年的,建议搜索的时候选择近一年作为查询条件。


          在线示例

          为了方便查看,文章结尾再加一次在线示例。

          在线示例:Cesium 在线加载 3dtile 场景

          PS: 下边参考博客,很多过期资源,建议谨慎参考!!!


          参考博客:

          无人机倾斜摄影建模的五种常见文件格式OSGB

          OSGB转Cesium 3DTile并在浏览器中浏览

          免费下载倾斜摄影实景三维数据的途径

          osgb(倾斜摄影数据)转换为3dtitle工具分享

          Cesium加载倾斜摄影数据

          Cesium加载gltf报错:RuntimeError: Unsupported glTF Extension: KHR

          Cesium 3DTiles转换工具

          cesuim加载倾斜摄影OSGB三维数据完整过程(超详细)