
Flyover de ingeniería inversa (modo satélite 3D) de Apple Maps. Aquí se realiza un trabajo similar para Google Earth.
A grandes rasgos, se han resuelto estas partes:
Podemos autenticar URL y recuperar modelos 3D texturizados a partir de coordenadas determinadas (latitud, longitud).
Los datos se almacenan en mosaicos de mapas. Estos cinco estilos de mosaicos se utilizan para Flyover:
| Tipo | Objetivo | estructura de URL |
|---|---|---|
| C3M | Textura, Malla, Transformación(, Animación) | ?(?|&)estilo=15&v=⓿®ion=❶&x=❷&y=❸&z=❹&h=❺ |
| C3MM 1 | Metadatos | ?(?|&)estilo=14&v=⓿&part=❻®ion=❶ |
| C3MM 2 | Metadatos | ?(?|&)estilo=52&v=⓿®ion=❶&x=❷&y=❸&z=❹&h=❺ |
| MDT 1 | Terreno/Superficie/Elevación | ?(?|&)estilo=16&v=⓿®ion=❶&x=❷&y=❸&z=❹ |
| MDT 2 | Terreno/Superficie/Elevación | ?(?|&)estilo=17&v=⓿&tamaño=❼&escala=❽&x=❷&y=❸&z=❹ |
ResourceManifest
└─ AltitudeManifest
├─ C3MM
│ └─ C3M
└─ DTM?
Centrándonos en C3M(M) por ahora. Los DTM son imágenes con un pie de página y probablemente se usan para la cuadrícula que se muestra cuando se carga Maps.
Este repositorio está estructurado de la siguiente manera:
| Directorio | Descripción |
|---|---|
| cmd | programas de línea de comando |
| paquete | la mayor parte del código real |
| prototipo | archivos protobuf |
| guiones | guiones adicionales |
| proveedor | dependencias |
Instale Go 1.15.x y ejecute:
go get -d github.com/retroplasma/flyover-reverse-engineering/...
cd " $( go env GOPATH ) /src/github.com/retroplasma/flyover-reverse-engineering "Luego edite config.json:
./scripts/get_config.sh > config.json./scripts/get_config_macos.sh > config.jsonresourceManifestURL : de GEOConfigStore.db/com.apple.GEO.plist o binario GeoServicestokenP1 : del binario GeoServices (función: GEOURLAuthenticationGenerateURL ) Aquí hay algunos programas de línea de comando que usan código de pkg:
Uso:
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
Esto exporta el muelle de Santa Mónica a ./downloaded_files/obj/... :
go run cmd/export-obj/main.go 34.007603 -118.499741 20 3 40
Opcional: OBJ de escala central usando el script node.js:
node scripts/center_scale_obj.js
En Blender (tutorial compatible aquí):

Esto autentica una URL usando parámetros de config.json :
go run cmd/auth/main.go [url]
Esto analiza un archivo C3M v3, descomprime mallas, lee texturas JPEG y produce una estructura que contiene un modelo 3D texturizado:
go run cmd/parse-c3m/main.go [file]
Esto analiza un archivo C3MM v1. Los archivos C3MM en una región abarcan octárboles cuyas raíces están indexadas en el primer archivo.
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-*.xmlaltitude-*.xml en el manifiesto de recursos~/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.xpcGeoServices/Applications/Maps.app/Contents/MacOS/MapsVectorKit EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO, PERO NO LIMITADO A, LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.