Search and Visualize NASA Earth Data in QGIS with OpenGeoAgent
NASA’s Earthdata archive holds more than 120 petabytes of satellite imagery and geospatial datasets, but only a fraction of that catalog has historically been easy to reach from a GIS. The NASA Earthdata QGIS plugin has been catching up fast: the past week alone added advanced filtering, search presets, a quick-look gallery, per-granule detail pages, and result export to CSV, GeoJSON, and reusable bundles. Pair it with the OpenGeoAgent plugin and you can drive the entire workflow with plain English or your voice. In this tutorial, I walk through both plugins end to end, including Harmonized Landsat Sentinel-2 (HLS) imagery, NASA OPERA surface water products, and a multimodal map interpretation example.
Video tutorial: NASA Earthdata Plugin and OpenGeoAgent in QGIS
What You Will Need¶
QGIS desktop (any standard installation works)
A free NASA Earthdata account for searching and downloading data
A ChatGPT subscription (recommended) for natural-language prompts via the OpenAI Codex provider
An OpenAI API key only if you want voice dictation or multimodal image interpretation
Install the Plugins¶
Open Plugins > Manage and Install Plugins in QGIS and switch to the All tab.
Search for NASA Earthdata and click Install Plugin (or Upgrade if you already have an older version).
Search for OpenGeoAgent and install it the same way.
Restart QGIS so both plugins load cleanly.
After the restart, two new icons appear in the toolbar: the NASA Earthdata icon and the OpenGeoAgent icon. The first time you open each plugin, it offers to install its Python dependencies. Accept the prompt and wait for the installation to finish.
Authenticate with NASA Earthdata¶
You need a NASA Earthdata account to search and download data. If you do not have one, register at urs
Click the Settings icon at the top of the NASA Earthdata panel.
Enter your Earthdata username and password.
Click Test Credentials. A success message confirms the connection.
Click Save Settings.
The credentials are saved locally and reloaded automatically the next time you open the plugin, so this is a one-time step.
Search Harmonized Landsat Sentinel-2 Imagery¶
The plugin’s main panel exposes the full Earthdata catalog through a keyword filter. The catalog contains over fifty thousand datasets, so keywords are the fastest way to find what you want.
Type
HLSinto the keyword box. The Dataset dropdown filters to all collections related to Harmonized Landsat Sentinel-2.Pick HLSL30 for Landsat-derived HLS, or HLSS30 for Sentinel-2 derived HLS. When two versions of the same collection appear, pick the latest one.
Set Max Results to cap the number of returned granules. The default is fine while you are exploring.
Set the area of interest. Click Use Map Extent to use the visible canvas, Draw Bounding Box to draw a rectangle, or Use Layer Extent to use the bounding box of a vector layer. The layer-extent option is useful when your area of interest is an irregular shape such as a watershed.
Set the Date Range. The default is one year ending today.
Click Collection Info at any time to read the dataset’s metadata, including its concept ID, temporal extent, summary, and whether it is cloud hosted. Cloud-hosted collections in Cloud Optimized GeoTIFF format can be streamed directly without downloading.
Advanced Filters and Presets¶
Click Advanced Options to refine the search further. The most useful filter for optical data is Max Cloud Cover, which excludes scenes above the threshold you set. Other available filters include day/night flag, provider, and custom property filters for collection-specific attributes.
Once you have a search you will reuse, save it as a preset:
Click Save Preset and give it a descriptive name, for example
HLSL30 cloud 10%.The preset appears in the Presets dropdown.
The next time you want the same search, pick the preset and click Load. All search parameters are restored.
Click Search to run the query. The plugin returns the matching footprints on the map and lists them in a results table on the right. Click any column header (for example Date) to sort the table. The Filter box above the table filters results by year or any other text, so typing 2025 narrows the visible rows to a single year. Click Clear Filter to restore the full list.
Three tabs sit beneath the results table:
Granule Details shows the selected granule’s unique ID, dataset, provider, temporal range, file size, and link count.
Quick Look renders the granule’s RGB thumbnail. This is the fastest way to check for clouds before you display or download a full scene. Click the thumbnail to open the granule’s web page.
Gallery shows quick-look thumbnails for every selected granule at once. Hold
CtrlorShiftto select multiple rows, then switch to the Gallery tab to compare thumbnails side by side.
Stream Cloud-Optimized GeoTIFFs¶
HLS stores each spectral band as a separate Cloud Optimized GeoTIFF, so the plugin can stream individual bands or build virtual RGB mosaics on the fly without downloading anything.
For a single band:
Select a granule in the results table.
Choose Single Band at the top of the display panel.
Pick a band from the dropdown, for example
B5for near infrared.Click Display. The band loads on the map as a grayscale image.
For an RGB composite:
Switch to RGB Composite.
Choose three bands.
B4, B3, B2gives a natural color composite, whileB5, B4, B3gives a false color composite that highlights vegetation in red.Click Display. The plugin writes a virtual raster (
.vrt) to the temporary directory and adds it to the map.
Double-click the layer in the Layers panel to confirm the source. The path starts with https://, which means the layer is streaming directly from NASA’s data archive. Zoom in and watch the progress bar at the bottom of the QGIS window to see high-resolution tiles load progressively.
Download Granules¶
When you want a local copy for offline analysis, click Download Selected to save the currently selected granule, or select multiple rows and click Download All Selected for a batch.
Choose a destination directory. The plugin can create a new folder on the fly.
The progress bar below the action buttons shows authentication and download status.
The plugin downloads every file for the granule (HLS has 15 files per granule) plus a small CSV with the granule’s metadata.
Click Add to Map when prompted to load the downloaded files into QGIS, or skip it and use them later.
The Download Queue panel at the bottom tracks ongoing and finished downloads. Uncheck the queue to hide it when you no longer need it.
Export Results and Reuse Searches¶
The plugin’s export menu turns search results into reusable artifacts:
Export CSV writes the results table to a CSV file.
Export GeoJSON writes the footprints to a vector file you can drop straight back into QGIS or share with collaborators. The attribute table preserves the unique ID, concept ID, dataset, date, size, and the cloud-optimized GeoTIFF URLs.
Export Bundle writes both the search criteria and the results to a single file, so anyone with the bundle can reproduce the exact query later.
Search NASA OPERA Surface Water Products¶
The same workflow works for any collection in the catalog. To map surface water with NASA OPERA DSWx:
Type
DSWx(orOPERA water) into the keyword box and pick the DSWx-HLS collection.Use the same area-of-interest and date controls, and apply a cloud-cover threshold of 10 percent.
Click Search, then select a granule. Use Quick Look to confirm the scene covers your area of interest.
Switch to Single Band and click Display.
In the resulting map, blue pixels represent permanent open water, lighter blue pixels represent partial water, gray pixels represent cloud shadow, and white pixels represent the no-data background. Snow and ice get their own class as well. For the full class table, see the DSWx product specification linked from the OPERA project site.
For a deeper OPERA walkthrough, see the companion post Access NASA OPERA Data in QGIS with a Plugin and an AI Agent.
Configure OpenGeoAgent¶
Click the OpenGeoAgent toolbar icon, then open Settings.
On the Dependencies tab, click Select All and Install if this is the first time you run the agent.
On the Models tab, click Log in with ChatGPT to authenticate through the OpenAI Codex provider. This is the simplest path because billing is a flat monthly subscription instead of per-token.
Optional: paste an OpenAI API key. This unlocks voice dictation and multimodal image interpretation.
Save settings.
Open the chat panel and configure it:
Provider: OpenAI Codex (or your OpenAI key if you prefer voice)
Model: keep the default (
GPT-5.5)Agent mode: NASA Earthdata
Permissions: enable Trust auto-approve so the agent can add layers and download data without confirmation prompts
You are ready to start prompting. Press Ctrl+Alt+Space to start and stop voice dictation, and Ctrl+Enter to submit a prompt.
Prompt the Agent with Natural Language and Voice¶
With the NASA Earthdata layers cleared from the previous section, try a voice prompt:
Show cloud-free HLS imagery over San Francisco for summer 2025.
The agent converts your request into a structured search: it picks the HLSL30 collection, sets a sensible bounding box for San Francisco, translates “summer 2025” into a June through August date range, applies a default cloud-cover threshold, and adds the resulting granule to the map.
The first render is often a raw RGB composite with surface reflectance values that look very dark. Send a follow-up to fix the visualization:
Use a false color composite and a max value of 0.3 for visualization.
The agent updates the raster renderer with the new band combination and stretch. If the agent does not have a direct tool for what you asked, it writes a PyQGIS script on the fly. Click Copy Script beneath the response to copy the script to your clipboard, then paste it into a notepad or notebook. This is a useful way to learn how the agent constructs queries and to reproduce the workflow later.
If you want a sense of the agent’s full capabilities, send a meta prompt:
What can you do?
The reply lists supported tools (add basemaps, change raster and vector symbology, run PyQGIS code, search NASA Earthdata, and more).
Multimodal Map Interpretation¶
The agent is multimodal. With the false color HLS scene still on the map:
Click the Capture Map Canvas screenshot button in the chat panel.
Type or speak:
What is in this image?
Press
Ctrl+Enter.
The agent describes the scene using the screenshot plus the conversation context, which lets it correctly identify the area as the San Francisco Bay Area near Oakland and explain what the false color composite is showing. Multimodal interpretation requires an OpenAI API key because it runs through the OpenAI vision models.
Save and Reuse Conversations¶
When you finish a session you want to keep:
Click Copy as Markdown to copy the entire conversation to your clipboard for pasting into notes or a document.
Click Export Conversation to save the conversation as a Markdown file on disk.
Click Import Conversation in a future session to load the file back in so the agent retains the prior context.
This is the cleanest way to capture a reproducible record of how you arrived at a particular map.
When to Use Which Workflow¶
The two plugins are complementary, not competing:
Use the NASA Earthdata plugin directly when you know exactly which collection, bands, and filters you want. The GUI gives you precise control and is faster for repeatable searches once you have a preset saved.
Use OpenGeoAgent when you are exploring, when you want to drive QGIS hands-free, or when you want the agent to interpret a map for you. It is also the fastest path for users who do not want to remember band numbers or collection IDs.
For a deeper agent walkthrough, see the companion post OpenGeoAgent: An Open-Source Multimodal AI Agent for Geospatial Analysis in QGIS. For the original tour of the GUI plugin (before the May 2026 feature additions), see Access 120 Petabytes of NASA Data Directly in QGIS.
Resources¶
NASA Earthdata QGIS plugin: github
.com /opengeos /qgis -nasa -earthdata -plugin OpenGeoAgent: github
.com /opengeos /GeoAgent NASA Earthdata: earthdata.nasa.gov
NASA OPERA project site: opera.opengeos.org
Companion post: OpenGeoAgent: An Open-Source Multimodal AI Agent
Companion post: Access NASA OPERA Data in QGIS with a Plugin and an AI Agent
Companion post: Access 120 Petabytes of NASA Data Directly in QGIS
Video tutorial: youtu
.be /1dXV0nwrGG0
Try this on a place you care about: a hometown, a familiar coastline, a wildfire scar, or a recent flood event. The combination of NASA’s archive, cloud-optimized streaming, and an AI agent makes it trivial to go from a question in plain English to a map on the canvas. If you run into issues or have feature requests, please open an issue on the NASA Earthdata plugin repository or the OpenGeoAgent repository, and subscribe on YouTube or follow the RSS feed to catch the next post when it is released.