eoio.readers.radcalnet.reader module#

eoio.readers.radcalnet.reader#

In situ data reader implementation for RadCalNet.

RadCalNet’s own ascii format uses short, abbreviated column headers (e.g. P, WV, esd); this reader translates them to descriptive snake_case names at read time, matching every other reader in eoio. See eoio.readers.radcalnet.data_io.AUX_COLUMN_NAMES for the exact mapping.

Aux variables (aux_def["all"]), with units:

  • air_pressure – surface air pressure (hPa)

  • air_temperature – air temperature (K)

  • water_vapour – total column water vapour (g cm-2)

  • ozone – total column ozone (DU)

  • aerosol_optical_depth – aerosol optical depth at 550 nm (dimensionless)

  • angstrom_exponent – Angstrom exponent (dimensionless)

  • aerosol_type – site-specific categorical aerosol type code

  • earth_sun_distance – Earth-Sun distance (AU); RadCalNetReader (TOA) only, not available on RadCalNetInputReader (BOA)

  • solar_zenith_angle / solar_azimuth_angle – solar geometry (degree)

Classes#

RADCALNETFileTypeError

Error for an incurrect file being passed to the radcalnet reader

RadCalNetReader(path[, vars_sel, subset, ...])

RadCalNetInputReader(path[, vars_sel, ...])

Functions#

exception eoio.readers.radcalnet.reader.RADCALNETFileTypeError[source]#

Bases: ValueError

Error for an incurrect file being passed to the radcalnet reader

eoio.readers.radcalnet.reader.RADCALNET_REFLECTANCE_FILL_MIN = 1000.0#

RadCalNet reflectance fill sentinel. Any reflectance (or reflectance_uncertainty) value at or above this is a missing-data flag, not a real measurement, and is converted to NaN on read – consistent with every other eoio reader. Physical HCRF is ~0-1.5; RadCalNet’s own docs cite a ~9999 fill, but ERUS files (and likely other sites) emit values around 1000, so the threshold sits well below any plausible reading while still catching the documented sentinel.

class eoio.readers.radcalnet.reader.RadCalNetInputReader(path, vars_sel=None, subset=None, read_params=None)[source]#

Bases: RadCalNetReader

aux_def: Dict[str, List[str]] = {'all': ['air_pressure', 'air_temperature', 'water_vapour', 'ozone', 'aerosol_optical_depth', 'angstrom_exponent', 'aerosol_type']}#
static get_extension() → str[source]#

Return the file/folder extension of the uncompressed file/folder (needed for decompressing as compressed filename might not have this extension)

class eoio.readers.radcalnet.reader.RadCalNetReader(path, vars_sel=None, subset=None, read_params=None)[source]#

Bases: BaseReader

all_subset: Dict[str, Any] = {'angle': {'saa': ['min', 'max', 'nearest', 'tolerance'], 'sza': ['min', 'max', 'nearest', 'tolerance']}, 'datetime': ['min', 'max', 'nearest', 'tolerance_days', 'tolerance_hours', 'tolerance_minutes'], 'time_of_day_local': 'min/max/nearest/tolerance_hours/tolerance_minutes', 'time_of_day_utc': 'min/max/nearest/tolerance_hours/tolerance_minutes', 'wavelength': ['min', 'max', 'nearest', 'tolerance']}#
aux_def: Dict[str, List[str]] = {'all': ['air_pressure', 'air_temperature', 'water_vapour', 'ozone', 'aerosol_optical_depth', 'angstrom_exponent', 'aerosol_type', 'earth_sun_distance', 'solar_zenith_angle', 'solar_azimuth_angle']}#
default_read_params: Dict[str, Any] = {'include_uncertainties': 'true', 'metadata_level': 'all'}#
default_subset: Dict[str, Any] = {'angle': None, 'datetime': None, 'time_of_day_local': None, 'time_of_day_utc': None, 'wavelength': {'max': 2500, 'min': 400}}#
default_vars_sel = {'aux': 'all', 'mask': None, 'meas': 'all'}#
static get_extension() → str[source]#

Return the file/folder extension of the uncompressed file/folder (needed for decompressing as compressed filename might not have this extension)

meas_def: Dict[str, List[str]] = {'all': ['reflectance']}#
open_dataset() → Dataset[source]#

Read the product and return an xarray.Dataset.

uncertainty_vars: List[str] = ['reflectance_uncertainty', 'air_pressure_uncertainty', 'air_temperature_uncertainty', 'water_vapour_uncertainty', 'ozone_uncertainty', 'aerosol_optical_depth_uncertainty', 'angstrom_exponent_uncertainty']#