当前位置: 首页 > news >正文

谷歌地图的3d街景使用的是什么数据格式?

文章目录

  • 🌐 一、3D 街景(Street View)
    • 1. 图像部分
    • 2. 元数据(Metadata)
  • 🏙️ 二、3D 城市模型(Google Earth 或 Maps 的倾斜摄影模型)
    • 1. 模型部分
    • 2. 瓦片划分(Tiling System)
    • 3. 材质贴图
    • 🛑 注意
    • 🔄 与标准格式对比(参考)
    • ✅ 一、Google 3D Mesh 使用的格式(Protobuf + Binary)
      • 1. **数据结构**
      • 2. **典型组成**
    • ✅ 二、glTF(GL Transmission Format)
      • 1. 格式类型
      • 2. 核心特性
      • 3. 示例结构(gltf JSON):
    • ✅ 三、3D Tiles(由 Cesium 推出)
      • 1. 组成文件
      • 2. 瓦片机制(LOD)
      • 3. b3dm 文件结构
    • 🧠 总结对比
    • 🔧 开发者建议

谷歌地图的3D街景(Google Street View)以及3D城市模型使用的不是公开标准格式,而是 Google 自定义的私有格式,以下是它们背后的主要数据格式和技术细节(基于公开资料与技术逆向分析):


🌐 一、3D 街景(Street View)

1. 图像部分

  • 格式:JPEG、WebP、或类似压缩格式(部分使用 JPEG XR、JPEG 2000)

  • 全景格式:Equirectangular(等距矩形投影),常见尺寸为 13312x6656 或类似的宽高比。

  • Tile 切片方式

    • 图像被切片成瓦片(Tiles),根据缩放级别分层加载,类似于 Google Maps 瓦片地图。
    • 切片 URL 通常通过 token+坐标的方式组合,需解码 API 请求。

2. 元数据(Metadata)

  • 格式:JSON 或 Protocol Buffers(protobuf)序列化格式

  • 包含:

    • 相机位置(GPS)
    • 朝向、视场角(pitch, yaw, fov)
    • 拍摄时间、设备信息
    • 邻近街景的 ID 列表(用于导航)

🏙️ 二、3D 城市模型(Google Earth 或 Maps 的倾斜摄影模型)

1. 模型部分

  • 格式:Google 使用的是一种叫做 “glTF-like” 的私有格式,非标准 glTF,但结构类似

  • 实际内部结构常见为:

    • .bin.pb(protobuf 二进制),包含 mesh 顶点、索引、纹理坐标等
    • .jsonmanifest 描述文件(可类比 glTF 的 scene tree)
    • 高度优化与压缩(经常使用 Google Draco、Zstandard 等压缩)

2. 瓦片划分(Tiling System)

  • 类似于 Cesium 3D Tiles 的金字塔瓦片结构(类似于 quadtree/octree)
  • 每个区域以瓦片(tile)划分,每块 tile 内包含多个 mesh 与材质贴图

3. 材质贴图

  • 使用压缩纹理(如 WebP、Basis、JPEG),并进行多级 mipmapping 优化网络加载速度

🛑 注意

谷歌并没有公开其3D模型和街景的完整格式规范,这些数据基本上都通过加密 API 或数据流加密保护,不开放下载与二次利用。部分开源项目(例如 google-maps-3d-hack)通过逆向工程获取了部分解码逻辑,但需谨慎使用,可能违反服务条款


🔄 与标准格式对比(参考)

数据类型Google 内部格式(私有)类似标准格式
街景全景图像Equirectangular JPEG/WebPJPEG, equirectangular
3D MeshProtobuf + BinaryglTF, 3D Tiles
材质贴图WebP / BasisJPEG, PNG, KTX2
瓦片结构自定义 tile LOD 树结构Cesium 3D Tiles

好的,我们来详细解析一下 Google 地图中 3D Mesh 使用的 Protobuf + Binary 私有格式,以及与其类似的标准格式 glTF3D Tiles,从结构、用途、优势、实现方式等方面进行对比。


✅ 一、Google 3D Mesh 使用的格式(Protobuf + Binary)

Google Earth 或 Google Maps 中的 3D 建筑、地形模型,使用了如下结构:

1. 数据结构

  • 元信息:使用 Protocol Buffers (Protobuf) 编码
  • 模型数据(Mesh、纹理):使用二进制数据(.bin),通常是自定义结构体布局
  • 切片结构:基于 四叉树(Quadtree)八叉树(Octree) 空间分层

2. 典型组成

文件类型内容说明
.pb.pbfProtobuf 序列化的元信息(如 tile 索引、LOD、边界框、相机)
.bin.mesh实际的顶点坐标、法线、索引、纹理坐标等
.jpg/.webp纹理图
.manifest.json根节点引用和层级说明

Google 使用自家优化方案对这些数据进行了压缩、加密和混淆。


✅ 二、glTF(GL Transmission Format)

glTF 是 Khronos Group 推出的现代 3D 模型标准,被称为“3D 场景的 JPEG”。

1. 格式类型

文件类型说明
.gltfJSON 格式描述文件,引用外部资源
.glb二进制封装版 glTF,包含所有资源
.bin外部二进制缓冲区(用于顶点、索引、法线等)
.jpg/.png外部纹理贴图

2. 核心特性

  • 支持网格(Mesh)、材质(PBR)、动画、骨骼、相机、节点树
  • 支持 Draco 压缩、KTX2 纹理压缩
  • 体积小,适合网络传输(Web-friendly)

3. 示例结构(gltf JSON):

{"asset": { "version": "2.0" },"scenes": [{ "nodes": [0] }],"nodes": [{ "mesh": 0 }],"meshes": [{"primitives": [{"attributes": {"POSITION": 0,"NORMAL": 1,"TEXCOORD_0": 2},"indices": 3,"material": 0}]}]
}

✅ 三、3D Tiles(由 Cesium 推出)

专为大规模地理空间数据(如城市模型、倾斜摄影)优化的格式,适用于:

  • 城市级别 3D 建模
  • 大量 Tile 的 LOD 加载

1. 组成文件

文件类型说明
tileset.json瓦片层级、空间结构、每个 tile 的 bounding volume
.b3dm包含 glTF 的 3D Mesh + Metadata(Binary glTF + Batch data)
.i3dmInstanced glTF(适用于大量重复模型)
.pnts点云格式
.cmpt多类型组合格式(如多个 b3dm)

2. 瓦片机制(LOD)

  • 每个 tile 包含一部分区域的模型
  • 根据相机距离自动加载不同分辨率
  • 具备 culling、boundingVolume 等性能优化机制

3. b3dm 文件结构

Header (28 bytes)
├─ magic: 'b3dm'
├─ version: 1
├─ byteLength
├─ featureTableJsonLength
├─ batchTableJsonLength
├─ glb: 二进制 glTF 数据体

🧠 总结对比

特性Google 私有格式glTF3D Tiles
是否开放❌ 否✅ 是✅ 是
是否支持瓦片LOD✅ 是❌ 无(需自建结构)✅ 是(原生支持)
文件结构Protobuf + Binary + TextureJSON + BIN + TextureJSON + 多种 Tile 格式
网络友好✅ 高度优化✅ 网络优先✅ 为 WebGIS 设计
使用场景Google Earth/MapsWeb 3D 模型展示Cesium / 地理数据

🔧 开发者建议

目标建议使用
浏览器显示 3D 模型glTF / glb(如 three.js, babylon.js)
GIS 城市级 3D 数据3D Tiles(如 CesiumJS)
模拟 Google Earth 效果自建 3D Tiles + 倾斜摄影 模型
解码 Google 格式高难度,不建议(需逆向 protobuf,违反 ToS)

http://www.lqws.cn/news/493363.html

相关文章:

  • Java 程序设计试题​
  • 常见JavaScript 代理模式应用场景解析
  • 6.23_JAVA_RabbitMQ
  • 2025年中科院三区全新算法,恒星振荡优化器:受自然启发的元启发式优化,完整MATLAB代码免费获取
  • hive集群优化和治理常见的问题答案
  • 综述AI生成工具推荐:高效自动化生成学术综述
  • 网络安全之某cms的漏洞分析
  • MocapApi 中文文档 和github下载地址 NeuronDataReader(以下简称 NDR)的下一代编程接口
  • 1 Studying《Systems.Performance》7-13
  • Maven 多模块项目调试与问题排查总结
  • SpreadJS 迷你图:数据趋势可视化的利器
  • Web基础 -SpringBoot入门 -HTTP-分层解耦 -三层架构
  • HTML语义化标签
  • 最近小峰一直在忙国际化项目,确实有点分身乏术... [特殊字符] 不过! 我正紧锣密鼓准备一系列干货文章/深度解析
  • [HTML]iframe显示pdf,隐藏左侧分页
  • Python异步爬虫编程技巧:从入门到高级实战指南
  • 从本地到云端:通过ToolJet和cpolar构建远程开发环境实践过程
  • ​​FFmpeg命令全解析:三步完成视频合并、精准裁剪​​、英伟达显卡加速
  • systemd[1]: Failed to start LSB: Bring up/down networking
  • 在大数据求职面试中如何回答分布式协调与数据挖掘问题
  • 开疆智能CCLinkIE转ModbusTCP网关连接 BORUNTE伯朗特机器人案例
  • 百度AIP:Springboot人脸对比
  • 用安卓手机,怎样远程管理孩子iPhone屏幕使用时间?
  • LNMP 一键部署脚本 shell脚本
  • R语言入门课| 05 一文掌握R语言常见数据类型
  • 面试150 分发糖果
  • 【设计模式精讲 Day 12】代理模式(Proxy Pattern)
  • idea 报错:java: 非法字符: ‘\ufeff‘
  • ISO 26262-11 半导体功能安全学习(二)
  • Meta-华盛顿大学-CMU联合研究多感官触觉表征在机器人操作中的新范式