A no-code Streamlit dashboard for extracting historical satellite and climate datasets from Google Earth Engine (GEE) — without writing a single line of JavaScript or Python. Built for researchers, GIS analysts, remote sensing specialists, and data scientists who need fast, reproducible access to environmental data such as NDVI timeseries, ERA5-Land climate reanalysis, and CHIRPS precipitation records.
Overview · Features · Datasets · Installation · Usage · Architecture · Roadmap · Contributing · License
The GEE Data Extractor UI provides a complete end-to-end pipeline for acquiring complex environmental and satellite imagery data directly from Google Earth Engine — no manual coding required. Users can define their region of interest (ROI) visually, configure temporal filters, and submit high-volume extraction jobs to Google Drive or local storage in just a few clicks.
This tool is especially useful for:
- Agricultural monitoring (NDVI, EVI crop health analysis)
- Climate research (ERA5-Land temperature, wind, humidity)
- Hydrological studies (CHIRPS rainfall, GPM precipitation)
- GIS automation workflows requiring batch satellite data downloads
- Intuitive No-Code GUI: A polished Streamlit dashboard covering the full extraction workflow from ROI definition to download.
- Flexible Region of Interest (ROI) Selection:
- Point Coordinates: Enter Lat/Lon coordinates directly.
- File Upload: Import Shapefiles (
.shp), GeoJSON, or KML geometries. - Administrative Boundaries: Country and province-level selection via GADM integration (
pygadm).
- Multiple Export Targets: Export to Google Drive for large batch jobs or download results locally for quick samples.
- Reproducibility & History: Settings are persisted in
config/settings.toml; full job history is tracked in.cache/history.jsonfor instant parameter reloading. - Live Map Verification: Automated geometry and map rendering to visually confirm your ROI before submitting a job.
- Auto-Update: On startup the app checks for a new version on GitHub. If one is available, a banner appears in the sidebar — one click pulls the latest changes and restarts the app in place.
| Category | Dataset | Source |
|---|---|---|
| Vegetation Indices | NDVI & EVI | MODIS MOD13Q1 |
| Weather & Climate | Temperature, Wind, Humidity | ERA5 Hourly & ERA5-Land (Hourly & Daily) |
| Precipitation | High-resolution rainfall | CHIRPS Daily |
| Precipitation | Near-real-time global rain | GPM IMERG V07 (30-Min) |
More datasets are planned — see the Roadmap.
- OS: Windows, macOS, or Linux
- Python: 3.8 or higher
- Google Earth Engine account (Sign up here — free for research)
This is the easiest path and requires no prior Python experience.
- Clone or download the repository.
- Double-click
run.bat.- On first run, it will automatically create a Python virtual environment and install all required dependencies.
- On subsequent runs, it will simply activate the environment and launch the app.
- Authenticate with Google Earth Engine (first time only) — a browser window will open automatically asking you to authorize access.
That's it. run.bat handles everything.
1. Clone the Repository
git clone https://github.com/Mastro1/GEE_data_extraction_UI.git
cd GEE_data_extraction_UI2. Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate3. Install dependencies
pip install -r requirements.txt4. Authenticate with Google Earth Engine (first time only)
python -c "import ee; ee.Authenticate()"Follow the browser prompt to authorize access. Your credentials will be cached locally.
The easiest way is to use the provided launcher scripts, which handle environment setup automatically:
- Windows: Double-click
run.bat - All platforms: Run
python run.py
Alternatively, launch manually:
streamlit run src/interface/app.py- Configure Settings — Use the sidebar to set your GEE Project ID and default download folders.
- Define WHAT — Select your satellite dataset (e.g., ERA5-Land Daily) and the specific bands or variables you need.
- Define WHERE — Enter point coordinates, upload a geometry file (Shapefile, GeoJSON, KML), or pick an administrative boundary using the GADM selector.
- Define WHEN — Set your start/end date range and apply optional seasonal filters (e.g., extract only June–September).
- Verify — Inspect the auto-rendered map to confirm your ROI is correct.
- Execute — Click Save to Drive for large batch extractions or Download Locally for immediate results.
The application follows a Local State Architecture to ensure responsiveness and reliability across sessions.
User Input (Streamlit UI)
│
▼
State Manager (settings.toml + history.json)
│
▼
GEE Python API Wrapper
│
▼
Google Earth Engine Servers
│
┌────┴────┐
▼ ▼
Google Local
Drive Storage
| Layer | Technology |
|---|---|
| Frontend (UI) | Streamlit |
| GEE Interface | earthengine-api (Python) |
| ROI Handling | geopandas, pygadm |
| Persistence | settings.toml + .cache/history.json |
- Expand Dataset Catalog — Integrate Sentinel-2, Landsat-8/9, and additional climate products.
- Spatial Masking — Support for uploading and applying custom masks (e.g., crop masks, land cover layers) during extraction.
- Full Session Restore — Finalize "Reload Settings" to allow seamless recovery of complete previous work states.
- Auto-Update — On startup the app checks for a new version on GitHub. If one is available, a banner appears in the sidebar — one click pulls the latest changes and restarts the app in place.
Contributions, bug reports, and feature suggestions are very welcome! This project is actively maintained and we appreciate community feedback.
To contribute:
- Fork the repository and create a new branch (
git checkout -b feature/my-feature). - Make your changes and ensure existing functionality is not broken.
- Open a Pull Request with a clear description of what you changed and why.
- Report bugs by opening a GitHub Issue with steps to reproduce.
This project is licensed under the MIT License — see the LICENSE file for details.
Developed with ❤️ for the Remote Sensing Community — github.com/Mastro1

