GeoD CLI
Plan, download and verify geographic data from your terminal, integrating it with scripts and workflows as needed.
Install GeoD CLI
Choose built-in or authorized custom sources and download multi-level imagery locally as GeoTIFF, PNG/JPEG, raw tiles, MBTiles or GeoPackage. Supports overlays, clipping, pyramids, sidecars and resuming. Installers and portable packages need no Node.js; npm installation requires Node.js 18+.
Levels 0–5 can be downloaded without signing in. For tasks at level 6 or above, first authorize your GeoD account in the browser. Downloads still run locally after authorization.
npm install -g https://laogao.xyz/geod-cli/geod-cli-0.3.2.tgz
geod --versiongeod auth status
geod auth login # Authorize in your browser for downloads at level 6 and aboveChoose and register sources
Choose from the built-in catalog. Custom sources are registered on the current user's computer, independently of the desktop app, and are not uploaded to GeoD. Provide licensing, URL template and attribution; the probe command requests only one tile. Standard public OSM tiles must not be used for bulk offline downloads.
geod sources list
geod sources default --id nasa_gibs_blue_marble
geod sources register --id my_tiles --name MySource --url 'https://example.com/{z}/{x}/{y}.png' --attribution DataProvider --max-zoom 18
geod sources probe --id my_tiles --zoom 5 --x 26 --y 12Run standalone download tasks
Save the request below as imagery.json, then plan, download and inspect outputs. This example retrieves two imagery levels from NASA GIBS; follow provider permissions and service limits. The output directory must be new; cache directories can be reused for retries.
{
"schemaVersion": "1.0",
"name": "Blue Marble multi-level imagery example",
"bounds": [116.3, 39.8, 116.5, 40.0],
"imagery": {
"sourceId": "nasa_gibs_blue_marble",
"zoom": 5,
"zoomLevels": [5, 6],
"format": "geotiff",
"compression": "deflate",
"buildPyramid": true,
"generateSidecars": true,
"concurrency": 4
}
}geod plan --request .\imagery.json
if ($LASTEXITCODE -ne 0) { throw 'Request validation failed' }
$bundle = Join-Path (Get-Location) ('imagery-' + (Get-Date -Format 'yyyyMMdd-HHmmss'))
geod fetch --request .\imagery.json --out $bundle --work-dir .\imagery-cache
if ($LASTEXITCODE -ne 0) { throw 'Download failed' }
geod inspect --bundle $bundle
if ($LASTEXITCODE -ne 0) { throw 'Output validation failed' }After a successful download, the directory contains data files and manifest.json. Check the source, area, quality and warnings; plan estimates do not prove that a source is currently available.
