LinkedIn GitHub Substack
geeup geeup
Current Version: v2.0.0

Google Earth Engine Batch Uploader

geeup is a comprehensive command-line tool designed to simplify data preparation and batch uploading to Google Earth Engine. Handle images, shapefiles, and metadata with retry logic and parallel processing.

Main Interface

The geeup tool uses a subcommand structure. Run geeup -h to see all available commands and arguments.

Terminal
usage: geeup [-h] {readme,quota,auth,rename,zipshape,getmeta,cookie_setup,upload,tabup,tasks,cancel,delete} ...

Simple Client for Earth Engine Uploads with Enhanced UI and Service Account Support

positional arguments:
  {readme,quota,auth,rename,zipshape,getmeta,cookie_setup,upload,tabup,tasks,cancel,delete}
    readme              Open the geeup documentation page
    quota               Print Earth Engine storage and asset count quota with visual progress bars
    auth                Configure service account authentication
    rename              Rename files to adhere to EE naming rules with interactive preview
    zipshape            Zip all shapefiles and subsidiary files in folder with progress tracking
    getmeta             Create generalized metadata for rasters in folder with progress tracking
    cookie_setup        Setup cookies to be used for upload
    upload              Batch Image Uploader for uploading TIF files to a GEE collection
    tabup               Batch Table Uploader for uploading shapefiles/CSVs to a GEE folder
    tasks               Query current task status with rich formatting [completed, running, ready, failed, cancelled]
    cancel              Cancel all, running, pending tasks or specific task ID with progress tracking
    delete              Delete collection and all items inside recursively

options:
  -h, --help            show this help message and exit

Installation

Method 1: PyPI (Recommended)

Terminal
pip install geeup

Requirement: Ensure you have the Earth Engine Python API installed and authenticated via earthengine authenticate.


Group: Authentication

Service Account Configuration

The geeup auth command handles service account configuration. This allows for automated workflows without manual authentication prompts and enables switching between different GEE accounts easily. You can authenticate using a JSON key file, check your current status, or remove credentials.

Terminal Usage Examples
# Initialize with a service account key
geeup auth --cred "/path/to/service-account.json"

# Check which account is currently configured
geeup auth --status

# Remove the current credentials
geeup auth --remove
Argument Description
--credOptional Path to service account JSON credentials file. Used to authenticate.
--statusOptional Show current authentication status and the active service account email.
--removeOptional Remove stored service account credentials and revert to default authentication.
Group: Data Preparation

Rename Files

The rename command sanitizes filenames in a directory to ensure they strictly adhere to Earth Engine naming conventions. It removes spaces and special characters that cause upload failures. By default, it runs interactively, showing a preview of changes.

Terminal
geeup rename --input "./raw_data" --batch
Argument Description
--inputRequired Path to the input directory containing files to be renamed.
--batchOptional Skip confirmation prompt and automatically rename all files found.

Zip Shapefiles

The zipshape tool scans a directory for shapefile components (e.g., .shp, .shx, .dbf, .prj) and intelligently packages them into individual ZIP archives. This is a required step before uploading vectors (Table Upload).

Terminal
geeup zipshape --input "./vectors" --output "./zipped_vectors"
Argument Description
--inputRequired Path to the input directory containing raw shapefiles.
--outputRequired Destination folder where the created ZIP archives will be stored.

Generate Metadata

The getmeta command generates a metadata CSV file for a folder of rasters. This CSV is essential for the batch uploader, as it defines properties like image IDs, dimensions, and data types.

Terminal
geeup getmeta --input "./rasters" --metadata "./metadata.csv"
Argument Description
--inputRequired Path to the input directory containing raster (TIF) files.
--metadataRequired Full path (including filename) to export the generated metadata CSV file.
Group: Batch Upload

Upload Images

The upload command is the core feature of geeup. It batch uploads GeoTIFF files to an Earth Engine Image Collection. It supports advanced features like automatic retries for failed tasks, parallel worker threads, resumption of interrupted jobs, and dry runs for validation.

Terminal Usage
# Comprehensive Upload Example
geeup upload --source "./rasters" \
      --dest "users/username/collection" \
      --metadata "./metadata.csv" \
      --user "[email protected]" \
      --workers 4 \
      --resume
Argument Description
--sourceRequired Path to the directory with images for upload.
--destRequired Destination path for GEE Image Collection (e.g., users/you/collection).
--metadata, -mRequired Path to the metadata CSV file.
--user, -uRequired Google account email address used for authentication.
--nodataOptional Integer value to burn into the raster as NoData (missing data).
--maskOptional Boolean (True/False). Use the last band as a validity mask.
--pyramidsOptional Pyramiding Policy: MEAN, MODE, MIN, MAX, SAMPLE. Default: MEAN.
--overwriteOptional Overwrite existing assets? Pass 'yes' or 'y'. Default: No.
--dry-runOptional Run validation logic without actually uploading files.
--workersOptional Number of parallel upload workers (threads). Default: 1.
--max-inflight-tasksOptional Maximum concurrent EE tasks allowed. Default: 2800.
--resumeOptional Resume from previous state, skipping already uploaded files.
--retry-failedOptional Retry only the uploads that previously failed.

Tabup (Table Upload)

The tabup command is designed for batch uploading table data (vectors). It accepts folders containing zipped shapefiles or CSVs and uploads them to a specified GEE folder.

Terminal
geeup tabup --source "./zipped_vectors" \
      --dest "users/username/folder" \
      --user "[email protected]" \
      --max-error-meters 1.0
Argument Description
--sourceRequired Path to the directory with zipped files or CSV files.
--destRequired Destination path for GEE Folder (e.g., users/you/folder).
--user, -uRequired Google account email address used for authentication.
--xOptional Column name containing longitude values (for CSVs).
--yOptional Column name containing latitude values (for CSVs).
--metadataOptional Path to CSV with metadata.
--overwriteOptional Overwrite existing assets? Pass 'yes' or 'y'.
--max-error-metersOptional Maximum allowed error in meters for geometry. Default: 1.0.
--max-verticesOptional Maximum vertices per geometry feature. Default: 1000000.
--workersOptional Number of parallel upload workers. Default: 1.
Group: Monitoring

Check Quota

The quota command prints your Earth Engine storage usage and asset counts with visual progress bars. It supports checking specific cloud projects.

Terminal
geeup quota --project "projects/my-project"
Argument Description
--projectOptional Project Name, usually in the format projects/project-name/assets/.

Task Status

The tasks command allows you to query the status of your Earth Engine tasks. You can view a summary of all tasks or filter by state and ID.

Terminal
geeup tasks --state RUNNING
Argument Description
--stateOptional Query by state type: COMPLETED, READY, RUNNING, FAILED, or CANCELLED.
--idOptional Query for a specific task ID.

Cancel Tasks

The cancel command provides a quick way to stop tasks. You can cancel specific task IDs or bulk cancel all tasks in a 'running' or 'pending' state.

Terminal
geeup cancel --tasks running
Argument Description
--tasksRequired Provide all, running, pending, or a specific task ID string.
Group: Utilities

Recursively Delete

The delete command recursively removes a collection and all assets inside it. Use with caution as this action cannot be undone.

Terminal
geeup delete --id "users/username/test_collection"
Argument Description
--idRequired Full path to the asset (collection or image) for deletion.

Readme

The readme command simply opens the official documentation in your default web browser.

Terminal
geeup readme

Usage Analytics

Live view of tool usage statistics and metrics.