A ridiculously fast, parallel Java CLI to download Google Photorealistic 3D Tiles GLB leaves within a spherical region.
No rotation, no baking, no transforms — just download.
Requirements: Java 17+, Maven 3.8+
mvn -q -DskipTests clean packageThis produces:
target/tiles-downloader-cli-1.0.0-all.jar
java -jar target/tiles-downloader-cli-1.0.0-all.jar \
--key <API_KEY> \
--lat <deg> --lng <deg> \
--radius <meters> \
-o <outdir> \
[--parallel <n>] [--no-elevation] [-v] [-h]
Flags
--key(required): Google API key.--lat,--lng(required): target center, in degrees.--radius(required): culling sphere radius, in meters (ECEF).-o, --out: output directory (default./out).--parallel: max parallel network ops (default10).--no-elevation: skip the Elevation API (assumes height=0 for ECEF).-v: verbose logs.
Examples
Download around San Francisco (with elevation, 16-way parallel):
java -jar target/tiles-downloader-cli-1.0.0-all.jar \
--key YOUR_GOOGLE_API_KEY \
--lat 37.7793 --lng -122.4193 --radius 250 \
-o out --parallel 16 -vSkip elevation (assume h=0), Los Angeles:
java -jar target/tiles-downloader-cli-1.0.0-all.jar \
--key YOUR_GOOGLE_API_KEY \
--lat 34.0522 --lng -118.2437 --radius 300 \
-o out --parallel 12 --no-elevation-
Files are saved as
<SHA1>.glbinto the output directory. -
The SHA1 is computed from the tile path + query, excluding
keyandsession, so names are stable across runs. -
At the end, the tool prints:
Downloaded: N file(s).DOWNLOADED_TILES: [...]— the list of filenames.
- Uses Java 17
HttpClientwith HTTP/2 and connection reuse. - Bounded parallelism for both parsing and downloading.
- Only
.glbleaves are downloaded; sub-tilesets are followed recursively. - Coarse culling uses a conservative sphere from each node’s
boundingVolume.box. - Be mindful of your Google Maps Platform quotas and Terms of Service.