flyover reverse engineering
1.0.0
来自 Apple 地图的逆向工程Flyover (3D 卫星模式)。此处对 Google Earth 进行了类似的工作。
大致已经弄清楚了这些部分:
我们可以验证 URL 并从给定坐标(纬度、经度)检索纹理 3D 模型。
数据存储在地图图块中。这五种图块样式用于天桥:
类型 | 目的 | 网址结构 |
---|---|---|
C3M | 纹理、网格、变换(、动画) | ?(?|&)样式=15&v=⓿&区域=❶&x=❷&y=❸&z=❹&h=❺ |
C3MM 1 | 元数据 | ?(?|&)样式=14&v=⓿&部分=❻&区域=❶ |
C3MM 2 | 元数据 | ?(?|&)样式=52&v=⓿&区域=❶&x=❷&y=❸&z=❹&h=❺ |
数字TM 1 | 地形/表面/高程 | ?(?|&)样式=16&v=⓿&区域=❶&x=❷&y=❸&z=❹ |
数字TM 2 | 地形/表面/高程 | ?(?|&)样式=17&v=⓿&尺寸=❼&比例=❽&x=❷&y=❸&z=❹ |
ResourceManifest
└─ AltitudeManifest
├─ C3MM
│ └─ C3M
└─ DTM?
目前专注于 C3M(M)。 DTM 是带有页脚的图像,可能用于加载地图时显示的网格。
该存储库的结构如下:
目录 | 描述 |
---|---|
指令 | 命令行程序 |
包装 | 大部分实际代码 |
原型 | 原始缓冲区文件 |
脚本 | 附加脚本 |
小贩 | 依赖关系 |
安装 Go 1.15.x 并运行:
go get -d github.com/retroplasma/flyover-reverse-engineering/...
cd " $( go env GOPATH ) /src/github.com/retroplasma/flyover-reverse-engineering "
然后编辑config.json:
./scripts/get_config.sh > config.json
./scripts/get_config_macos.sh > config.json
resourceManifestURL
:来自 GEOConfigStore.db/com.apple.GEO.plist 或 GeoServices 二进制文件tokenP1
:来自 GeoServices 二进制文件(函数: GEOURLAuthenticationGenerateURL
) 以下是一些使用 pkg 中的代码的命令行程序:
用法:
go run cmd/export-obj/main.go [lat] [lon] [zoom] [tryXY] [tryH]
Parameter Description Example
--------------------------------------
lat Latitude 34.007603
lon Longitude -118.499741
zoom Zoom (~ 13-20) 20
tryXY Area scan 3
tryH Altitude scan 40
这会将圣莫尼卡码头导出到./downloaded_files/obj/...
:
go run cmd/export-obj/main.go 34.007603 -118.499741 20 3 40
可选:使用 node.js 脚本中心缩放 OBJ:
node scripts/center_scale_obj.js
在 Blender 中(此处兼容教程):
这使用config.json
中的参数对 URL 进行身份验证:
go run cmd/auth/main.go [url]
这会解析 C3M v3 文件、解压缩网格、读取 JPEG 纹理并生成包含纹理 3D 模型的结构:
go run cmd/parse-c3m/main.go [file]
这将解析 C3MM v1 文件。区域中的 C3MM 文件跨越八叉树,其根在第一个文件中索引。
go run cmd/parse-c3mm/main.go [file] [[file_number]]
~/Library/Containers/com.apple.geod/Data/Library/Caches/com.apple.geod/GEOConfigStore.db
~/Library/Preferences/com.apple.GEO.plist
~/Library/Caches/GeoServices/Resources/altitude-*.xml
altitude-*.xml
url~/Library/Containers/com.apple.geod/Data/Library/Caches/com.apple.geod/MapTiles/MapTiles.sqlitedb
/System/Library/PrivateFrameworks/GeoServices.framework/GeoServices
/System/Library/PrivateFrameworks/VectorKit.framework/VectorKit
/System/Library/PrivateFrameworks/GeoServices.framework/XPCServices/com.apple.geod.xpc
GeoServices
/Applications/Maps.app/Contents/MacOS/Maps
VectorKit
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件中的使用或其他交易而产生或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权行为还是其他行为。软件。