NASA Earthdata QGIS Plugin
May 9, 2026 ยท View on GitHub
A QGIS plugin for searching, visualizing, and downloading NASA Earthdata products. This plugin provides access to NASA's Earth science data catalog directly within QGIS, supporting Cloud Optimized GeoTIFF (COG) visualization and data footprint display.
Features
- Search NASA Earthdata Catalog: Browse and search thousands of NASA Earth science datasets using keywords, bounding boxes, and temporal filters
- Visualize Data Footprints: Display search result footprints directly on the QGIS map canvas
- Cloud Optimized GeoTIFF (COG) Support: Stream and visualize COG files directly without downloading
- Saved and Recent Searches: Save reusable search presets, reload recent searches, and delete searches you no longer need
- Collection Discovery and Alerts: Fetch live CMR collection metadata and check saved searches for newly available granules
- Quicklook Gallery and Citation Links: Inspect inline browse/quicklook thumbnails, open a gallery dialog, and browse DOI/documentation links when granules expose them
- Granule Details and Export: Inspect selected granule metadata and export search results to CSV, GeoJSON, raw JSON, STAC, or a reproducible workflow bundle
- Richer Result Filtering: Filter result rows by granule ID, date, provider, cloud cover, day/night flag, size, or COG count
- Analysis-Ready VRTs: Build RGB composites and normalized-difference index VRTs such as NDVI, NDWI, MNDWI, NDMI, and NBR from COG bands
- Download Queue: Download selected granules with queue status, cancel/retry controls, skip-existing behavior, manifest output, and a persisted latest-queue snapshot
- QGIS Processing Tools: Run NASA Earthdata search, download, footprint, STAC export, workflow bundle, collection info, new-granule check, RGB COG, and normalized-difference VRT workflows from the Processing Toolbox and Model Designer
- Earthdata Login Integration: Seamless authentication with NASA Earthdata Login credentials
- OpenGeoAgent Context Handoff: Send the current dataset, bbox, selected granules, and COG links to OpenGeoAgent when available
- Settings Panel: Configure credentials, download preferences, and plugin options
Screenshots
Video Tutorials
๐ The Easiest Way to Access 120 Petabytes of NASA Data Inside QGIS
๐ How to Download and Visualize NISAR Data in QGIS
Installation
Prerequisites
- QGIS 3.28 or higher (compatible with QGIS 4.0 / Qt6 as well)
- NASA Earthdata Account: Sign up at urs.earthdata.nasa.gov
Install QGIS and Google Earth Engine
1) Install Pixi
Linux/macOS (bash/zsh)
curl -fsSL https://pixi.sh/install.sh | sh
Close and re-open your terminal (or reload your shell) so pixi is on your PATH. Then confirm:
pixi --version
Windows (PowerShell)
Open PowerShell (preferably as a normal user, Admin not required), then run:
powershell -ExecutionPolicy Bypass -c "irm -useb https://pixi.sh/install.ps1 | iex"
Close and re-open PowerShell, then confirm:
pixi --version
2) Create a Pixi project
Navigate to a directory where you want to create the project and run:
pixi init geo
cd geo
3) Install the environment
From the geo folder:
pixi add qgis earthaccess geopandas
Installing the Plugin
Method 1: From QGIS Plugin Manager (Recommended)
- Open QGIS using
pixi run qgis - Go to Plugins โ Manage and Install Plugins...
- Go to the Settings tab
- Click Add... under "Plugin Repositories"
- Give a name for the repository, e.g., "OpenGeos"
- Enter the URL of the repository: https://qgis.gishub.org/plugins.xml
- Click OK
- Go to the All tab
- Search for "NASA Earthdata"
- Select "NASA Earthdata" from the list and click Install Plugin
Method 2: From ZIP File
- Download the latest release ZIP from https://qgis.gishub.org
- In QGIS, go to
PluginsโManage and Install Plugins - Click
Install from ZIPand select the downloaded file - Enable the plugin in the
Installedtab
Method 3: Manual Installation
- Clone or download this repository
- Copy the
nasa_earthdatafolder to your QGIS plugins directory:- Linux:
~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/ - Windows:
C:\Users\<username>\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\ - macOS:
~/Library/Application Support/QGIS/QGIS3/profiles/default/python/plugins/
- Linux:
- Restart QGIS and enable the plugin
Uninstalling
python install.py --remove
# or
./install.sh --remove
Usage
Authentication
Before using the plugin, you need to configure your NASA Earthdata credentials:
- Click on NASA Earthdata โ Settings in the menu
- Enter your Earthdata username and password
- Click Test Credentials to verify
- Click Save Settings
Alternatively, you can configure credentials via:
- Environment variables:
EARTHDATA_USERNAMEandEARTHDATA_PASSWORD .netrcfile with entry forurs.earthdata.nasa.gov
Searching Data
-
Click the NASA Earthdata Search button in the toolbar
-
Filter datasets by keyword (optional)
-
Select a dataset from the dropdown. By default, the plugin selects
HLSL30with concept IDC2021957657-LPCLOUDwhen it is available. -
Set the bounding box (or use current map extent)
- Click Use Layer AOI to use the active vector layer selection, or the active vector layer extent when no features are selected, as the search bounding box.
-
Set the date range
-
Click Search
The search panel is organized into collapsible sections. Granule Details and Download Queue are collapsed by default; expand them when you need metadata inspection or download status.
Saved and Recent Searches
- Click Save in the Preset row to store the current dataset, bounding box, date range, max items, and advanced search options.
- Select a saved preset and click Load to restore it.
- Click Delete to remove the selected saved preset.
- Recent searches are recorded automatically after each search. Select a recent item and click Load to restore it, or Delete to remove it from the recent list.
- Click Collection Info to fetch live CMR metadata for the selected collection.
- Click Check New to rerun the selected saved/recent search and report granules that are not in the current result set.
Saved presets are stored in ~/.qgis_nasa_earthdata/workflows/search_presets.json by default.
Visualizing Data
- Footprints: Search results are automatically displayed as footprints on the map
- COG Layers: Select results and click Display COG to stream Cloud Optimized GeoTIFFs
- RGB Composite: Select RGB mode and choose red, green, and blue COG channels to create a streamed RGB VRT layer
- Spectral Index VRTs: Expand Analysis-Ready Index, choose an index and two COG bands, then click Create Index VRT
- Downloaded Data: After downloading, you can add raster files directly to the map
Inspecting and Exporting Results
- Type in the Filter box above the result table to narrow results by ID, date, provider, cloud cover, day/night flag, size, or COG count.
- Select a result row and expand Granule Details to view native ID, dataset identity, provider, temporal range, size, COG availability, and data links.
- Expand Quicklook and Citation to view inline browse imagery and DOI/documentation links when present. Click Open Quicklook to open the first browse link in your browser, or Gallery to compare quicklooks for selected rows.
- Click Export CSV to write result metadata to
earthdata_results.csv. - Click Export GeoJSON to write result metadata and footprints to
earthdata_results.geojsonand add the exported layer to the QGIS project. - Click Export JSON to write raw granule JSON that can be used by the Processing download tool.
- Click Export STAC to write a STAC ItemCollection.
- Click Bundle to write a reproducible workflow bundle with search parameters, flat result rows, raw granules, STAC content, and the latest download manifest path.
Downloading Data
- Select the granules you want to download from the results table
- Click Download
- Choose a destination folder
- Expand Download Queue to monitor per-granule status
- Optionally cancel the queue or retry failed items
- Optionally add downloaded files to the map
The downloader skips files that already exist in the destination folder when their filenames match Earthdata link basenames. Each download run writes a CSV manifest in the selected output folder.
The latest queue state is also written to ~/.qgis_nasa_earthdata/workflows/download_queue_latest.json by default.
AI Assistant Context
If OpenGeoAgent is installed, click AI Assistant from the NASA Earthdata menu. The plugin opens OpenGeoAgent and passes the current dataset, bbox, date range, result count, selected granules, and selected COG links when the OpenGeoAgent version exposes a context handoff method.
QGIS Processing
The plugin registers a NASA Earthdata Processing provider with these algorithms:
- Search NASA Earthdata: Search by short name or concept ID and optionally write result footprints to GeoJSON. This tool also supports cloud cover, day/night, provider, version, granule ID, orbit filters, and raw granule JSON output
- Download NASA Earthdata Granules: Download granules from an exported Earthdata JSON input
- Add Earthdata Footprints: Copy/export an Earthdata results GeoJSON as a Processing output
- Export NASA Earthdata STAC: Convert exported granules JSON into a STAC ItemCollection
- Export NASA Earthdata Workflow Bundle: Package search metadata, flat rows, raw granules, STAC content, and an optional download manifest path
- NASA Earthdata Collection Info: Fetch CMR collection metadata summary by short name or concept ID
- Check New NASA Earthdata Granules: Compare a fresh search against a baseline granules JSON and write only newly discovered granules
- Create RGB COG Layer: Build an RGB VRT from red, green, and blue COG URLs or paths
- Create Normalized Difference VRT: Build NDVI/NDWI/MNDWI/NDMI/NBR-style VRTs from two COG URLs or local rasters
These tools can be run from Processing โ Toolbox and used in QGIS Model Designer.
Supported Datasets
The plugin provides access to thousands of NASA datasets including:
- GEDI: Global Ecosystem Dynamics Investigation (forest structure, biomass)
- MODIS: Moderate Resolution Imaging Spectroradiometer
- Landsat: Landsat 8 and 9 imagery
- VIIRS: Visible Infrared Imaging Radiometer Suite
- SMAP: Soil Moisture Active Passive
- ICESat-2: Ice, Cloud, and land Elevation Satellite
- OPERA: Observational Products for End-Users from Remote Sensing Analysis
- And many more...
Development
Project Structure
qgis-nasa-earthdata-plugin/
โโโ nasa_earthdata/ # Plugin source code
โ โโโ __init__.py
โ โโโ nasa_earthdata.py # Main plugin class
โ โโโ metadata.txt # Plugin metadata
โ โโโ LICENSE
โ โโโ core/ # Network, environment, and workflow helpers
โ โ โโโ net.py
โ โ โโโ workflows.py
โ โ โโโ venv_manager.py
โ โโโ dialogs/ # UI components
โ โ โโโ __init__.py
โ โ โโโ earthdata_dock.py # Main search panel
โ โ โโโ settings_dock.py # Settings panel
โ โ โโโ update_checker.py # Update checker dialog
โ โโโ processing/ # QGIS Processing provider and algorithms
โ โ โโโ provider.py
โ โ โโโ algorithms.py
โ โโโ icons/ # Plugin icons
โ โโโ icon.svg
โ โโโ settings.svg
โ โโโ about.svg
โ โโโ search.svg
โ โโโ download.svg
โโโ install.py # Python installation script
โโโ install.sh # Bash installation script
โโโ package_plugin.py # Python packaging script
โโโ package_plugin.sh # Bash packaging script
โโโ README.md
โโโ LICENSE
Building a Release
To create a ZIP file for distribution:
python package_plugin.py
Or:
./package_plugin.sh
Uninstalling
To remove the plugin:
./install.sh --remove
Or:
python install.py --remove
Troubleshooting
Authentication Issues
If you encounter authentication errors:
- Verify your credentials at https://urs.earthdata.nasa.gov/
- Check that you've accepted the EULA for the datasets you're accessing
- Try running
earthaccess.login()in the QGIS Python console
Missing Dependencies
If the plugin fails to load due to missing packages:
# Using pip
pip install earthaccess geopandas
# Or using the QGIS Python environment
# On Linux:
~/.local/share/QGIS/QGIS3/profiles/default/python/plugins/nasa_earthdata/
python3 -m pip install earthaccess geopandas
COG Visualization Issues
- Ensure GDAL has network support enabled
- Check that the data URL is accessible
- Some datasets may require authentication for streaming
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- NASA Earthdata for providing access to Earth science data
- earthaccess library for NASA Earthdata API access
- leafmap for inspiration on the GUI design
- QGIS for the amazing open-source GIS platform