Flyover rekayasa balik (mode satelit 3D) dari Apple Maps. Pekerjaan serupa dilakukan untuk Google Earth di sini.
Secara kasar, bagian-bagian ini telah diketahui:
Kami dapat mengautentikasi URL dan mengambil model 3D bertekstur dari koordinat tertentu (lintang, bujur).
Data disimpan di petak peta. Lima gaya ubin berikut digunakan untuk Flyover:
Jenis | Tujuan | Struktur URL |
---|---|---|
C3M | Tekstur, Mesh, Transformasi(, Animasi) | ?(?|&)gaya=15&v=⓿&wilayah=❶&x=❷&y=❸&z=❹&h=❺ |
C3MM 1 | Metadata | ?(?|&)style=14&v=⓿&bagian=❻&wilayah=❶ |
C3MM 2 | Metadata | ?(?|&)gaya=52&v=⓿&wilayah=❶&x=❷&y=❸&z=❹&h=❺ |
DTM 1 | Medan/Permukaan/Ketinggian | ?(?|&)gaya=16&v=⓿&wilayah=❶&x=❷&y=❸&z=❹ |
DTM 2 | Medan/Permukaan/Ketinggian | ?(?|&)gaya=17&v=⓿&ukuran=❼&skala=❽&x=❷&y=❸&z=❹ |
ResourceManifest
└─ AltitudeManifest
├─ C3MM
│ └─ C3M
└─ DTM?
Berfokus pada C3M(M) untuk saat ini. DTM adalah gambar dengan footer dan mungkin digunakan untuk grid yang ditampilkan saat Maps dimuat.
Repositori ini disusun sebagai berikut:
Direktori | Keterangan |
---|---|
cmd | program baris perintah |
pkg | sebagian besar kode sebenarnya |
proto | file protobuf |
skrip | skrip tambahan |
penjual | ketergantungan |
Instal Go 1.15.x dan jalankan:
go get -d github.com/retroplasma/flyover-reverse-engineering/...
cd " $( go env GOPATH ) /src/github.com/retroplasma/flyover-reverse-engineering "
Kemudian edit config.json:
./scripts/get_config.sh > config.json
./scripts/get_config_macos.sh > config.json
resourceManifestURL
: dari GEOConfigStore.db/com.apple.GEO.plist atau biner GeoServicestokenP1
: dari biner GeoServices (fungsi: GEOURLAuthenticationGenerateURL
) Berikut beberapa program baris perintah yang menggunakan kode dari pkg:
Penggunaan:
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
Ini mengekspor Dermaga Santa Monica ke ./downloaded_files/obj/...
:
go run cmd/export-obj/main.go 34.007603 -118.499741 20 3 40
Opsional: OBJ skala tengah menggunakan skrip node.js:
node scripts/center_scale_obj.js
Di Blender (tutorial yang kompatibel di sini):
Ini mengautentikasi URL menggunakan parameter dari config.json
:
go run cmd/auth/main.go [url]
Ini mem-parsing file C3M v3, mendekompresi jerat, membaca tekstur JPEG dan menghasilkan struct yang berisi model 3d bertekstur:
go run cmd/parse-c3m/main.go [file]
Ini mem-parsing file C3MM v1. File C3MM di suatu wilayah mencakup oktree yang akarnya diindeks di file pertama.
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
dalam manifes sumber daya~/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
PERANGKAT LUNAK INI DISEDIAKAN "APA ADANYA", TANPA JAMINAN APA PUN, TERSURAT MAUPUN TERSIRAT, TERMASUK NAMUN TIDAK TERBATAS PADA JAMINAN KELAYAKAN UNTUK DIPERDAGANGKAN, KESESUAIAN UNTUK TUJUAN TERTENTU, DAN TIDAK ADA PELANGGARAN. DALAM KEADAAN APA PUN PENULIS ATAU PEMEGANG HAK CIPTA TIDAK BERTANGGUNG JAWAB ATAS KLAIM, KERUSAKAN, ATAU TANGGUNG JAWAB LAINNYA, BAIK DALAM TINDAKAN KONTRAK, HUKUM ATAU LAINNYA, YANG TIMBUL DARI, ATAU SEHUBUNGAN DENGAN PERANGKAT LUNAK ATAU PENGGUNAAN ATAU HAL-HAL LAIN DALAM PERANGKAT LUNAK.