Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

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

Install the Plugins

Open Plugins > Manage and Install Plugins in QGIS and switch to the All tab.

  1. Search for NASA Earthdata and click Install Plugin (or Upgrade if you already have an older version).

  2. Search for OpenGeoAgent and install it the same way.

  3. 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.earthdata.nasa.gov.

  1. Click the Settings icon at the top of the NASA Earthdata panel.

  2. Enter your Earthdata username and password.

  3. Click Test Credentials. A success message confirms the connection.

  4. 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.

  1. Type HLS into the keyword box. The Dataset dropdown filters to all collections related to Harmonized Landsat Sentinel-2.

  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.

  3. Set Max Results to cap the number of returned granules. The default is fine while you are exploring.

  4. 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.

  5. Set the Date Range. The default is one year ending today.

  6. 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:

  1. Click Save Preset and give it a descriptive name, for example HLSL30 cloud 10%.

  2. The preset appears in the Presets dropdown.

  3. 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:

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:

  1. Select a granule in the results table.

  2. Choose Single Band at the top of the display panel.

  3. Pick a band from the dropdown, for example B5 for near infrared.

  4. Click Display. The band loads on the map as a grayscale image.

For an RGB composite:

  1. Switch to RGB Composite.

  2. Choose three bands. B4, B3, B2 gives a natural color composite, while B5, B4, B3 gives a false color composite that highlights vegetation in red.

  3. 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.

  1. Choose a destination directory. The plugin can create a new folder on the fly.

  2. The progress bar below the action buttons shows authentication and download status.

  3. The plugin downloads every file for the granule (HLS has 15 files per granule) plus a small CSV with the granule’s metadata.

  4. 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:

Search NASA OPERA Surface Water Products

The same workflow works for any collection in the catalog. To map surface water with NASA OPERA DSWx:

  1. Type DSWx (or OPERA water) into the keyword box and pick the DSWx-HLS collection.

  2. Use the same area-of-interest and date controls, and apply a cloud-cover threshold of 10 percent.

  3. Click Search, then select a granule. Use Quick Look to confirm the scene covers your area of interest.

  4. 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.

  1. On the Dependencies tab, click Select All and Install if this is the first time you run the agent.

  2. 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.

  3. Optional: paste an OpenAI API key. This unlocks voice dictation and multimodal image interpretation.

  4. Save settings.

Open the chat panel and configure it:

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:

  1. Click the Capture Map Canvas screenshot button in the chat panel.

  2. Type or speak:

What is in this image?

  1. 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:

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:

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

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.