Download the entirety of Google Earth, in your selected quality! Also run your own express server to host the images and use on other mapping platforms like openstreetmap!
graph TD
%% --- Phase 1: Generation ---
subgraph "Phase 1: Target Generation"
Script[node index.js] -->|Generate Image URLs| List[list.txt]
end
%% --- Phase 2: Ingestion ---
subgraph "Phase 2: Parallel Ingestion"
List --> Bash[./start.sh]
Bash -->|Spawn Workers| CURL1[cURL Worker 1]
Bash -->|Spawn Workers| CURL2[cURL Worker 2]
Bash -->|Spawn Workers| CURL3[cURL Worker 3]
CURL1 & CURL2 & CURL3 --Download--> Cache[(Folder)]
end
%% --- Phase 3: Serving ---
subgraph "Phase 3: Local Tile Server"
Client[OpenStreetMaps / QGIS] -->|Request Tile| Server[node server.js]
Server -->|Read from Disk| Cache
Server -->|Serve Image| Client
end
Disclaimer: This project is intended for Educational and Archival purposes only. Web scraping public data is generally protected in the United States (see hiQ Labs, Inc. v. LinkedIn Corp), but users are responsible for ensuring compliance with local laws and terms of service. The author assumes no liability for misuse.
The Express server is used for mimicking Google's actual API. It can be used in any kind of mapping software, one good example is OpenStreetMaps where it is possible to use the locally downloaded map data for viewing.
Quality - Set your quality, (1-21) higher number will mean images are more zoomed in, thus using much more space. Formula for amount of images is (2^quality)(2^quality)=number of 256x256 images. For example, using quality 3, you will have 64 256x256 pixel images total. (2^3)*(2^3)=64
- Clone the repo
- Update config.json with your preferred quality, NOTE that exponentially more images must be downloaded for every increase in quality!
- Run node index.js to create a list of urls to download. Note if the url has changed in the future open dev tools and find the url used for google maps images.
- Once the list.txt is fully created you can download the files with ./start.sh (linux) it will download in parallel.
- Once your images are downloaded, run npm install and node server.js, and you will be able to run a local mimick of Google's API. This can be used on Openstreetmaps editor or other mapping programs.
Use http://localhost:42069/kh/v=1001?x={x}&y={y}&z={zoom} in openstreetmap editor or your favorite mapping software and zoom to the correct zoom to view your images!!
| Quality | Image Files | (~8KB/img) |
|---|---|---|
| 0 | 1 | 8KB |
| 1 | 4 | 32KB |
| 2 | 16 | 128KB |
| 3 | 64 | 512KB |
| 4 | 256 | 2MB |
| 5 | 1024 | 8MB |
| 6 | 4096 | 32MB |
| 7 | 16384 | 128MB |
| 8 | 65536 | 512MB |
| 9 | 262144 | 2GB |
| 10 | 1048576 | 8GB |
| 11 | 4194304 | 32GB |
| 12 | 16777216 | 128GB |
| 13 | 67108864 | 512GB |
| 14 | 268435456 | 2TB |
| 15 | 1073741824 | 8TB |
| 16 | 4294967296 | 32TB |
| 17 | 17179869184 | 128TB |
| 18 | 68719476736 | 512TB |
| 19 | 274877906944 | 2PB |
| 20 | 1099511627776 | 8PB |
| 21 | 4398046511104 | 32PB |