谷歌倾斜摄影数据获取以及转换3DTiles介绍

一、背景

2005年谷歌地球横空出世,将地球以三维可视化方式展现在每一个电脑屏幕前的用户,掀起了数字地球热潮,而随着三维倾斜摄影模型数据的加入,将谷歌地球对全球的三维可视化效果表达,提升到了更高的层次。作为全球三维倾斜摄影覆盖面积最广的三维数字地球平台,谷歌地球为大家提供了全球各地的城市、森林、火山等各种地理要素的三维可视化表达,同时结合当今VR、AR平台创建游戏等真实场景,数据可视化更加立体和真实。Cesium作为开源的三维数字地球平台,将重点放在地理信息数据的接入与可视化,用户只需要关注上层业务开发,同时扩展“端”的表现形式,将Cesium与JavaScript前端、以及Unity、Unreal等游戏引擎结合,形成了当今开发者使用最广泛的开源三维数字地球平台。Cesium与谷歌地球的结合,源于2023年5月,谷歌官方将google倾斜摄影模型数据转换成Cesium能够接入的3DTiles格式,并在Google Map Platforms平台发布,用户可以通过GEE平台,生成数据调用API。2023年10月,两者的结合更进一步,谷歌倾斜摄影3DTiles数据集成到Cesium ion中,开发者只需要通过Cesium ion便可以访问谷歌全部共计49个国家2500多个城市的数据,大大方便了开发者对数据的使用。
但是对国内开发者来说,由于网络问题,开发者想访问这份数据是比较困难的,加上国内使用Cesium的场景大部分都是离线环境下,这份数据离国内开发者还比较遥远,国内开发者为了获取这份数据,付出了不少努力。

二、技术路线

谷歌倾斜摄影模型数据使用二进制进行编码,想要逆向转换,难度极大,但是国人的智慧是无穷的,主要技术路线如下:
1.既然无法逆向转换,那直接使用谷歌官方的程序解析文件,用帧缓存渲染工具保存成模型文件,再通过模型工具进行模型合并,这样就能获取一份面积很大的数据,再通过obj转3dtiles工具进行3DTiles数据生成。这种技术原理在CSDN上有开发者已经实现,大家可以搜索相关文章查看,具体原理大致如下:使用专门下载工具下载文件,并且结合图形开发调试神器RenderDoc以及Blender模型建模软件,直接将当前相机视景中的瓦片文件合并导出成一个obj或者fbx文件,再通过Blender进行模型合并成一个大的模型文件,最后使用obj生成3DTiles瓦片数据。这种技术路线直接,但是很繁琐,因为要获取高分辨率数据,需要不停移动场景,再通过工具生成模型,获取一屏数据还好,如果是获取整个大范围,每一屏都需要人工干预,非常耗费人工,而且要按照谷歌建立22层级LOD,很困难。这不禁让人想起之前获取谷歌影像数据的方法,当时也是按照IP限流,下载到指定数量后,IP就被谷歌官方封禁了,有人想出了奇招,获取当前窗口像素宽高和地理范围大小,再通过自动平移地图,对当前窗口进行截屏,这样就获取了当前窗口屏幕地理范围大小范围的影像,再进行瓦片切分,生成影像瓦片数据。
2.既然谷歌已经生成3DTiles数据,那直接把这份数据爬下来不就行了,很可惜,这份数据是按访问次数收费的,想全部爬下来,花的钱也不少,但是Cesium ion已经集成了这份数据,可以通过这个平台进行爬取,这种方式好处很直接能够下载直接用,坏处是谷歌地球倾斜模型数据一年至少更新6、7次,数据更新时,无法及时获得最新的3DTiles数据。。
2.有没有可能不借助RenderDoc,Blender等人工工具干预,直接解析谷歌最新原始瓦片数据,生成3DTiles数据呢,谷歌数据虽然是二进制数据,但是解析后也是Mesh格式,很多格式都通用的,那就逐瓦片解析,直接生成3DTiles的b3dm数据,我通过长时间不懈努力,证明这路线是可行的,能够完全生成谷歌1~最高级瓦片数据,与谷歌官方生产的3DTiles数据相比,显示性能和显示效率更好。

三、数据介绍

谷歌倾斜模型转换工具已经升级到V1.1版本,能够在一键设置且无人值守的情况下,6小时完成香港地区500多平方公里共计520GB的3DTiles数据生产,共计1~22级,10小时完成台湾地区台北、台中、桃园共计900多平方公里共计1TB的1-22级3DTiles数据生产,生产效率相当高。
目前生产出了澳门、香港以及台湾台北、桃园和台中地区的样例数据。澳门地区大约有50多平方公里面积,香港地区有500多平方公里,台湾地区共计900平方公里,覆盖了谷歌地球上香港、澳门和台湾地区的倾斜模型覆盖区域。视频效果可以看看下面的视频

台湾3DTiles数据一镜到底

从视频中可以看出,在Cesium上只加载了arcgis影像地图的情况下加载转换后的台湾3DTiles数据,场景缩放、平移、旋转时,1-22级3DTiles数据加载相当丝滑,毫无卡顿迟滞感!

四、数据使用

生产出来的3DTiles数据包括json文件和b3dm文件,和卫星影像数据一样,都是静态数据,使用Nginx即可发布,发布方法可以参考我之前的文章(中国34个省份12.5m分辨率高程地形瓦片数据), 前端Cesium接入示例代码如下:

let tileset = await Cesium.Cesium3DTileset.fromUrl(
    "http://localhost:8802/tileset.json");
  viewer.scene.primitives.add(tileset);
  viewer.scene.globe.depthTestAgainstTerrain = false;

需要注意的是,使用3dtiles数据,需要关闭depthTestAgainstTerrain,否则会有地形高程遮挡显示问题。

五、总结

谷歌倾斜模型转换工具成果实现了对谷歌倾斜摄影数据的逆向解析以及转换成3DTiles格式数据,相比较使用RenderDoc、Blender等工具,耗费人工工时大大减少,在建立数据LOD及显示效率上大大增强,同时将谷歌最新的全球倾斜模型数据转换生成3DTiles数据,成为可能!

  • 42
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Geoserver 3D Tiles是一种用于地图显示的技术,它可以将三维场景数据组织为瓦片(tiles),实现如Google Earth等三维地球软件的效果。通过在Geoserver中使用3D Tiles,用户可以在WebGIS中快速有效地加载、可视化三维地图数据并进行交互操作。 Geoserver 3D Tiles的实现基于CesiumJS和3D Tiles标准,它支持各种数据格式的导入和转换,如GeoJSON, KML, Collada, CityGML等,并提供了丰富的渲染选项,可实现不同数据类型和渲染效果的组合。 除了支持基本的3D渲染功能,Geoserver 3D Tiles还可以集成其他WebGIS平台,如OpenLayers、Leaflet、Mapbox等,提供更为丰富的功能和在线服务。另外,Geoserver 3D Tiles也支持访问和动态加载远程数据,使用户可以从云端获取和处理数据。 总的来说,Geoserver 3D Tiles是一个功能强大、易于使用和高效的三维地图显示技术,它可以帮助用户实现各种不同类型和规模的三维地图应用和服务。在未来的WebGIS发展中,Geoserver 3D Tiles将继续发挥重要作用,并为用户开拓更为广阔的地图可视化领域。 ### 回答2: Geoserver 3D Tiles 是一种针对三维地理信息数据的服务和格式标准。它提供了一种高效、可扩展和开放的方式来存储、传输和渲染大规模的三维数据集。 Geoserver 3D Tiles 的主要优势在于其能够支持大规模三维数据的处理和处理能力。通过多级渐进的数据格式,它可以快速加载和显示具有高细节水平的复杂三维对象,如建筑物和地形。同时,它还可以支持并发用户和高负载的请求,从而提高了整个三维地理信息系统的性能和可靠性。 此外,Geoserver 3D Tiles 还支持 Web 消费者和开发人员在不同的应用程序和工具之间方便快捷地共享数据。它采用基于 RESTful API 的架构,通过标准的 HTTP 请求和响应来实现数据的读取和写入。因此,它可以与任何支持 HTTP 协议的应用程序和设备进行交互,包括 Web 应用程序、桌面应用程序和移动设备。 总之,Geoserver 3D Tiles 为三维地理信息系统的存储、分发和渲染提供了一种高效、可扩展和开放的方式。它的多级渐进数据格式、多用户支持和 RESTful API 架构使得它成为处理和呈现大规模三维数据集的理想选择。 ### 回答3: Geoserver是一种开源的地理信息系统软件,被广泛用于地理空间数据的发布、管理和分析。其中的3DTiles是一个支持三维空间数据可视化的标准,可以提供更加丰富、灵活的可视化效果。 Geoserver 3DTiles的使用可以分为两个方面:数据准备和数据发布。在数据准备方面,需要将三维数据转换3DTiles格式,并进行贴图等处理,以便在可视化过程中达到更加真实的效果。在数据发布方面,可以通过Geoserver进行数据的发布和管理,同时结合其他地理信息系统软件实现三维地图的浏览和交互,从而提高地理空间数据的使用效率和可视化效果。 使用Geoserver 3DTiles能够实现地理空间数据在三维空间中的可视化,拓展了地理信息系统的应用范围,使得地理数据的分析和利用更加便捷、精准,为科研和实践提供更为丰富的维度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值