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.

Ecosystem Structure from UAVSAR Polarimetric Radar and NISAR

Overview

In May 2026, AVUELO flew NASA’s Uninhabited Aerial Vehicle Synthetic Aperture Radar (UAVSAR) over Panama. UAVSAR is an L-band radar (wavelength 23.8 cm). Unlike the optical imagery of AVIRIS-3, which sees the leaves at the top of the canopy, L-band radar waves penetrate into the canopy and interact with branches, trunks, and the ground or water below. Radar measurements are therefore sensitive to the structure of vegetation and to its condition, such as moisture and flooding. They are also not affected by clouds.

UAVSAR is polarimetric SAR - it transmits and receives both horizontally (H) and vertically (V) polarized waves. Different scattering mechanisms affect the polarizations differently:

Scattering mechanismTypical surfacesPolarimetric signature
Surface scatteringOpen water, bare soil, short grassStrong HH and VV, weak HV, HH and VV in phase
Volume scatteringForest canopies, mangrove crownsStrong HV (cross-polarized)
Double-bounce scatteringTree trunks over water (flooded forests, mangroves), buildingsStrong HH, HH and VV about 180 degrees out of phase

In this tutorial, we use the NASA’s UAVSAR Polarimetric SAR (PolSAR) product to compare the radar signatures of two Panamanian ecosystems:

  1. the old-growth tropical forest of Barro Colorado Island (BCI)

  2. the mangroves and coastal wetlands of Parita Bay, on the Pacific coast

We will:

  • search the AVUELO UAVSAR flight lines and choose lines by their coverage

  • read only the part of a large PolSAR file that covers a study area

  • make backscatter images and a Pauli color composite of the scattering mechanisms

  • compute structure indicators: cross-polarized backscatter, the radar vegetation index (RVI), and the co-polarized phase difference and coherence

  • compare ecosystems using the ESA WorldCover land cover map, accounting for the incidence angle

  • fetch the colocated (NISAR satellite radar data and compare it with UAVSAR

Requirements

Import Libraries

Authentication

earthaccess.login() authenticates with your Earthdata Login credentials. If you have a .netrc file or EARTHDATA_USERNAME and EARTHDATA_PASSWORD environment variables, login completes without a prompt. Searching does not require login, but streaming and downloading data do.

Search the AVUELO UAVSAR Flight Lines

The UAVSAR PolSAR collection (UAVSAR_POLSAR) contains flights from many campaigns since 2008. We search for the 2026 flights over Panama. Each granule is one flight line.

Flight lines found: 19

The granule metadata include a description of the site, and the bounding box of the flight line. We convert the granule metadata to a geopandas dataframe.

Loading...

The flight lines are named site_HHHCC_YYFFF_DDD_YYMMDD_L090_CX_VV, where site is a site code, HHH is the heading of the aircraft in degrees, CC is a counter, YYFFF is the year and flight number, DDD is the data take number, YYMMDD is the date, L090 is the L-band with a 90 degrees antenna steering, CX means that cross-talk calibration was applied, and VV is the processing version.

We plot the above as granule bounding boxes over a base map.

Loading...

Files in a Flight Line Granule

Each flight line granule contains multiple files. The PolSAR products contain the elements of the 3×3 polarimetric covariance matrix, averaged over several pixels:

FileContentData type
*HHHH*.grd, *HVHV*.grd, *VVVV*.grdPower of the HH, HV, and VV channels: <|SHH|2>, <|SHV|2>, <|SVV|2>float32
*HHHV*.grd, *HHVV*.grd, *HVVV*.grdCross products between channels, e.g. <SHHSVV*>complex64
*.mlcThe same six products in the radar (slant range) geometryfloat32 / complex64
*.hgt, *.inc, *.slopeTerrain height (m), local incidence angle (radians), and terrain slope, on the .grd gridfloat32
*.annAnnotation: text file with all metadatatext
*.gif, *.kmzQuick-look image and Google Earth overlayimage

The .grd files are projected on a latitude/longitude grid, which are raw binary files with no header. The grid size and location are in the annotation file. See the PolSAR format description for details.

Let’s look at the quick-look image of a flight line. Red, green, and blue are the HH, HV, and VV power.

Loading...

Choose Flight Lines by Their Coverage

The site names are useful, but they do not guarantee that a flight line covers a particular area. We check which lines cover the BCI 50-ha forest plot, using the plot outlines from data/avuelo_forest_plots.geojson. The file contains approximate outlines of the nine forest plots in the AVUELO tree crown dataset. Each outline is made by drawing the smallest rectangle around the mapped tree crowns of the plot.

Loading...

The four lines described as “Barro Colorado Island” (PCanal_13503) do not cover the 50-ha plot. BCI is just outside the edge of their swath. The ten lines described as “Panama Canal forests” all cover it. We use the first of them, PanCan_20012_26007_004_260505_L090_CX_01.

Separately for the mangroves, we use the line pchame_06021_26008_022_260506_L090_CX_01. It covers the coast of Parita Bay, near Aguadulce, about 100 km west of Punta Chame. This coast has extensive mangroves, salt flats, and shrimp ponds.

Loading...

Read the Annotation File

The annotation file (.ann) is a text file parameter names and values. We download it and parse it into a dictionary. Let’s look at the content of the file.

Fetching long content....

The keywords below describe the .grd grid: its size, and the latitude and longitude of the center of the upper-left pixel, and the pixel spacing in degrees. Other keywords describe the calibration: the backscatter values are “σ0 (sigma nought)” in linear power units, and they are not corrected for terrain slope (Slope Calibration in GRD = No).

Loading...

Read the GRD Files

A .grd file is a grid of rows × cols pixels, stored row by row. The pixels of a range of rows are therefore stored together in the file, and we can read them with a single HTTP request for that range of bytes, without downloading the whole file. We then keep only the columns of the study area. Pixels outside the radar swath are 0, which we set to NaN.

We read the three power products, the HH-VV cross product, and the local incidence angle for each study area. The incidence angle file uses a large negative fill value (-10,000 radians) outside the swath, which we remove.

BCI forest: {'y': 901, 'x': 900}, incidence angle 9-90 degrees
Parita Bay mangroves: {'y': 2701, 'x': 2341}, incidence angle 12-83 degrees

Backscatter Images

Backscatter is usually displayed in decibels (dB): σ0dB = 10 log10(σ0).

<Figure size 1800x600 with 6 Axes>
<Figure size 1800x600 with 6 Axes>

At BCI, the forest is bright in all three channels. The lake around the island is very dark, because its smooth water surface reflects the radar waves away from the sensor. The texture of the forest comes from the crowns and from the hills of the island, whose slopes facing the radar look brighter.

At Parita Bay, the mangroves along the tidal channels and the coast are bright in HV. The shrimp ponds and salt flats are dark rectangles. The urban area is bright in HH, because walls and the ground form corner reflectors. The sea is brighter in HH and VV, likely because of the wind moving the water surface, but remains dark in HV.

Pauli Decomposition

The Pauli decomposition separates the three basic scattering mechanisms. Each component is converted to dB and stretched between its 2nd and 98th percentiles.

<Figure size 1800x900 with 2 Axes>

The forest of BCI is bright in all three components, a mix dominated by volume scattering. At Parita Bay, mangroves and other trees appear light green (volume scattering), the sea appears blue (surface scattering), and the buildings of Aguadulce appear pink-red (double bounce). The water of the shrimp ponds is dark, because it reflects little energy back to the radar.

Structure Indicators

We compute three indicators of vegetation structure from the covariance products:

  1. Cross-polarized backscatter (HV): increases with the amount of woody material in the canopy (volume scattering), and is widely used to estimate aboveground biomass. At L-band, it saturates at high biomass (roughly 100–200 Mg/ha).

  2. Radar vegetation index (RVI): ~0 for a smooth surface, close to 1 for a fully random volume such as a dense canopy.

  3. Co-polarized phase difference and coherence: the phase is around 0 degrees for surface scattering and around 180 degrees for double-bounce scattering. The coherence is high (close to 1) for simple scattering, such as from water, and low for the random scattering in canopies.

Over very dark surfaces, such as calm water, the backscatter is close to the noise level of the radar, and these ratios are not meaningful. We mask pixels where HH is below -25 dB.

<Figure size 1800x600 with 6 Axes>
<Figure size 1800x600 with 6 Axes>

Compare Ecosystems with a Land Cover Map

To compare ecosystems objectively, we use the ESA WorldCover 2021 land cover map (10 m resolution), which has a separate class for mangroves. The map is stored as Cloud Optimized GeoTIFF tiles. We use rioxarray to read just our study areas. We put the land cover on the UAVSAR grid with reproject_match(), using nearest-neighbor resampling.

We plot ESA landcover over our study area.

<Figure size 1800x900 with 2 Axes>

We create a pandas dataframe to put the radar measurements of all pixels, with their land cover class and incidence angle.

Loading...

The effect of the incidence angle

The incidence angle is the angle between the radar beam and the vertical. It increases across the swath, from the near range to the far range. Backscatter depends strongly on the incidence angle, especially for surfaces such as water and grass, so we should not compare pixels at very different angles. We plot the median HV backscatter of each class against the incidence angle.

<Figure size 1600x500 with 2 Axes>

The backscatter of all classes decreases with the incidence angle. The local incidence angle ranges from about 10° to 90°, because it includes the slopes of the hills. The backscatter is not corrected for terrain slope, and as such the forest on slopes facing the radar (low local incidence) is brighter than on slopes facing away.

We compare the ecosystems median values below. We use only the pixels with a local incidence angle between 40-55 degrees.

Loading...

We plot the statistics as box plots.

<Figure size 1800x600 with 3 Axes>

As we see above, forests have the highest HV backscatter and RVI because the signature of strong scattering in a tall complex canopy. The older forest of BCI is slightly brighter than the tree cover at Parita Bay. Mangroves have a lower HV backscatter and RVI than the forests, consistent with a smaller woody structure in the coastal mangroves. Grassland, cropland, and herbaceous wetlands have a much lower HV backscatter and RVI. Cropland has the highest HH-VV coherence, as its scattering is dominated by the soil surface.

Phase difference

The HH-VV phase difference distinguishes double-bounce scattering (around 180 degrees) from surface and volume scattering (around 0 degrees). We plot its distribution for each class.

<Figure size 1000x500 with 1 Axes>

The vegetation classes have broad phase distributions, as expected for the random scattering of canopies, while cropland and grassland have narrower peaks, typical of surface scattering. None of the classes peaks near 180, the mangroves of Parita Bay are dominated by volume scattering rather than by double bounce between trunks and water. The double-bounce signal of mangroves is strongest when the forest floor is flooded.

Export

We save the backscatter (dB) and structure indicators of each study area as a multi-band GeoTIFF, for use in a GIS later.

Saved data/PanCan_20012_26007_004_260505_L090_CX_01_BCI_polsar.tif
Saved data/pchame_06021_26008_022_260506_L090_CX_01_Parita_polsar.tif

Compare with NISAR Satellite Data

The NASA-ISRO Synthetic Aperture Radar (NISAR) satellite, launched in July 2025, carries an L-band radar similar to UAVSAR and observes almost all land surfaces every 12 days.

We use the NISAR Level 2 Geocoded Polarimetric Covariance (GCOV)](NASA/JPL/NISAR (2026)) product, which is the satellite counterpart of the UAVSAR PolSAR .grd files. Over Panama, NISAR acquires dual-polarization data (HH and HV) at 10 m resolution. The data released so far are provisional: their calibration is still being refined, so the values may change in later versions.

Search NISAR GCOV granules

We search for GCOV granules over both study areas in the months after the UAVSAR flights.

Loading...

NISAR passes over Panama on several tracks, both ascending (night) and descending (evening). The first acquisitions over our study areas are from mid-June 2026, about six weeks after the UAVSAR flights. We use the first granule that covers both study areas.

Each granule includes a quick-look image of the frame.

Loading...

Open the GCOV file

A GCOV granule is an HDF5 file of about 5 GB. We open it remotely with h5py, using 4 MB read blocks, and only read the parts we need. The backscatter layers of the main frequency band (frequencyA, with a 40 MHz bandwidth over Panama) are in the group /science/LSAR/GCOV/grids/frequencyA.

HHHH                      (33048, 33768)   float32
HVHV                      (33048, 33768)   float32
inputDataExceptionMask    (33048, 33768)   uint8
listOfCovarianceTerms     (2,)             |S4
listOfPolarizations       (2,)             |S2
mask                      (33048, 33768)   uint8
numberOfLooks             (33048, 33768)   float32
numberOfSubSwaths         ()               uint8
projection                ()               uint32
rtcGammaToSigmaFactor     (33048, 33768)   float32
xCoordinateSpacing        ()               float64
xCoordinates              (33768,)         float64
yCoordinateSpacing        ()               float64
yCoordinates              (33048,)         float64
DatasetDescription
HHHH, HVHVBackscatter of the HH and HV channels, as γ0 (gamma nought) in linear power units, with radiometric terrain correction (RTC)
rtcGammaToSigmaFactorFactor to convert γ0 to σ0, which accounts for the local terrain
maskValid pixels - 0 for pixels from partially focused radar data, 255 outside the swath
numberOfLooksNumber of radar samples averaged in each pixel
xCoordinates, yCoordinates, projectionPixel center coordinates (m) in the projection given as an EPSG code

Unlike the UAVSAR GRD product, NISAR GCOV is corrected for terrain: the γ0 values are normalized by the actual area of the terrain seen by the radar, which removes most of the brightness differences between slopes facing toward and away from the radar.

Projection: WGS 84 / UTM zone 17N, pixel size: 10.0 m, grid: 33048 x 33768 pixels

Read the study areas

The function below converts the bounds of a study area to the NISAR projection, finds the corresponding rows and columns, and reads only those pixels. We convert γ0 to σ0 with the rtcGammaToSigmaFactor, to compare with the UAVSAR σ0, and remove invalid pixels with the mask.

BCI forest: {'y': 555, 'x': 551}
Parita Bay mangroves: {'y': 1660, 'x': 1434}

Compare the images

We plot the HV backscatter of UAVSAR (May 2026) next to that of NISAR (June 2026) for both study areas, on the same color scale.

<Figure size 1600x1500 with 5 Axes>

The two sensors show the same landscape: the bright forest of BCI and the dark lake around it, and at Parita Bay the bright mangroves along the channels, the dark shrimp ponds, and the town of Aguadulce. The forest of BCI has less texture in NISAR, because NISAR is corrected for terrain, and UAVSAR is not. The water is much brighter in NISAR than in UAVSAR. This is the noise level of NISAR, which is not subtracted in this provisional product (noiseCorrectionApplied is False in the file metadata). NISAR cannot measure HV backscatter below about -25 dB.

Compare by land cover

To compare the two sensors pixel by pixel, we put the UAVSAR backscatter on the 10 m NISAR grid, averaging the UAVSAR pixels within each NISAR pixel (Resampling.average). We also put the WorldCover land cover on the NISAR grid. We then compute the median backscatter of each land cover class, and the dual-polarization radar vegetation index, 4 HV / (HH + HV), which can be computed from both sensors.

Loading...

We also compare the two sensors on a coarser 100 m grid, which reduces speckle and the effect of small differences in geolocation. We average 10 × 10 NISAR pixels and plot the UAVSAR HV backscatter against the NISAR HV backscatter, colored by the main land cover class.

<Figure size 1600x700 with 2 Axes>

For forests and mangroves, the NISAR HV backscatter is slightly higher than UAVSAR for tree cover and mangroves at both sites. For grassland, cropland, and herbaceous wetlands at Parita Bay, where these classes cover large areas, NISAR is brighter than UAVSAR, as shown by the points above the 1:1 line. NISAR might have collected during the rainy season. Growing grass and crops and wetter soils increase the backscatter of these open areas, while forests changes less. NISAR captures the contrasts in vegetation structure that UAVSAR shows in more detail.

References
  1. NASA/JPL. (2008). UAVSAR Polarimetric Synthetic Aperture Radar (PolSAR) Product. NASA Alaska Satellite Facility Distributed Active Archive Center. 10.5067/7PEQV8SVR4DM
  2. Arauz, F., Hernandez, M., Villarreal, P., Ramos, P., Agrazal, A., Perez, M., Demarsan, M., & Muller-Landau, H. C. (2026). AVUELO: Tropical Forest Crown Maps with Tree Species Names, Panama. ORNL Distributed Active Archive Center. 10.3334/ORNLDAAC/2517
  3. Dias, P. F., & Banakar, R. M. (2025). Pauli Decomposition Analysis. 2025 International Conference on Computational Innovations and Sustainable Technologies (ICCIST), 1–6. 10.1109/iccist67338.2025.11438514
  4. Zanaga, D., Van De Kerchove, R., Daems, D., De Keersmaecker, W., Brockmann, C., Kirches, G., Wevers, J., Cartus, O., Santoro, M., Fritz, S., Lesiv, M., Herold, M., Tsendbazar, N.-E., Xu, P., Ramoino, F., & Arino, O. (2022). ESA WorldCover 10 m 2021 v200. Zenodo. 10.5281/ZENODO.7254221
  5. NASA/JPL/NISAR. (2026). NISAR Provisional Geocoded Polarimetric Covariance Product (Version 1). NASA Alaska Satellite Facility Distributed Active Archive Center. 10.5067/NIL2GCOV-P1