Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Earth Reverse Engineering | 2,008 | 2 years ago | 16 | C | ||||||
Reversing Google's 3D satellite mode | ||||||||||
Three Geo | 807 | 2 months ago | 16 | June 18, 2022 | 26 | mit | JavaScript | |||
3D geographic visualization library | ||||||||||
Flyover Reverse Engineering | 499 | 2 years ago | 2 | Go | ||||||
Reversing Apple's 3D satellite mode | ||||||||||
Awesome Maps | 251 | a month ago | ||||||||
There is more than google: A collection of great online maps 🌍🗺🌎 | ||||||||||
S2p | 139 | 2 years ago | 30 | agpl-3.0 | C | |||||
This repository is not maintained, please use https://github.com/centreborelli/s2p instead. | ||||||||||
Satellite Tracker | 94 | 3 months ago | 5 | November 03, 2019 | 2 | mit | JavaScript | |||
Javascript 3D satellite tracker library with up-to-date data from CELESTRAK. Uses Three.js, React and satellite.js for orbit prediction. | ||||||||||
Esri Satellite Map | 85 | a year ago | 4 | JavaScript | ||||||
High performance 3d display of ALL man-made satellites orbiting the Earth. | ||||||||||
Agsattrack | 43 | 6 years ago | 24 | JavaScript | ||||||
agsattrack | ||||||||||
Geojsontomesh | 42 | 6 years ago | 2 | mit | C# | |||||
A quick look at #3D mapping on #HoloLens with #unity. Provides a custom editor to import a Geo Bounding Box into Unity as a 3D mesh which is textured with a satellite image using the Bing Maps static API. | ||||||||||
Wifisatellite | 41 | 4 years ago | mit | C++ | ||||||
WiFi Satellite Project - as seen on the Chaos Communication Congress |
Reverse-engineering undocumented parts of Google Earth. Similar work is done for Apple Maps here.
The focus has been on the 3D satellite mode, which required digging into:
Code was written and tested with various regions and cities:
URL structure:
"https://kh.google.com/rt/🅐/🅑"
- 🅐: planet
- "earth"
- "mars"
- ...
- 🅑: resource
- "PlanetoidMetadata"
- "BulkMetadata/pb=!1m2!1s❶!2u❷"
- ❶: octant path
- ❷: epoch
- "NodeData/pb=!1m2!1s❸!2u❹!2e❺(!3u❻)!4b0"
- ❸: octant path
- ❹: epoch
- ❺: texture format
- ❻: imagery epoch (sometimes)
Misc:
General info:
- Everything is stored in an octree.
Roles of resources:
- PlanetoidMetadata points to first BulkMetaData.
- BulkMetaData points to other BulkMetaData and to NodeData.
- NodeData contains actual meshes and textures.
Versioning:
- BulkMetaData and NodeData are versioned using epoch numbers.
- PlanetoidMetadata provides epoch of first BulkMetaData.
- BulkMetaData provides epochs of underlying resources.
- Current version of a resource can be determined recursively.
NodeData:
- Mesh: packed XYZ, UV, octant mask, normals
- Texture: JPG, CRN-DXT1
- Raw format: see rocktree.proto and rocktree_decoder.h
- Other optimizations: BVH
BulkMetaData:
- Oriented Bounding Box
- Dump OBB to obj: https://gist.github.com/retroplasma/5698808bfaa63ffd03f751a84fa6ce14
- Latlong to octant using OBB (unstable): https://github.com/retroplasma/earth-reverse-engineering/blob/443a3622ce9cb12cd4460cc6dc7999cc703ae67f/experimental_latlong_to_octant.js
Related ideas: Racing game , Minimal client. WebGL + CORS should work (test).
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.