libera_utils.footprint_matching.readers.aod#

NOAA-20 VIIRS Deep Blue aerosol reader plugin (AOD + aerosol type).

Data source: Deep Blue single-sensor daily Level-3 aerosol product

  • Product: AERDB_D3_VIIRS_NOAA20 (Collection 002)

  • Format: NetCDF4, all variables at the root (no groups)

  • Spatial resolution: 1° × 1° (~111 km at equator)

  • Grid: 360 × 180 regular lat/lon (global), latitude ASCENDING (−89.5 → 89.5), longitude −179.5 → 179.5. Variables are stored in (Latitude, Longitude) dimension order, so — unlike the VIIRS CLDPROP_D3 cloud product — no transpose is required.

  • Temporal resolution: Daily composites

What this reader exposes#

FMATCH-IMAGER carries both AOD and aerosol type. The single-sensor Deep Blue granule carries both, so this one reader serves both:

  1. Optical_Depth_550 — the daily-mean NOAA-20 VIIRS Deep Blue AOD at 550 nm over land and ocean (continuous, weighted_mean).

  2. Aerosol_Type — the modal aerosol type over land and ocean (categorical, 8 classes, weighted_mode), plus three ranked companions (Aerosol_Type_Primary/Secondary/Tertiary) declared in ADDITIONAL_PRODUCT_VARIABLES, mirroring the IGBP reader’s ranked scenes.

Aerosol type categories (from the file’s long_name)#

0 = dust (land+ocean), 1 = smoke, 2 = high-altitude smoke, 3 = pyrocumulonimbus clouds, 4 = non-smoke fine mode, 5 = mixed (land+ocean), 6 = background (land+ocean maritime), 7 = fine dominated.

Why the single-sensor granule (not the GEO-LEO merged one)?#

The AOD is written to the FMATCH-IMAGER products, and used by L2 Surface Irradiance algorithms. The L2 algorithms that read it there need a single, well-characterized VIIRS aerosol source. The dedicated single-sensor AERDB_D3_VIIRS_NOAA20 Deep Blue granule provides the NOAA-20 VIIRS Deep Blue 550 nm AOD and the aerosol-type field, so both are sourced from this one authoritative granule. The cross-sensor AERDB_D3_GEOLEO_Merged granule only re-bundles the per-sensor L3s and its AOD lacks the aerosol-type field.

NetCDF4 layout (AERDB_D3_VIIRS_NOAA20)#

Root (no groups):

Latitude_1D  (180,)  — 1° bin centers, −89.5 → 89.5 (ascending)
Longitude_1D (360,)  — 1° bin centers, −179.5 → 179.5
Aerosol_Optical_Thickness_550_Land_Ocean_Mean (180, 360)  — daily-mean AOD @ 550 nm
Aerosol_Type_Land_Ocean_Mode                  (180, 360)  — modal aerosol type (0..7)
Aerosol_Type_Land_Ocean_Histogram    (8, 180, 360)  — per-type counts (not read here)

Each field’s own _FillValue (−999) and valid_range (AOD [0, 10], aerosol type [0, 7]) are read from the file and applied once; values outside them are NaN. A field without either attribute is rejected.

References

Deep Blue aerosol products:

https://earthdata.nasa.gov/sensors/viirs (Deep Blue / SOAR algorithms)

NASA Deep Blue:

https://deepblue.gsfc.nasa.gov/

File naming:

AERDB_D3_VIIRS_NOAA20.A{YYYYDDD}.{collection}.{YYYYDDDHHMMSS}.nc

Classes

VIIRSAODReader(file_paths)

Read NOAA-20 VIIRS Deep Blue AOD + aerosol type from an AERDB_D3_VIIRS_NOAA20 file.