diff --git a/satpy/dataset/dataid.py b/satpy/dataset/dataid.py index bb8cc089ee..f2c5411e29 100644 --- a/satpy/dataset/dataid.py +++ b/satpy/dataset/dataid.py @@ -251,6 +251,7 @@ def __hash__(self): "calibration": { "enum": [ "reflectance", + "radiance_factor", "brightness_temperature", "radiance", "radiance_wavenumber", diff --git a/satpy/etc/readers/abi_l1b.yaml b/satpy/etc/readers/abi_l1b.yaml index 3f743b0e5d..1758a11275 100644 --- a/satpy/etc/readers/abi_l1b.yaml +++ b/satpy/etc/readers/abi_l1b.yaml @@ -104,9 +104,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -120,9 +125,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -136,9 +146,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -152,9 +167,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -168,9 +188,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -184,9 +209,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" diff --git a/satpy/etc/readers/abi_l1b_scmi.yaml b/satpy/etc/readers/abi_l1b_scmi.yaml index bad924223e..8d30c1c837 100644 --- a/satpy/etc/readers/abi_l1b_scmi.yaml +++ b/satpy/etc/readers/abi_l1b_scmi.yaml @@ -120,9 +120,14 @@ datasets: wavelength: [0.450, 0.470, 0.490] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: c01 C02: @@ -131,9 +136,14 @@ datasets: wavelength: [0.590, 0.640, 0.690] resolution: 500 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: c02 C03: @@ -142,9 +152,14 @@ datasets: wavelength: [0.8455, 0.865, 0.8845] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: c03 C04: @@ -153,9 +168,14 @@ datasets: wavelength: [1.3705, 1.378, 1.3855] resolution: 2000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: c04 C05: @@ -164,9 +184,14 @@ datasets: wavelength: [1.580, 1.610, 1.640] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: c05 C06: @@ -175,9 +200,14 @@ datasets: wavelength: [2.225, 2.250, 2.275] resolution: 2000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: c06 C07: diff --git a/satpy/etc/readers/abi_l2_nc.yaml b/satpy/etc/readers/abi_l2_nc.yaml index ff4dec80d7..0599ee96d3 100644 --- a/satpy/etc/readers/abi_l2_nc.yaml +++ b/satpy/etc/readers/abi_l2_nc.yaml @@ -19,42 +19,42 @@ datasets: CMIP_C01: # Cloud Moisture Image Products Channel 1 name: C01 wavelength: [0.450, 0.470, 0.490] - calibration: reflectance + calibration: radiance_factor file_key: CMI file_type: [abi_l2_cmip_c01, abi_l2_mcmip] CMIP_C02: # Cloud Moisture Image Products Channel 2 name: C02 wavelength: [0.590, 0.640, 0.690] - calibration: reflectance + calibration: radiance_factor file_key: CMI file_type: [abi_l2_cmip_c02, abi_l2_mcmip] CMIP_C03: # Cloud Moisture Image Products Channel 3 name: C03 wavelength: [0.8455, 0.865, 0.8845] - calibration: reflectance + calibration: radiance_factor file_key: CMI file_type: [abi_l2_cmip_c03, abi_l2_mcmip] CMIP_C04: # Cloud Moisture Image Products Channel 4 name: C04 wavelength: [1.3705, 1.378, 1.3855] - calibration: reflectance + calibration: radiance_factor file_key: CMI file_type: [abi_l2_cmip_c04, abi_l2_mcmip] CMIP_C05: # Cloud Moisture Image Products Channel 5 name: C05 wavelength: [1.580, 1.610, 1.640] - calibration: reflectance + calibration: radiance_factor file_key: CMI file_type: [abi_l2_cmip_c05, abi_l2_mcmip] CMIP_C06: # Cloud Moisture Image Products Channel 6 name: C06 wavelength: [2.225, 2.250, 2.275] - calibration: reflectance + calibration: radiance_factor file_key: CMI file_type: [abi_l2_cmip_c06, abi_l2_mcmip] diff --git a/satpy/etc/readers/agri_fy4a_l1.yaml b/satpy/etc/readers/agri_fy4a_l1.yaml index 81452f999a..062b75211a 100644 --- a/satpy/etc/readers/agri_fy4a_l1.yaml +++ b/satpy/etc/readers/agri_fy4a_l1.yaml @@ -38,9 +38,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -56,9 +61,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -73,9 +83,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -89,9 +104,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -105,9 +125,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -121,9 +146,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" diff --git a/satpy/etc/readers/agri_fy4b_l1.yaml b/satpy/etc/readers/agri_fy4b_l1.yaml index 7c54b8ef29..c6618f784b 100644 --- a/satpy/etc/readers/agri_fy4b_l1.yaml +++ b/satpy/etc/readers/agri_fy4b_l1.yaml @@ -38,9 +38,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -56,9 +61,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -73,9 +83,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -89,9 +104,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -105,9 +125,14 @@ datasets: 2000: {file_type: agri_l1_2000m} 4000: {file_type: agri_l1_4000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" diff --git a/satpy/etc/readers/ahi_hrit.yaml b/satpy/etc/readers/ahi_hrit.yaml index cb9411044e..3cc785328a 100644 --- a/satpy/etc/readers/ahi_hrit.yaml +++ b/satpy/etc/readers/ahi_hrit.yaml @@ -232,9 +232,14 @@ datasets: wavelength: [0.45,0.47,0.49] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: 1 @@ -246,9 +251,14 @@ datasets: wavelength: [0.49,0.51,0.53] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: 1 @@ -260,9 +270,14 @@ datasets: wavelength: [0.62,0.64,0.66] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: 1 @@ -274,9 +289,14 @@ datasets: wavelength: [0.85, 0.86, 0.87] resolution: 4000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: 1 @@ -288,9 +308,14 @@ datasets: wavelength: [1.5, 1.6, 1.7] resolution: 4000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: 1 @@ -302,9 +327,14 @@ datasets: wavelength: [2.2, 2.3, 2.4] resolution: 4000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: 1 diff --git a/satpy/etc/readers/ahi_hsd.yaml b/satpy/etc/readers/ahi_hsd.yaml index b74fc6cd33..60449db40e 100644 --- a/satpy/etc/readers/ahi_hsd.yaml +++ b/satpy/etc/readers/ahi_hsd.yaml @@ -20,9 +20,14 @@ datasets: wavelength: [0.45,0.47,0.49] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -37,9 +42,14 @@ datasets: wavelength: [0.49,0.51,0.53] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -54,9 +64,14 @@ datasets: wavelength: [0.62,0.64,0.66] resolution: 500 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -71,9 +86,14 @@ datasets: wavelength: [0.85, 0.86, 0.87] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -88,9 +108,14 @@ datasets: wavelength: [1.5, 1.6, 1.7] resolution: 2000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -105,9 +130,14 @@ datasets: wavelength: [2.2, 2.3, 2.4] resolution: 2000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 diff --git a/satpy/etc/readers/ami_l1b.yaml b/satpy/etc/readers/ami_l1b.yaml index e5ca8866d9..834fa5a37d 100644 --- a/satpy/etc/readers/ami_l1b.yaml +++ b/satpy/etc/readers/ami_l1b.yaml @@ -79,9 +79,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: vi004 file_key: image_pixel_values @@ -96,9 +101,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: vi005 file_key: image_pixel_values @@ -113,9 +123,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: vi006 file_key: image_pixel_values @@ -130,9 +145,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: vi008 file_key: image_pixel_values @@ -147,9 +167,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: nr013 file_key: image_pixel_values @@ -164,9 +189,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: nr016 file_key: image_pixel_values diff --git a/satpy/etc/readers/avhrr_l0_hrpt.yaml b/satpy/etc/readers/avhrr_l0_hrpt.yaml index 4f22528a5d..407329525d 100644 --- a/satpy/etc/readers/avhrr_l0_hrpt.yaml +++ b/satpy/etc/readers/avhrr_l0_hrpt.yaml @@ -14,9 +14,14 @@ datasets: wavelength: [0.58, 0.63, 0.68] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -27,9 +32,14 @@ datasets: wavelength: [0.725, 0.8625, 1.0] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -40,9 +50,14 @@ datasets: wavelength: [1.58, 1.61, 1.64] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" diff --git a/satpy/etc/readers/avhrr_l1b_aapp.yaml b/satpy/etc/readers/avhrr_l1b_aapp.yaml index 998170cb7c..23a236bbb2 100644 --- a/satpy/etc/readers/avhrr_l1b_aapp.yaml +++ b/satpy/etc/readers/avhrr_l1b_aapp.yaml @@ -14,8 +14,14 @@ datasets: wavelength: [0.58, 0.63, 0.68] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength coordinates: @@ -27,8 +33,14 @@ datasets: wavelength: [0.725, 0.8625, 1.0] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength coordinates: @@ -40,8 +52,14 @@ datasets: wavelength: [1.58, 1.61, 1.64] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength coordinates: diff --git a/satpy/etc/readers/avhrr_l1b_eps.yaml b/satpy/etc/readers/avhrr_l1b_eps.yaml index 5715f113cf..063e965a8a 100644 --- a/satpy/etc/readers/avhrr_l1b_eps.yaml +++ b/satpy/etc/readers/avhrr_l1b_eps.yaml @@ -14,8 +14,14 @@ datasets: wavelength: [0.58, 0.63, 0.68] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength coordinates: @@ -27,8 +33,14 @@ datasets: wavelength: [0.725, 0.8625, 1.0] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength coordinates: @@ -40,8 +52,14 @@ datasets: wavelength: [1.58, 1.61, 1.64] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength coordinates: diff --git a/satpy/etc/readers/avhrr_l1b_gaclac.yaml b/satpy/etc/readers/avhrr_l1b_gaclac.yaml index 1226d74d87..1ac0d14f2d 100644 --- a/satpy/etc/readers/avhrr_l1b_gaclac.yaml +++ b/satpy/etc/readers/avhrr_l1b_gaclac.yaml @@ -14,9 +14,14 @@ datasets: wavelength: [0.58, 0.63, 0.68] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance - units: '%' + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: count coordinates: @@ -28,9 +33,14 @@ datasets: wavelength: [0.725, 0.8625, 1.0] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance - units: '%' + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: count coordinates: @@ -56,9 +66,14 @@ datasets: wavelength: [1.58, 1.61, 1.64] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance - units: '%' + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: count coordinates: diff --git a/satpy/etc/readers/avhrr_l1c_eum_gac_fdr_nc.yaml b/satpy/etc/readers/avhrr_l1c_eum_gac_fdr_nc.yaml index 7dcc2535b0..b3457fc59f 100644 --- a/satpy/etc/readers/avhrr_l1c_eum_gac_fdr_nc.yaml +++ b/satpy/etc/readers/avhrr_l1c_eum_gac_fdr_nc.yaml @@ -21,9 +21,14 @@ datasets: wavelength: [0.58, 0.63, 0.68] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance - units: '%' + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: eumetsat_gac_fdr coordinates: [longitude, latitude] nc_key: 'reflectance_channel_1' @@ -33,9 +38,14 @@ datasets: wavelength: [0.725, 0.8625, 1.0] resolution: 1050 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance - units: '%' + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: eumetsat_gac_fdr coordinates: [longitude, latitude] nc_key: 'reflectance_channel_2' @@ -45,9 +55,14 @@ datasets: wavelength: [1.58, 1.61, 1.64] resolution: 1050 calibration: + # 8< v1.0 reflectance: - standard_name: toa_brightness_temperature - units: 'K' + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: eumetsat_gac_fdr coordinates: [longitude, latitude] nc_key: 'reflectance_channel_3' @@ -57,9 +72,14 @@ datasets: wavelength: [1.58, 1.61, 1.64] resolution: 1050 calibration: + # 8< v1.0 reflectance: - standard_name: toa_brightness_temperature - units: 'K' + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: eumetsat_gac_fdr coordinates: [longitude, latitude] nc_key: 'reflectance_channel_3a' diff --git a/satpy/etc/readers/epic_l1b_h5.yaml b/satpy/etc/readers/epic_l1b_h5.yaml index ea81cd0a32..4aba9947be 100644 --- a/satpy/etc/readers/epic_l1b_h5.yaml +++ b/satpy/etc/readers/epic_l1b_h5.yaml @@ -23,9 +23,14 @@ datasets: name: B317 wavelength: [0.3174, 0.3175, 0.3176] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -36,9 +41,14 @@ datasets: name: B325 wavelength: [0.3249, 0.325, 0.3251] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -49,9 +59,14 @@ datasets: name: B340 wavelength: [0.3397, 0.340, 0.3403] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -62,9 +77,14 @@ datasets: name: B388 wavelength: [0.3877, 0.388, 0.3883] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -75,9 +95,14 @@ datasets: name: B443 wavelength: [0.442, 0.443, 0.444] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -88,9 +113,14 @@ datasets: name: B551 wavelength: [0.550, 0.551, 0.552] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -101,9 +131,14 @@ datasets: name: B680 wavelength: [0.678, 0.680, 0.682] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -114,9 +149,14 @@ datasets: name: B688 wavelength: [0.6773, 0.6875, 0.6777] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -127,9 +167,14 @@ datasets: name: B764 wavelength: [0.7638, 0.764, 0.7642] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count @@ -140,9 +185,14 @@ datasets: name: B780 wavelength: [0.7792, 0.7795, 0.7798] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: count diff --git a/satpy/etc/readers/fci_l1c_nc.yaml b/satpy/etc/readers/fci_l1c_nc.yaml index bc481b542a..47181d62cc 100644 --- a/satpy/etc/readers/fci_l1c_nc.yaml +++ b/satpy/etc/readers/fci_l1c_nc.yaml @@ -266,9 +266,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" vis_05: name: vis_05 @@ -284,9 +289,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" vis_06: name: vis_06 @@ -303,9 +313,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" vis_08: name: vis_08 @@ -321,9 +336,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" vis_09: name: vis_09 @@ -339,9 +359,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" nir_13: name: nir_13 @@ -357,9 +382,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" nir_16: name: nir_16 @@ -375,9 +405,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" nir_22: name: nir_22 @@ -394,9 +429,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" ir_38: name: ir_38 diff --git a/satpy/etc/readers/fy3a_mersi1_l1b.yaml b/satpy/etc/readers/fy3a_mersi1_l1b.yaml index 738c9e6bb4..12c8f42bc4 100644 --- a/satpy/etc/readers/fy3a_mersi1_l1b.yaml +++ b/satpy/etc/readers/fy3a_mersi1_l1b.yaml @@ -37,9 +37,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -59,9 +64,14 @@ datasets: calibration_index: 1 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -81,9 +91,14 @@ datasets: calibration_index: 2 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -103,9 +118,14 @@ datasets: calibration_index: 3 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -142,9 +162,14 @@ datasets: calibration_index: 4 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -159,9 +184,14 @@ datasets: calibration_index: 5 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -176,9 +206,14 @@ datasets: calibration_index: 6 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -193,9 +228,14 @@ datasets: calibration_index: 7 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -210,9 +250,14 @@ datasets: calibration_index: 8 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -227,9 +272,14 @@ datasets: calibration_index: 9 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -244,9 +294,14 @@ datasets: calibration_index: 10 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -261,9 +316,14 @@ datasets: calibration_index: 11 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -278,9 +338,14 @@ datasets: calibration_index: 12 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -295,9 +360,14 @@ datasets: calibration_index: 13 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -312,9 +382,14 @@ datasets: calibration_index: 14 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -329,9 +404,14 @@ datasets: calibration_index: 15 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -346,9 +426,14 @@ datasets: calibration_index: 16 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -363,9 +448,14 @@ datasets: calibration_index: 17 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -380,9 +470,14 @@ datasets: calibration_index: 18 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts diff --git a/satpy/etc/readers/fy3b_mersi1_l1b.yaml b/satpy/etc/readers/fy3b_mersi1_l1b.yaml index 8ed0885e3f..2a5b96980a 100644 --- a/satpy/etc/readers/fy3b_mersi1_l1b.yaml +++ b/satpy/etc/readers/fy3b_mersi1_l1b.yaml @@ -43,9 +43,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -65,9 +70,14 @@ datasets: calibration_index: 1 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -87,9 +97,14 @@ datasets: calibration_index: 2 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -109,9 +124,14 @@ datasets: calibration_index: 3 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -148,9 +168,14 @@ datasets: calibration_index: 4 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -165,9 +190,14 @@ datasets: calibration_index: 5 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -182,9 +212,14 @@ datasets: calibration_index: 6 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -199,9 +234,14 @@ datasets: calibration_index: 7 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -216,9 +256,14 @@ datasets: calibration_index: 8 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -233,9 +278,14 @@ datasets: calibration_index: 9 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -250,9 +300,14 @@ datasets: calibration_index: 10 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -267,9 +322,14 @@ datasets: calibration_index: 11 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -284,9 +344,14 @@ datasets: calibration_index: 12 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -301,9 +366,14 @@ datasets: calibration_index: 13 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -318,9 +388,14 @@ datasets: calibration_index: 14 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -335,9 +410,14 @@ datasets: calibration_index: 15 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -352,9 +432,14 @@ datasets: calibration_index: 16 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -369,9 +454,14 @@ datasets: calibration_index: 17 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -386,9 +476,14 @@ datasets: calibration_index: 18 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts diff --git a/satpy/etc/readers/fy3c_mersi1_l1b.yaml b/satpy/etc/readers/fy3c_mersi1_l1b.yaml index f2a4740969..6ac5a7f051 100644 --- a/satpy/etc/readers/fy3c_mersi1_l1b.yaml +++ b/satpy/etc/readers/fy3c_mersi1_l1b.yaml @@ -51,9 +51,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -75,9 +80,14 @@ datasets: calibration_index: 1 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -99,9 +109,14 @@ datasets: calibration_index: 2 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -123,9 +138,14 @@ datasets: calibration_index: 3 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -163,9 +183,14 @@ datasets: calibration_index: 4 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -181,9 +206,14 @@ datasets: calibration_index: 5 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -199,9 +229,14 @@ datasets: calibration_index: 6 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -217,9 +252,14 @@ datasets: calibration_index: 7 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -235,9 +275,14 @@ datasets: calibration_index: 8 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -253,9 +298,14 @@ datasets: calibration_index: 9 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -271,9 +321,14 @@ datasets: calibration_index: 10 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -289,9 +344,14 @@ datasets: calibration_index: 11 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -307,9 +367,14 @@ datasets: calibration_index: 12 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -325,9 +390,14 @@ datasets: calibration_index: 13 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -343,9 +413,14 @@ datasets: calibration_index: 14 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -361,9 +436,14 @@ datasets: calibration_index: 15 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -379,9 +459,14 @@ datasets: calibration_index: 16 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -397,9 +482,14 @@ datasets: calibration_index: 17 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts @@ -415,9 +505,14 @@ datasets: calibration_index: 18 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: units: "1" standard_name: counts diff --git a/satpy/etc/readers/ghi_l1.yaml b/satpy/etc/readers/ghi_l1.yaml index e5bbe4592c..4aca2fda06 100644 --- a/satpy/etc/readers/ghi_l1.yaml +++ b/satpy/etc/readers/ghi_l1.yaml @@ -35,9 +35,14 @@ datasets: 500: {file_type: ghi_l1_0500m} 2000: {file_type: ghi_l1_2000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -52,9 +57,14 @@ datasets: 1000: {file_type: ghi_l1_1000m} 2000: {file_type: ghi_l1_2000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -69,9 +79,14 @@ datasets: 1000: {file_type: ghi_l1_1000m} 2000: {file_type: ghi_l1_2000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -86,9 +101,14 @@ datasets: 1000: {file_type: ghi_l1_1000m} 2000: {file_type: ghi_l1_2000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -103,9 +123,14 @@ datasets: 1000: {file_type: ghi_l1_1000m} 2000: {file_type: ghi_l1_2000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" @@ -120,9 +145,14 @@ datasets: 1000: {file_type: ghi_l1_1000m} 2000: {file_type: ghi_l1_2000m} calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" counts: standard_name: counts units: "1" diff --git a/satpy/etc/readers/gms5-vissr_l1b.yaml b/satpy/etc/readers/gms5-vissr_l1b.yaml index b23652c99f..f9c75288d2 100644 --- a/satpy/etc/readers/gms5-vissr_l1b.yaml +++ b/satpy/etc/readers/gms5-vissr_l1b.yaml @@ -50,9 +50,14 @@ datasets: counts: standard_name: counts units: 1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: gms5_vissr_vis IR1: diff --git a/satpy/etc/readers/goes-imager_hrit.yaml b/satpy/etc/readers/goes-imager_hrit.yaml index 83b2e5ef5c..d8e612c110 100644 --- a/satpy/etc/readers/goes-imager_hrit.yaml +++ b/satpy/etc/readers/goes-imager_hrit.yaml @@ -87,9 +87,14 @@ datasets: resolution: 3000 wavelength: [0.55, 0.7, 0.75] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" # radiance: # standard_name: toa_outgoing_radiance_per_unit_wavelength # units: W m-2 um-1 sr-1 diff --git a/satpy/etc/readers/goes-imager_nc.yaml b/satpy/etc/readers/goes-imager_nc.yaml index 2042362d1d..89c9b62f15 100644 --- a/satpy/etc/readers/goes-imager_nc.yaml +++ b/satpy/etc/readers/goes-imager_nc.yaml @@ -89,9 +89,15 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: comment: Angle of incident radiation and annual variation of the earth-sun distance is not taken into account. A value of 100% corresponds to the radiance of a perfectly reflecting diffuse surface illuminated at normal incidence when the sun is at its annual-average distance from the Earth. units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + comment: Angle of incident radiation and annual variation of the earth-sun distance is not taken into account. A value of 100% corresponds to the radiance of a perfectly reflecting diffuse surface illuminated at normal incidence when the sun is at its annual-average distance from the Earth. + units: "%" coordinates: - longitude_00_7 - latitude_00_7 diff --git a/satpy/etc/readers/insat3d_img_l1b_h5.yaml b/satpy/etc/readers/insat3d_img_l1b_h5.yaml index ac7d90d685..ed571062a5 100644 --- a/satpy/etc/readers/insat3d_img_l1b_h5.yaml +++ b/satpy/etc/readers/insat3d_img_l1b_h5.yaml @@ -24,9 +24,14 @@ datasets: resolution: 1000 wavelength: [0.525, 0.65, 0.775] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: mW.cm-2.sr-1.micron-1 diff --git a/satpy/etc/readers/jami_hrit.yaml b/satpy/etc/readers/jami_hrit.yaml index da011dec31..3d81ae8e98 100644 --- a/satpy/etc/readers/jami_hrit.yaml +++ b/satpy/etc/readers/jami_hrit.yaml @@ -68,9 +68,14 @@ datasets: counts: standard_name: counts units: 1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: hrit_vis IR1: diff --git a/satpy/etc/readers/mersi2_l1b.yaml b/satpy/etc/readers/mersi2_l1b.yaml index 59ef4e9adb..79e78d01f1 100644 --- a/satpy/etc/readers/mersi2_l1b.yaml +++ b/satpy/etc/readers/mersi2_l1b.yaml @@ -81,9 +81,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -107,9 +112,14 @@ datasets: calibration_index: 1 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -133,9 +143,14 @@ datasets: calibration_index: 2 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -159,9 +174,14 @@ datasets: calibration_index: 3 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -179,9 +199,14 @@ datasets: calibration_index: 4 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -199,9 +224,14 @@ datasets: calibration_index: 5 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -219,9 +249,14 @@ datasets: calibration_index: 6 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -239,9 +274,14 @@ datasets: calibration_index: 7 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -259,9 +299,14 @@ datasets: calibration_index: 8 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -279,9 +324,14 @@ datasets: calibration_index: 9 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -299,9 +349,14 @@ datasets: calibration_index: 10 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -319,9 +374,14 @@ datasets: calibration_index: 11 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -339,9 +399,14 @@ datasets: calibration_index: 12 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -359,9 +424,14 @@ datasets: calibration_index: 13 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -379,9 +449,14 @@ datasets: calibration_index: 14 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -399,9 +474,14 @@ datasets: calibration_index: 15 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -419,9 +499,14 @@ datasets: calibration_index: 16 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -439,9 +524,14 @@ datasets: calibration_index: 17 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -459,9 +549,14 @@ datasets: calibration_index: 18 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength diff --git a/satpy/etc/readers/mersi3_l1b.yaml b/satpy/etc/readers/mersi3_l1b.yaml index 93dffffd9b..f2c1a24725 100644 --- a/satpy/etc/readers/mersi3_l1b.yaml +++ b/satpy/etc/readers/mersi3_l1b.yaml @@ -69,9 +69,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -95,9 +100,14 @@ datasets: calibration_index: 1 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength diff --git a/satpy/etc/readers/mersi_ll_l1b.yaml b/satpy/etc/readers/mersi_ll_l1b.yaml index ad035b4fcc..7b76ec6901 100644 --- a/satpy/etc/readers/mersi_ll_l1b.yaml +++ b/satpy/etc/readers/mersi_ll_l1b.yaml @@ -56,9 +56,14 @@ datasets: calibration_key: Calibration/Solar_Irradiance_LL coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength diff --git a/satpy/etc/readers/mersi_rm_l1b.yaml b/satpy/etc/readers/mersi_rm_l1b.yaml index b689ff2ceb..aef8070e8d 100644 --- a/satpy/etc/readers/mersi_rm_l1b.yaml +++ b/satpy/etc/readers/mersi_rm_l1b.yaml @@ -36,9 +36,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -56,9 +61,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -76,9 +86,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -96,9 +111,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength @@ -116,9 +136,14 @@ datasets: calibration_index: 0 coordinates: [longitude, latitude] calibration: + # 8< v1.0 reflectance: - units: "%" standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: units: 'mW/ (m2 cm-1 sr)' standard_name: toa_outgoing_radiance_per_unit_wavelength diff --git a/satpy/etc/readers/modis_l1b.yaml b/satpy/etc/readers/modis_l1b.yaml index 864ed0bedb..8e7040881e 100644 --- a/satpy/etc/readers/modis_l1b.yaml +++ b/satpy/etc/readers/modis_l1b.yaml @@ -16,7 +16,13 @@ datasets: 250: {file_type: hdf_eos_data_250m} 500: {file_type: hdf_eos_data_500m} 1000: {file_type: hdf_eos_data_1000m} - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.62 @@ -28,7 +34,13 @@ datasets: 250: {file_type: hdf_eos_data_250m} 500: {file_type: hdf_eos_data_500m} 1000: {file_type: hdf_eos_data_1000m} - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.841 @@ -39,7 +51,13 @@ datasets: resolution: 500: {file_type: hdf_eos_data_500m} 1000: {file_type: hdf_eos_data_1000m} - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.459 @@ -50,7 +68,13 @@ datasets: resolution: 500: {file_type: hdf_eos_data_500m} 1000: {file_type: hdf_eos_data_1000m} - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.545 @@ -61,7 +85,13 @@ datasets: resolution: 500: {file_type: hdf_eos_data_500m} 1000: {file_type: hdf_eos_data_1000m} - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 1.23 @@ -72,7 +102,13 @@ datasets: resolution: 500: {file_type: hdf_eos_data_500m} 1000: {file_type: hdf_eos_data_1000m} - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 1.628 @@ -83,7 +119,13 @@ datasets: resolution: 500: {file_type: hdf_eos_data_500m} 1000: {file_type: hdf_eos_data_1000m} - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 2.105 @@ -93,7 +135,13 @@ datasets: file_type: hdf_eos_data_1000m name: '8' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.405 @@ -103,7 +151,13 @@ datasets: file_type: hdf_eos_data_1000m name: '9' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.438 @@ -113,7 +167,13 @@ datasets: file_type: hdf_eos_data_1000m name: '10' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.483 @@ -123,7 +183,13 @@ datasets: file_type: hdf_eos_data_1000m name: '11' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.526 @@ -133,7 +199,13 @@ datasets: file_type: hdf_eos_data_1000m name: '12' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.546 @@ -143,7 +215,13 @@ datasets: file_type: hdf_eos_data_1000m name: '13hi' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.662 @@ -153,7 +231,13 @@ datasets: file_type: hdf_eos_data_1000m name: '13lo' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.662 @@ -163,7 +247,13 @@ datasets: file_type: hdf_eos_data_1000m name: '14hi' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.673 @@ -173,7 +263,13 @@ datasets: file_type: hdf_eos_data_1000m name: '14lo' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.673 @@ -183,7 +279,13 @@ datasets: file_type: hdf_eos_data_1000m name: '15' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.743 @@ -193,7 +295,13 @@ datasets: file_type: hdf_eos_data_1000m name: '16' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.862 @@ -203,7 +311,13 @@ datasets: file_type: hdf_eos_data_1000m name: '17' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.89 @@ -213,7 +327,13 @@ datasets: file_type: hdf_eos_data_1000m name: '18' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.931 @@ -223,7 +343,13 @@ datasets: file_type: hdf_eos_data_1000m name: '19' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 0.915 @@ -293,7 +419,13 @@ datasets: file_type: hdf_eos_data_1000m name: '26' resolution: 1000 - calibration: [reflectance, radiance, counts] + calibration: + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - radiance + - counts coordinates: [longitude, latitude] wavelength: - 1.36 diff --git a/satpy/etc/readers/msi_l1c_earthcare.yaml b/satpy/etc/readers/msi_l1c_earthcare.yaml index 833241417e..a28c25fef7 100644 --- a/satpy/etc/readers/msi_l1c_earthcare.yaml +++ b/satpy/etc/readers/msi_l1c_earthcare.yaml @@ -24,9 +24,14 @@ datasets: wavelength: [0.66, 0.67, 0.68] resolution: 500 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance units: W m-2 sr-1 @@ -42,9 +47,14 @@ datasets: wavelength: [0.855, 0.865, 0.875] resolution: 500 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance units: W m-2 sr-1 @@ -60,9 +70,14 @@ datasets: wavelength: [1.64, 1.67, 1.70] resolution: 500 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance units: W m-2 sr-1 @@ -76,9 +91,14 @@ datasets: wavelength: [2.16, 2.21, 2.26] resolution: 500 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance units: W m-2 sr-1 diff --git a/satpy/etc/readers/msu_gsa_l1b.yaml b/satpy/etc/readers/msu_gsa_l1b.yaml index d650ac6e89..8b1f9ebccf 100644 --- a/satpy/etc/readers/msu_gsa_l1b.yaml +++ b/satpy/etc/readers/msu_gsa_l1b.yaml @@ -45,9 +45,14 @@ datasets: wavelength: [0.5, 0.6, 0.65] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance units: W m-2 sr-1 @@ -60,9 +65,14 @@ datasets: wavelength: [0.65, 0.7, 0.8] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance units: W m-2 sr-1 @@ -75,9 +85,14 @@ datasets: wavelength: [0.8, 0.9, 0.9] resolution: 1000 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance units: W m-2 sr-1 diff --git a/satpy/etc/readers/mtsat2-imager_hrit.yaml b/satpy/etc/readers/mtsat2-imager_hrit.yaml index 6158f92ece..503a611c53 100644 --- a/satpy/etc/readers/mtsat2-imager_hrit.yaml +++ b/satpy/etc/readers/mtsat2-imager_hrit.yaml @@ -93,9 +93,14 @@ datasets: counts: standard_name: counts units: 1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: [hrit_vis, hrit_vis_seg] IR1: diff --git a/satpy/etc/readers/olci_l1b.yaml b/satpy/etc/readers/olci_l1b.yaml index d36279a262..5414cc4ec3 100644 --- a/satpy/etc/readers/olci_l1b.yaml +++ b/satpy/etc/readers/olci_l1b.yaml @@ -9,38 +9,37 @@ reader: reader: !!python/name:satpy.readers.core.yaml_reader.FileYAMLReader file_types: - esa_l1b: - file_reader: !!python/name:satpy.readers.olci_nc.NCOLCI1B - file_patterns: - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/{dataset_name}_radiance.nc' - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/{dataset_name}_radiance.nc' - requires: [esa_cal] - esa_angles: - file_reader: !!python/name:satpy.readers.olci_nc.NCOLCIAngles - file_patterns: - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/tie_geometries.nc' - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/tie_geometries.nc' - esa_geo: - file_reader: !!python/name:satpy.readers.olci_nc.NCOLCIGeo - file_patterns: - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/geo_coordinates.nc' - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/geo_coordinates.nc' - esa_cal: - file_reader: !!python/name:satpy.readers.olci_nc.NCOLCICal - file_patterns: - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/instrument_data.nc' - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/instrument_data.nc' - esa_meteo: - file_reader: !!python/name:satpy.readers.olci_nc.NCOLCIMeteo - file_patterns: - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/tie_meteo.nc' - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/tie_meteo.nc' - esa_quality_flags: - file_reader: !!python/name:satpy.readers.olci_nc.NCOLCI1B - file_patterns: - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/qualityFlags.nc' - - '{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/qualityFlags.nc' - + esa_l1b: + file_reader: !!python/name:satpy.readers.olci_nc.NCOLCI1B + file_patterns: + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/{dataset_name}_radiance.nc" + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/{dataset_name}_radiance.nc" + requires: [esa_cal] + esa_angles: + file_reader: !!python/name:satpy.readers.olci_nc.NCOLCIAngles + file_patterns: + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/tie_geometries.nc" + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/tie_geometries.nc" + esa_geo: + file_reader: !!python/name:satpy.readers.olci_nc.NCOLCIGeo + file_patterns: + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/geo_coordinates.nc" + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/geo_coordinates.nc" + esa_cal: + file_reader: !!python/name:satpy.readers.olci_nc.NCOLCICal + file_patterns: + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/instrument_data.nc" + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/instrument_data.nc" + esa_meteo: + file_reader: !!python/name:satpy.readers.olci_nc.NCOLCIMeteo + file_patterns: + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/tie_meteo.nc" + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/tie_meteo.nc" + esa_quality_flags: + file_reader: !!python/name:satpy.readers.olci_nc.NCOLCI1B + file_patterns: + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4d}_{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/qualityFlags.nc" + - "{mission_id:3s}_OL_1_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}______{centre:3s}_{platform_mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/qualityFlags.nc" datasets: longitude: @@ -67,15 +66,20 @@ datasets: Oa01: name: Oa01 sensor: olci - wavelength: [0.3925,0.4,0.4075] + wavelength: [0.3925, 0.4, 0.4075] resolution: 300 calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude, latitude] file_type: esa_l1b @@ -88,175 +92,235 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude, latitude] file_type: esa_l1b Oa03: name: Oa03 sensor: olci - wavelength: [0.4375,0.4425,0.4475] + wavelength: [0.4375, 0.4425, 0.4475] resolution: 300 calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude, latitude] file_type: esa_l1b Oa04: name: Oa04 sensor: olci - wavelength: [0.485,0.49,0.495] + wavelength: [0.485, 0.49, 0.495] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa05: name: Oa05 sensor: olci - wavelength: [0.505,0.51,0.515] + wavelength: [0.505, 0.51, 0.515] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa06: name: Oa06 sensor: olci - wavelength: [0.555,0.56,0.565] + wavelength: [0.555, 0.56, 0.565] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa07: name: Oa07 sensor: olci - wavelength: [0.615,0.62,0.625] + wavelength: [0.615, 0.62, 0.625] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa08: name: Oa08 sensor: olci - wavelength: [0.66,0.665,0.67] + wavelength: [0.66, 0.665, 0.67] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa09: name: Oa09 sensor: olci - wavelength: [0.67,0.67375,0.6775] + wavelength: [0.67, 0.67375, 0.6775] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa10: name: Oa10 sensor: olci - wavelength: [0.6775,0.68125,0.685] + wavelength: [0.6775, 0.68125, 0.685] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa11: name: Oa11 sensor: olci - wavelength: [0.70375,0.70875,0.71375] + wavelength: [0.70375, 0.70875, 0.71375] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa12: name: Oa12 sensor: olci - wavelength: [0.75,0.75375,0.7575] + wavelength: [0.75, 0.75375, 0.7575] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa13: name: Oa13 sensor: olci - wavelength: [0.76,0.76125,0.7625] + wavelength: [0.76, 0.76125, 0.7625] resolution: 300 coordinates: [longitude, latitude] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa14: @@ -269,9 +333,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa15: @@ -284,9 +353,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa16: @@ -299,9 +373,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa17: @@ -314,9 +393,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa18: @@ -329,9 +413,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa19: @@ -344,9 +433,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa20: @@ -359,9 +453,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b Oa21: @@ -374,9 +473,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" file_type: esa_l1b solar_zenith_angle: diff --git a/satpy/etc/readers/seviri_l1b_hrit.yaml b/satpy/etc/readers/seviri_l1b_hrit.yaml index d83135092e..b52de236c1 100644 --- a/satpy/etc/readers/seviri_l1b_hrit.yaml +++ b/satpy/etc/readers/seviri_l1b_hrit.yaml @@ -15,157 +15,197 @@ reader: reader: !!python/name:satpy.readers.core.yaml_reader.GEOSegmentYAMLReader file_types: - HRIT_HRV: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-HRV______-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-HRV______-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 24 - - HRIT_IR_016: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_016___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_016___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_039: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_039___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_039___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_087: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_087___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_087___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_097: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_097___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_097___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_108: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_108___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_108___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_120: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_120___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_120___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_134: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_134___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_134___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_VIS006: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS006___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS006___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_VIS008: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS008___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS008___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_WV_062: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_062___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_062___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_WV_073: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_073___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_073___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_HRV_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-HRV______-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 24 - - HRIT_IR_016_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_016___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_039_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_039___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_087_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_087___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_097_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_097___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_108_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_108___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_120_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_120___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_IR_134_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_134___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_VIS006_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS006___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_VIS008_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS008___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_WV_062_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_062___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_WV_073_C: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_073___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_'] - requires: [HRIT_PRO, HRIT_EPI] - expected_segments: 8 - - HRIT_PRO: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGPrologueFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-_________-PRO______-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-_________-PRO______-{start_time:%Y%m%d%H%M}-__.bz2'] - - HRIT_EPI: - file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGEpilogueFileHandler - file_patterns: ['{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-_________-EPI______-{start_time:%Y%m%d%H%M}-__', '{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-_________-EPI______-{start_time:%Y%m%d%H%M}-__.bz2'] + HRIT_HRV: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-HRV______-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-HRV______-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 24 + + HRIT_IR_016: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_016___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_016___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_039: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_039___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_039___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_087: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_087___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_087___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_097: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_097___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_097___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_108: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_108___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_108___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_120: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_120___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_120___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_134: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_134___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_134___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_VIS006: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS006___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS006___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_VIS008: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS008___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS008___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_WV_062: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_062___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_062___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_WV_073: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_073___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_073___-{segment:06d}___-{start_time:%Y%m%d%H%M}-__.bz2" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_HRV_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-HRV______-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 24 + + HRIT_IR_016_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_016___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_039_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_039___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_087_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_087___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_097_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_097___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_108_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_108___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_120_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_120___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_IR_134_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-IR_134___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_VIS006_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS006___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_VIS008_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-VIS008___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_WV_062_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_062___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_WV_073_C: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-WV_073___-{segment:06d}___-{start_time:%Y%m%d%H%M}-C_" + requires: [HRIT_PRO, HRIT_EPI] + expected_segments: 8 + + HRIT_PRO: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGPrologueFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-_________-PRO______-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-_________-PRO______-{start_time:%Y%m%d%H%M}-__.bz2" + + HRIT_EPI: + file_reader: !!python/name:satpy.readers.seviri_l1b_hrit.HRITMSGEpilogueFileHandler + file_patterns: + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-_________-EPI______-{start_time:%Y%m%d%H%M}-__" + - "{rate:1s}-000-{hrit_format:_<6s}-{platform_shortname:4s}_{service:_<7s}-_________-EPI______-{start_time:%Y%m%d%H%M}-__.bz2" datasets: HRV: @@ -173,9 +213,14 @@ datasets: resolution: 1000.134348869 wavelength: [0.5, 0.7, 0.9] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -189,9 +234,14 @@ datasets: resolution: 3000.403165817 wavelength: [1.5, 1.64, 1.78] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -301,9 +351,14 @@ datasets: resolution: 3000.403165817 wavelength: [0.56, 0.635, 0.71] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -317,9 +372,14 @@ datasets: resolution: 3000.403165817 wavelength: [0.74, 0.81, 0.88] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 diff --git a/satpy/etc/readers/seviri_l1b_native.yaml b/satpy/etc/readers/seviri_l1b_native.yaml index 9421e53011..97349a1a43 100644 --- a/satpy/etc/readers/seviri_l1b_native.yaml +++ b/satpy/etc/readers/seviri_l1b_native.yaml @@ -8,16 +8,16 @@ reader: supports_fsspec: true sensors: [seviri] reader: !!python/name:satpy.readers.core.yaml_reader.GEOFlippableFileYAMLReader - # file pattern keys to sort files by with 'satpy.utils.group_files' - group_keys: ['end_time', 'satid'] + + group_keys: ["end_time", "satid"] # file pattern keys to sort files by with 'satpy.utils.group_files' file_types: native_msg: file_reader: !!python/name:satpy.readers.seviri_l1b_native.NativeMSGFileHandler - file_patterns: ['{satid:4s}-{instr:4s}-MSG{product_level:2d}-{base_algorithm_version:4s}-NA-{end_time:%Y%m%d%H%M%S.%f}000Z-{processing_time:%Y%m%d%H%M%S}-{order_id:s}.nat', - '{satid:4s}-{instr:4s}-MSG{product_level:2d}-{base_algorithm_version:4s}-NA-{end_time:%Y%m%d%H%M%S.%f}000Z-{order_id:s}.nat', - '{satid:4s}-{instr:4s}-MSG{product_level:2d}-{base_algorithm_version:4s}-NA-{end_time:%Y%m%d%H%M%S.%f}000Z' - ] + file_patterns: + - "{satid:4s}-{instr:4s}-MSG{product_level:2d}-{base_algorithm_version:4s}-NA-{end_time:%Y%m%d%H%M%S.%f}000Z-{processing_time:%Y%m%d%H%M%S}-{order_id:s}.nat" + - "{satid:4s}-{instr:4s}-MSG{product_level:2d}-{base_algorithm_version:4s}-NA-{end_time:%Y%m%d%H%M%S.%f}000Z-{order_id:s}.nat" + - "{satid:4s}-{instr:4s}-MSG{product_level:2d}-{base_algorithm_version:4s}-NA-{end_time:%Y%m%d%H%M%S.%f}000Z" # Note: the end_time value in the SEVIRI native filenames is officially called Nominal Image Time (SNIT field in # the 15_MAIN_PRODUCT_HEADER) marking the time where the product is defined to be valid. This time always matches # the scan acquisition end time (SSST in 15_MAIN_PRODUCT_HEADER). @@ -28,9 +28,14 @@ datasets: resolution: 1000.134348869 wavelength: [0.5, 0.7, 0.9] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -44,9 +49,14 @@ datasets: resolution: 3000.403165817 wavelength: [1.5, 1.64, 1.78] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -156,9 +166,14 @@ datasets: resolution: 3000.403165817 wavelength: [0.56, 0.635, 0.71] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -172,9 +187,14 @@ datasets: resolution: 3000.403165817 wavelength: [0.74, 0.81, 0.88] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 diff --git a/satpy/etc/readers/seviri_l1b_nc.yaml b/satpy/etc/readers/seviri_l1b_nc.yaml index b5facc9e07..07d26aa432 100644 --- a/satpy/etc/readers/seviri_l1b_nc.yaml +++ b/satpy/etc/readers/seviri_l1b_nc.yaml @@ -11,9 +11,10 @@ reader: group_keys: ["start_time", "satid"] file_types: - seviri_l1b_nc: - file_reader: !!python/name:satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler - file_patterns: ['W_XX-EUMETSAT-Darmstadt,VIS+IR+HRV+IMAGERY,{satid:4s}+SEVIRI_C_EUMG_{start_time:%Y%m%d%H%M%S}.nc'] + seviri_l1b_nc: + file_reader: !!python/name:satpy.readers.seviri_l1b_nc.NCSEVIRIFileHandler + file_patterns: + - "W_XX-EUMETSAT-Darmstadt,VIS+IR+HRV+IMAGERY,{satid:4s}+SEVIRI_C_EUMG_{start_time:%Y%m%d%H%M%S}.nc" datasets: HRV: @@ -21,9 +22,14 @@ datasets: resolution: 1000.134348869 wavelength: [0.5, 0.7, 0.9] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -31,16 +37,21 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch12' + nc_key: "ch12" IR_016: name: IR_016 resolution: 3000.403165817 wavelength: [1.5, 1.64, 1.78] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -48,7 +59,7 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch3' + nc_key: "ch3" IR_039: name: IR_039 @@ -65,7 +76,7 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch4' + nc_key: "ch4" IR_087: name: IR_087 @@ -82,7 +93,7 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch7' + nc_key: "ch7" IR_097: name: IR_097 @@ -99,7 +110,7 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch8' + nc_key: "ch8" IR_108: name: IR_108 @@ -116,7 +127,7 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch9' + nc_key: "ch9" IR_120: name: IR_120 @@ -133,7 +144,7 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch10' + nc_key: "ch10" IR_134: name: IR_134 @@ -150,16 +161,21 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch11' + nc_key: "ch11" VIS006: name: VIS006 resolution: 3000.403165817 wavelength: [0.56, 0.635, 0.71] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -167,17 +183,21 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch1' - + nc_key: "ch1" VIS008: name: VIS008 resolution: 3000.403165817 wavelength: [0.74, 0.81, 0.88] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavenumber units: mW m-2 sr-1 (cm-1)-1 @@ -185,7 +205,7 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch2' + nc_key: "ch2" WV_062: name: WV_062 @@ -202,7 +222,7 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch5' + nc_key: "ch5" WV_073: name: WV_073 @@ -219,4 +239,4 @@ datasets: standard_name: counts units: count file_type: seviri_l1b_nc - nc_key: 'ch6' + nc_key: "ch6" diff --git a/satpy/etc/readers/sgli_l1b.yaml b/satpy/etc/readers/sgli_l1b.yaml index 67863624d6..7a0eb5d056 100644 --- a/satpy/etc/readers/sgli_l1b.yaml +++ b/satpy/etc/readers/sgli_l1b.yaml @@ -20,10 +20,11 @@ reader: transitive: false calibration: enum: - - reflectance - - brightness_temperature - - radiance - - counts + - reflectance + - radiance_factor + - brightness_temperature + - radiance + - counts transitive: true modifiers: default: [] @@ -37,28 +38,22 @@ reader: resolution: transitive: false +file_types: + gcom-c_l1b_v: + file_reader: !!python/name:satpy.readers.sgli_l1b.HDF5SGLI + file_patterns: # GC1SG1_202002231142M25511_1BSG_VNRDQ_1008.h5 + - "{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_1BS{type:1s}_VNR{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5" -file_types: - gcom-c_l1b_v: - file_reader: !!python/name:satpy.readers.sgli_l1b.HDF5SGLI - # GC1SG1_202002231142M25511_1BSG_VNRDQ_1008.h5 - file_patterns: - - '{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_1BS{type:1s}_VNR{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5' - #- '{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_{level:2s}S{type:1s}_{subsystem:3s}{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5' - - gcom-c_l1b_p: - file_reader: !!python/name:satpy.readers.sgli_l1b.HDF5SGLI - file_patterns: - - '{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_1BS{type:1s}_POL{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5' - #- '{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_{level:2s}S{type:1s}_{subsystem:3s}{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5' - - gcom-c_l1b_ir: - file_reader: !!python/name:satpy.readers.sgli_l1b.HDF5SGLI - file_patterns: - - '{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_1BS{type:1s}_IRS{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5' - #- '{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_{level:2s}S{type:1s}_{subsystem:3s}{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5' + gcom-c_l1b_p: + file_reader: !!python/name:satpy.readers.sgli_l1b.HDF5SGLI + file_patterns: + - "{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_1BS{type:1s}_POL{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5" + gcom-c_l1b_ir: + file_reader: !!python/name:satpy.readers.sgli_l1b.HDF5SGLI + file_patterns: + - "{platform_id:3s}{sensor_id:3s}_{start_time:%Y%m%d%H%M}{second:1s}{path:3s}{scene:2s}_1BS{type:1s}_IRS{mode:1s}{resolution:1s}_{algorithm_version:1s}{parameter_version:3d}.h5" datasets: longitude_v: @@ -151,7 +146,6 @@ datasets: file_type: gcom-c_l1b_v file_key: Geometry_data/Sensor_azimuth - VN1: name: VN1 sensor: sgli @@ -161,9 +155,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN01 @@ -177,14 +176,18 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN02 - VN3: name: VN3 sensor: sgli @@ -194,9 +197,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN03 @@ -204,20 +212,24 @@ datasets: VN4: name: VN4 sensor: sgli - wavelength: [0.485,0.49,0.495] + wavelength: [0.485, 0.49, 0.495] resolution: [250, 1000] calibration: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN04 - VN5: name: VN5 sensor: sgli @@ -227,9 +239,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN05 @@ -243,9 +260,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN06 @@ -259,9 +281,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN07 @@ -275,9 +302,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN08 @@ -291,9 +323,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN09 @@ -307,9 +344,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN10 @@ -323,9 +365,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_v, latitude_v] file_type: gcom-c_l1b_v file_key: Image_data/Lt_VN11 @@ -340,9 +387,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_p, latitude_p] file_type: gcom-c_l1b_p file_key: Image_data/Lt_P1_{polarization} @@ -357,9 +409,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_p, latitude_p] file_type: gcom-c_l1b_p file_key: Image_data/Lt_P2_{polarization} @@ -373,9 +430,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_ir, latitude_ir] file_type: gcom-c_l1b_ir file_key: Image_data/Lt_SW01 @@ -389,9 +451,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_ir, latitude_ir] file_type: gcom-c_l1b_ir file_key: Image_data/Lt_SW02 @@ -405,9 +472,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_ir, latitude_ir] file_type: gcom-c_l1b_ir file_key: Image_data/Lt_SW03 @@ -421,9 +493,14 @@ datasets: radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" coordinates: [longitude_ir, latitude_ir] file_type: gcom-c_l1b_ir file_key: Image_data/Lt_SW04 diff --git a/satpy/etc/readers/slstr_l1b.yaml b/satpy/etc/readers/slstr_l1b.yaml index 40dde70853..15f5368754 100644 --- a/satpy/etc/readers/slstr_l1b.yaml +++ b/satpy/etc/readers/slstr_l1b.yaml @@ -17,10 +17,13 @@ reader: transitive: false calibration: enum: - - reflectance - - brightness_temperature - - radiance - - counts + # 8< v1.0 + - reflectance + # >8 v1.0 + - radiance_factor + - brightness_temperature + - radiance + - counts transitive: true view: enum: @@ -55,21 +58,36 @@ reader: - f file_types: - esa_l1b_refl: - file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTR1B - file_patterns: ['{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/{dataset_name}_radiance_{stripe:1s}{view:1s}.nc'] - esa_l1b_tir: - file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTR1B - file_patterns: ['{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/{dataset_name}_BT_{stripe:1s}{view:1s}.nc'] - esa_angles: - file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTRAngles - file_patterns: ['{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/geometry_t{view:1s}.nc'] - esa_geo: - file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTRGeo - file_patterns: ['{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/geodetic_{stripe:1s}{view:1s}.nc'] - esa_l1b_flag: - file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTRFlag - file_patterns: ['{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/flags_{stripe:1s}{view:1s}.nc'] + esa_l1b_refl: + file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTR1B + file_patterns: + [ + "{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/{dataset_name}_radiance_{stripe:1s}{view:1s}.nc", + ] + esa_l1b_tir: + file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTR1B + file_patterns: + [ + "{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/{dataset_name}_BT_{stripe:1s}{view:1s}.nc", + ] + esa_angles: + file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTRAngles + file_patterns: + [ + "{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/geometry_t{view:1s}.nc", + ] + esa_geo: + file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTRGeo + file_patterns: + [ + "{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/geodetic_{stripe:1s}{view:1s}.nc", + ] + esa_l1b_flag: + file_reader: !!python/name:satpy.readers.slstr_l1b.NCSLSTRFlag + file_patterns: + [ + "{mission_id:3s}_SL_{processing_level:1s}_{datatype_id:_<6s}_{start_time:%Y%m%dT%H%M%S}_{end_time:%Y%m%dT%H%M%S}_{creation_time:%Y%m%dT%H%M%S}_{duration:4d}_{cycle:3d}_{relative_orbit:3d}_{frame:4s}_{centre:3s}_{mode:1s}_{timeliness:2s}_{collection:3s}.SEN3/flags_{stripe:1s}{view:1s}.nc", + ] datasets: longitude: @@ -106,14 +124,19 @@ datasets: S1: name: S1 sensor: slstr - wavelength: [0.545,0.555,0.565] + wavelength: [0.545, 0.555, 0.565] resolution: 500 view: [nadir, oblique] stripe: [a, b] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -128,9 +151,14 @@ datasets: view: [nadir, oblique] stripe: [a, b] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -145,9 +173,14 @@ datasets: view: [nadir, oblique] stripe: [a, b] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -164,9 +197,14 @@ datasets: view: [nadir, oblique] stripe: [a, b] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -181,9 +219,14 @@ datasets: view: [nadir, oblique] stripe: [a, b] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -198,9 +241,14 @@ datasets: view: [nadir, oblique] stripe: [a, b] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -278,7 +326,6 @@ datasets: coordinates: [longitude, latitude] file_type: esa_l1b_tir - solar_zenith_angle: name: solar_zenith_angle sensor: slstr @@ -319,8 +366,8 @@ datasets: file_type: esa_angles file_key: sat_azimuth_t{view:1s} -# CloudFlags are all bitfields. They are available in nadir (default) and oblique view for -# each of the a,b,c,i stripes. + # CloudFlags are all bitfields. They are available in nadir (default) and oblique view for + # each of the a,b,c,i stripes. cloud: name: cloud sensor: slstr @@ -341,7 +388,6 @@ datasets: file_type: esa_l1b_flag file_key: confidence_{stripe:1s}{view:1s} - pointing: name: pointing sensor: slstr diff --git a/satpy/etc/readers/viirs_compact.yaml b/satpy/etc/readers/viirs_compact.yaml index 173491dabb..7655e6b4bb 100644 --- a/satpy/etc/readers/viirs_compact.yaml +++ b/satpy/etc/readers/viirs_compact.yaml @@ -41,12 +41,17 @@ datasets: M01: name: M01 sensor: viirs - wavelength: [0.402,0.412,0.422] + wavelength: [0.402, 0.412, 0.422] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -56,12 +61,17 @@ datasets: M02: name: M02 sensor: viirs - wavelength: [0.436,0.445,0.454] + wavelength: [0.436, 0.445, 0.454] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -71,12 +81,17 @@ datasets: M03: name: M03 sensor: viirs - wavelength: [0.478,0.488,0.498] + wavelength: [0.478, 0.488, 0.498] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -86,12 +101,17 @@ datasets: M04: name: M04 sensor: viirs - wavelength: [0.545,0.555,0.565] + wavelength: [0.545, 0.555, 0.565] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -101,12 +121,17 @@ datasets: M05: name: M05 sensor: viirs - wavelength: [0.662,0.672,0.682] + wavelength: [0.662, 0.672, 0.682] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -116,12 +141,17 @@ datasets: M06: name: M06 sensor: viirs - wavelength: [0.739,0.746,0.754] + wavelength: [0.739, 0.746, 0.754] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -131,12 +161,17 @@ datasets: M07: name: M07 sensor: viirs - wavelength: [0.846,0.865,0.885] + wavelength: [0.846, 0.865, 0.885] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -146,12 +181,17 @@ datasets: M08: name: M08 sensor: viirs - wavelength: [1.230,1.240,1.250] + wavelength: [1.230, 1.240, 1.250] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -162,11 +202,16 @@ datasets: name: M09 sensor: viirs resolution: 742 - wavelength: [1.371,1.378,1.386] + wavelength: [1.371, 1.378, 1.386] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -176,12 +221,17 @@ datasets: M10: name: M10 sensor: viirs - wavelength: [1.580,1.610,1.640] + wavelength: [1.580, 1.610, 1.640] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -192,11 +242,16 @@ datasets: name: M11 sensor: viirs resolution: 742 - wavelength: [2.225,2.250,2.275] + wavelength: [2.225, 2.250, 2.275] calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -206,7 +261,7 @@ datasets: M12: name: M12 sensor: viirs - wavelength: [3.610,3.700,3.790] + wavelength: [3.610, 3.700, 3.790] resolution: 742 calibration: brightness_temperature: @@ -221,7 +276,7 @@ datasets: M13: name: M13 sensor: viirs - wavelength: [3.973,4.050,4.128] + wavelength: [3.973, 4.050, 4.128] resolution: 742 calibration: brightness_temperature: @@ -237,7 +292,7 @@ datasets: name: M14 sensor: viirs resolution: 742 - wavelength: [8.400,8.550,8.700] + wavelength: [8.400, 8.550, 8.700] calibration: brightness_temperature: standard_name: toa_brightness_temperature @@ -252,7 +307,7 @@ datasets: name: M15 sensor: viirs resolution: 742 - wavelength: [10.263,10.763,11.263] + wavelength: [10.263, 10.763, 11.263] calibration: brightness_temperature: standard_name: toa_brightness_temperature @@ -266,7 +321,7 @@ datasets: M16: name: M16 sensor: viirs - wavelength: [11.538,12.013,12.489] + wavelength: [11.538, 12.013, 12.489] resolution: 742 calibration: brightness_temperature: @@ -281,7 +336,7 @@ datasets: DNB: name: DNB sensor: viirs - wavelength: [0.500,0.700,0.900] + wavelength: [0.500, 0.700, 0.900] resolution: 743 calibration: radiance: @@ -388,7 +443,13 @@ datasets: file_types: compact_m: file_reader: !!python/name:satpy.readers.viirs_compact.VIIRSCompactFileHandler - file_patterns: ['SVMC_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S%f}_e{end_time:%H%M%S%f}_b{orbit:5d}_c{creation_time:%Y%m%d%H%M%S%f}_eum_ops.h5'] + file_patterns: + [ + "SVMC_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S%f}_e{end_time:%H%M%S%f}_b{orbit:5d}_c{creation_time:%Y%m%d%H%M%S%f}_eum_ops.h5", + ] compact_dnb: file_reader: !!python/name:satpy.readers.viirs_compact.VIIRSCompactFileHandler - file_patterns: ['SVDNBC_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S%f}_e{end_time:%H%M%S%f}_b{orbit:5d}_c{creation_time:%Y%m%d%H%M%S%f}_eum_ops.h5'] + file_patterns: + [ + "SVDNBC_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S%f}_e{end_time:%H%M%S%f}_b{orbit:5d}_c{creation_time:%Y%m%d%H%M%S%f}_eum_ops.h5", + ] diff --git a/satpy/etc/readers/viirs_l1b.yaml b/satpy/etc/readers/viirs_l1b.yaml index 4bd0d9d1ed..68c719c6ff 100644 --- a/satpy/etc/readers/viirs_l1b.yaml +++ b/satpy/etc/readers/viirs_l1b.yaml @@ -11,70 +11,70 @@ reader: navigations: vgeoi: - description: VIIRS L1B I-band Navigation - file_type: vgeoi - latitude_key: geolocation_data/latitude - longitude_key: geolocation_data/longitude - nadir_resolution: [371] - rows_per_scan: 32 + description: VIIRS L1B I-band Navigation + file_type: vgeoi + latitude_key: geolocation_data/latitude + longitude_key: geolocation_data/longitude + nadir_resolution: [371] + rows_per_scan: 32 vgeom: - description: VIIRS L1B M-band Navigation - file_type: vgeom - latitude_key: geolocation_data/latitude - longitude_key: geolocation_data/longitude - nadir_resolution: [742] - rows_per_scan: 16 + description: VIIRS L1B M-band Navigation + file_type: vgeom + latitude_key: geolocation_data/latitude + longitude_key: geolocation_data/longitude + nadir_resolution: [742] + rows_per_scan: 16 vgeod: - description: VIIRS L1B DNB Navigation - file_type: vgeod - latitude_key: geolocation_data/latitude - longitude_key: geolocation_data/longitude - nadir_resolution: [742] - rows_per_scan: 16 + description: VIIRS L1B DNB Navigation + file_type: vgeod + latitude_key: geolocation_data/latitude + longitude_key: geolocation_data/longitude + nadir_resolution: [742] + rows_per_scan: 16 file_types: vgeoi: file_reader: !!python/name:satpy.readers.viirs_l1b.VIIRSL1BFileHandler file_patterns: - - 'VGEOI_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc' - - 'V{platform_shortname:2s}03IMG.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc' - - 'V{platform_shortname:2s}03IMG_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc' - - 'V{platform_shortname:2s}03IMG_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc' + - "VGEOI_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc" + - "V{platform_shortname:2s}03IMG.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc" + - "V{platform_shortname:2s}03IMG_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc" + - "V{platform_shortname:2s}03IMG_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc" vgeom: file_reader: !!python/name:satpy.readers.viirs_l1b.VIIRSL1BFileHandler file_patterns: - - 'VGEOM_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc' - - 'V{platform_shortname:2s}03MOD.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc' - - 'V{platform_shortname:2s}03MOD_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc' - - 'V{platform_shortname:2s}03MOD_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc' + - "VGEOM_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc" + - "V{platform_shortname:2s}03MOD.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc" + - "V{platform_shortname:2s}03MOD_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc" + - "V{platform_shortname:2s}03MOD_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc" vgeod: file_reader: !!python/name:satpy.readers.viirs_l1b.VIIRSL1BFileHandler file_patterns: - - 'VGEOD_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc' - - 'V{platform_shortname:2s}03DNB.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc' - - 'V{platform_shortname:2s}03DNB_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc' - - 'V{platform_shortname:2s}03DNB_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc' + - "VGEOD_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc" + - "V{platform_shortname:2s}03DNB.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc" + - "V{platform_shortname:2s}03DNB_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc" + - "V{platform_shortname:2s}03DNB_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc" vl1bi: file_reader: !!python/name:satpy.readers.viirs_l1b.VIIRSL1BFileHandler file_patterns: - - 'VL1BI_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc' - - 'V{platform_shortname:2s}02IMG.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc' - - 'V{platform_shortname:2s}02IMG_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc' - - 'V{platform_shortname:2s}02IMG_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc' + - "VL1BI_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc" + - "V{platform_shortname:2s}02IMG.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc" + - "V{platform_shortname:2s}02IMG_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc" + - "V{platform_shortname:2s}02IMG_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc" vl1bm: file_reader: !!python/name:satpy.readers.viirs_l1b.VIIRSL1BFileHandler file_patterns: - - 'VL1BM_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc' - - 'V{platform_shortname:2s}02MOD.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc' - - 'V{platform_shortname:2s}02MOD_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc' - - 'V{platform_shortname:2s}02MOD_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc' + - "VL1BM_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc" + - "V{platform_shortname:2s}02MOD.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc" + - "V{platform_shortname:2s}02MOD_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc" + - "V{platform_shortname:2s}02MOD_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc" vl1bd: file_reader: !!python/name:satpy.readers.viirs_l1b.VIIRSL1BFileHandler file_patterns: - - 'VL1BD_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc' - - 'V{platform_shortname:2s}02DNB.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc' - - 'V{platform_shortname:2s}02DNB_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc' - - 'V{platform_shortname:2s}02DNB_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc' + - "VL1BD_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S}_c{creation_time:%Y%m%d%H%M%S}.nc" + - "V{platform_shortname:2s}02DNB.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}{creator}.nc" + - "V{platform_shortname:2s}02DNB_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.nc" + - "V{platform_shortname:2s}02DNB_NRT.A{start_time:%Y%j.%H%M}.{collection_number:3d}.{creation_time:%Y%j%H%M%S}.nc" datasets: i_lon: @@ -124,9 +124,14 @@ datasets: wavelength: [0.600, 0.640, 0.680] resolution: 371 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -137,9 +142,14 @@ datasets: wavelength: [0.845, 0.865, 0.884] resolution: 371 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -150,9 +160,14 @@ datasets: wavelength: [1.580, 1.610, 1.640] resolution: 371 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -221,9 +236,14 @@ datasets: wavelength: [0.402, 0.412, 0.422] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -234,9 +254,14 @@ datasets: wavelength: [0.436, 0.445, 0.454] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -247,9 +272,14 @@ datasets: wavelength: [0.478, 0.488, 0.498] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -260,9 +290,14 @@ datasets: wavelength: [0.545, 0.555, 0.565] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -273,9 +308,14 @@ datasets: wavelength: [0.662, 0.672, 0.682] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -286,9 +326,14 @@ datasets: wavelength: [0.739, 0.746, 0.754] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -299,9 +344,14 @@ datasets: wavelength: [0.846, 0.865, 0.885] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -312,9 +362,14 @@ datasets: wavelength: [1.230, 1.240, 1.250] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -325,9 +380,14 @@ datasets: wavelength: [1.371, 1.378, 1.386] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -338,9 +398,14 @@ datasets: wavelength: [1.580, 1.610, 1.640] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 @@ -351,9 +416,14 @@ datasets: wavelength: [2.225, 2.250, 2.275] resolution: 742 calibration: + # 8< v1.0 reflectance: standard_name: toa_bidirectional_reflectance units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength units: W m-2 um-1 sr-1 diff --git a/satpy/etc/readers/viirs_sdr.yaml b/satpy/etc/readers/viirs_sdr.yaml index 70f2c5f34a..a6378214fc 100644 --- a/satpy/etc/readers/viirs_sdr.yaml +++ b/satpy/etc/readers/viirs_sdr.yaml @@ -9,7 +9,7 @@ reader: sensors: [viirs] # file pattern keys to sort files by with 'satpy.utils.group_files' # by default, don't use start_time group files (only orbit and platform) - group_keys: ['orbit', 'platform_shortname'] + group_keys: ["orbit", "platform_shortname"] datasets: i_lon: @@ -69,7 +69,9 @@ datasets: I01: name: I01 wavelength: [0.600, 0.640, 0.680] + # 8< v1.0 modifiers: [sunz_corrected_iband] + # >8 v1.0 dataset_groups: [SVI01] file_type: generic_file resolution: 371 @@ -79,13 +81,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 I02: name: I02 wavelength: [0.845, 0.865, 0.884] + # 8< v1.0 modifiers: [sunz_corrected_iband] + # >8 v1.0 dataset_groups: [SVI02] file_type: generic_file resolution: 371 @@ -95,13 +100,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 I03: name: I03 wavelength: [1.580, 1.610, 1.640] + # 8< v1.0 modifiers: [sunz_corrected_iband] + # >8 v1.0 dataset_groups: [SVI03] file_type: generic_file resolution: 371 @@ -111,6 +119,7 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 @@ -145,7 +154,9 @@ datasets: M01: name: M01 wavelength: [0.402, 0.412, 0.422] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM01] file_type: generic_file resolution: 742 @@ -155,13 +166,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M02: name: M02 wavelength: [0.436, 0.445, 0.454] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM02] file_type: generic_file resolution: 742 @@ -171,13 +185,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M03: name: M03 wavelength: [0.478, 0.488, 0.498] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM03] file_type: generic_file resolution: 742 @@ -187,13 +204,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M04: name: M04 wavelength: [0.545, 0.555, 0.565] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM04] file_type: generic_file resolution: 742 @@ -203,13 +223,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M05: name: M05 wavelength: [0.662, 0.672, 0.682] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM05] file_type: generic_file resolution: 742 @@ -219,13 +242,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M06: name: M06 wavelength: [0.739, 0.746, 0.754] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM06] file_type: generic_file resolution: 742 @@ -235,13 +261,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M07: name: M07 wavelength: [0.846, 0.865, 0.885] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM07] file_type: generic_file resolution: 742 @@ -251,13 +280,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M08: name: M08 wavelength: [1.230, 1.240, 1.250] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM08] file_type: generic_file resolution: 742 @@ -267,13 +299,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M09: name: M09 wavelength: [1.371, 1.378, 1.386] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM09] file_type: generic_file resolution: 742 @@ -283,13 +318,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M10: name: M10 wavelength: [1.580, 1.610, 1.640] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM10] file_type: generic_file resolution: 742 @@ -299,13 +337,16 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 M11: name: M11 wavelength: [2.225, 2.250, 2.275] + # 8< v1.0 modifiers: [sunz_corrected] + # >8 v1.0 dataset_groups: [SVM11] file_type: generic_file resolution: 742 @@ -315,6 +356,7 @@ datasets: standard_name: toa_bidirectional_reflectance file_units: "1" units: "%" + sunz_corrected: true radiance: standard_name: toa_outgoing_radiance_per_unit_wavelength file_units: W m-2 um-1 sr-1 @@ -397,7 +439,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GITCO, GIMGO] - file_key: 'All_Data/{dataset_group}_All/SolarZenithAngle' + file_key: "All_Data/{dataset_group}_All/SolarZenithAngle" I_SOLA: name: solar_azimuth_angle standard_name: solar_azimuth_angle @@ -406,7 +448,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GITCO, GIMGO] - file_key: 'All_Data/{dataset_group}_All/SolarAzimuthAngle' + file_key: "All_Data/{dataset_group}_All/SolarAzimuthAngle" I_SENZ: name: satellite_zenith_angle standard_name: sensor_zenith_angle @@ -415,7 +457,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GITCO, GIMGO] - file_key: 'All_Data/{dataset_group}_All/SatelliteZenithAngle' + file_key: "All_Data/{dataset_group}_All/SatelliteZenithAngle" I_SENA: name: satellite_azimuth_angle standard_name: sensor_azimuth_angle @@ -424,7 +466,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GITCO, GIMGO] - file_key: 'All_Data/{dataset_group}_All/SatelliteAzimuthAngle' + file_key: "All_Data/{dataset_group}_All/SatelliteAzimuthAngle" M_SOLZ: name: solar_zenith_angle standard_name: solar_zenith_angle @@ -433,7 +475,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GMTCO, GMODO] - file_key: 'All_Data/{dataset_group}_All/SolarZenithAngle' + file_key: "All_Data/{dataset_group}_All/SolarZenithAngle" M_SOLA: name: solar_azimuth_angle standard_name: solar_azimuth_angle @@ -442,7 +484,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GMTCO, GMODO] - file_key: 'All_Data/{dataset_group}_All/SolarAzimuthAngle' + file_key: "All_Data/{dataset_group}_All/SolarAzimuthAngle" M_SENZ: name: satellite_zenith_angle standard_name: sensor_zenith_angle @@ -451,7 +493,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GMTCO, GMODO] - file_key: 'All_Data/{dataset_group}_All/SatelliteZenithAngle' + file_key: "All_Data/{dataset_group}_All/SatelliteZenithAngle" M_SENA: name: satellite_azimuth_angle standard_name: sensor_azimuth_angle @@ -460,7 +502,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GMTCO, GMODO] - file_key: 'All_Data/{dataset_group}_All/SatelliteAzimuthAngle' + file_key: "All_Data/{dataset_group}_All/SatelliteAzimuthAngle" DNB: name: DNB wavelength: [0.500, 0.700, 0.900] @@ -481,7 +523,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GDNBO] - file_key: 'All_Data/{dataset_group}_All/SolarZenithAngle' + file_key: "All_Data/{dataset_group}_All/SolarZenithAngle" DNB_LZA: name: dnb_lunar_zenith_angle standard_name: lunar_zenith_angle @@ -490,7 +532,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GDNBO] - file_key: 'All_Data/{dataset_group}_All/LunarZenithAngle' + file_key: "All_Data/{dataset_group}_All/LunarZenithAngle" DNB_SENZ: name: dnb_satellite_zenith_angle standard_name: sensor_zenith_angle @@ -499,7 +541,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GDNBO] - file_key: 'All_Data/{dataset_group}_All/SatelliteZenithAngle' + file_key: "All_Data/{dataset_group}_All/SatelliteZenithAngle" DNB_SAA: name: dnb_solar_azimuth_angle standard_name: solar_azimuth_angle @@ -508,7 +550,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GDNBO] - file_key: 'All_Data/{dataset_group}_All/SolarAzimuthAngle' + file_key: "All_Data/{dataset_group}_All/SolarAzimuthAngle" DNB_LAA: name: dnb_lunar_azimuth_angle standard_name: lunar_azimuth_angle @@ -517,7 +559,7 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GDNBO] - file_key: 'All_Data/{dataset_group}_All/LunarAzimuthAngle' + file_key: "All_Data/{dataset_group}_All/LunarAzimuthAngle" DNB_SENA: name: dnb_satellite_azimuth_angle standard_name: sensor_azimuth_angle @@ -526,18 +568,21 @@ datasets: file_units: degrees file_type: generic_file dataset_groups: [GDNBO] - file_key: 'All_Data/{dataset_group}_All/SatelliteAzimuthAngle' + file_key: "All_Data/{dataset_group}_All/SatelliteAzimuthAngle" dnb_moon_illumination_fraction: name: dnb_moon_illumination_fraction file_type: generic_file dataset_groups: [GDNBO] - file_key: 'All_Data/{dataset_group}_All/MoonIllumFraction' - file_units: '1' + file_key: "All_Data/{dataset_group}_All/MoonIllumFraction" + file_units: "1" file_types: generic_file: file_reader: !!python/name:satpy.readers.viirs_sdr.VIIRSSDRFileHandler - file_patterns: ['{datasets}_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S%f}_e{end_time:%H%M%S%f}_b{orbit:5d}_c{creation_time:%Y%m%d%H%M%S%f}_{source}.h5'] + file_patterns: + [ + "{datasets}_{platform_shortname}_d{start_time:%Y%m%d_t%H%M%S%f}_e{end_time:%H%M%S%f}_b{orbit:5d}_c{creation_time:%Y%m%d%H%M%S%f}_{source}.h5", + ] # Example filenames # GMODO-SVM01-SVM02-SVM03-SVM04-SVM05-SVM06-SVM07-SVM08-SVM09-SVM10-SVM11-SVM12-SVM13-SVM14-SVM15-SVM16_j01_d20190304_t1103049_e1108449_b06684_c20190304213641984108_nobc_ops.h5 # GMTCO_j01_d20190304_t1103049_e1108449_b06684_c20190304150845549693_nobc_ops.h5 diff --git a/satpy/etc/readers/viirs_vgac_l1c_nc.yaml b/satpy/etc/readers/viirs_vgac_l1c_nc.yaml index 08c7770a8d..d3028eaf17 100644 --- a/satpy/etc/readers/viirs_vgac_l1c_nc.yaml +++ b/satpy/etc/readers/viirs_vgac_l1c_nc.yaml @@ -2,27 +2,28 @@ reader: name: viirs_vgac_l1c_nc short_name: VGAC from VIIRS MOD and IMG channels long_name: VIIRS Global Area Coverage from VIIRS Reflected Solar Band and Thermal Emission Band data for both Moserate resolution and Imager resolution channels. - description: https://ams.confex.com/ams/JOINTSATMET/mediafile/Handout/Paper360556/VGAC%20version%201%20-%20poster.pdf + description: + https://ams.confex.com/ams/JOINTSATMET/mediafile/Handout/Paper360556/VGAC%20version%201%20-%20poster.pdf NetCDF4 reader for VGAC from VIIRS. sensors: [viirs] reader: !!python/name:satpy.readers.core.yaml_reader.FileYAMLReader file_types: - vgac_nc: - file_reader: !!python/name:satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler - file_patterns: ['VGAC_{satid}_A{start_time:%Y%j_%H%M}_{norbit}_K005.nc'] + vgac_nc: + file_reader: !!python/name:satpy.readers.viirs_vgac_l1c_nc.VGACFileHandler + file_patterns: ["VGAC_{satid}_A{start_time:%Y%j_%H%M}_{norbit}_K005.nc"] datasets: - M01: name: M01 resolution: 5000 - wavelength: [0.392, 0.412, 0.422] + wavelength: [0.392, 0.412, 0.422] calibration: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M01 @@ -34,6 +35,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M02 @@ -45,6 +47,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M03 @@ -56,10 +59,10 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M04 - M05: name: M05 resolution: 5000 @@ -68,6 +71,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M05 @@ -79,6 +83,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M06 @@ -90,6 +95,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M07 @@ -101,6 +107,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M07 @@ -112,6 +119,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M09 @@ -123,6 +131,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M10 @@ -134,6 +143,7 @@ datasets: reflectance: standard_name: toa_bidirectional_reflectance units: "%" + sunz_corrected: true file_type: vgac_nc nc_key: M11 @@ -210,7 +220,7 @@ datasets: name: vza standard_name: sensor_zenith_angle resolution: 5000 - file_type: vgac_nc + file_type: vgac_nc coordinates: [longitude, latitude] units: degrees nc_key: vza @@ -219,7 +229,7 @@ datasets: name: azn standard_name: solar_azimuth_angle resolution: 5000 - file_type: vgac_nc + file_type: vgac_nc coordinates: [longitude, latitude] units: degrees nc_key: azn @@ -228,29 +238,29 @@ datasets: name: azi standard_name: sensor_azimuth_angle resolution: 5000 - file_type: vgac_nc + file_type: vgac_nc coordinates: [longitude, latitude] units: degrees nc_key: azi latitude: - name: latitude - file_type: vgac_nc - standard_name: latitude - units: degrees_north - nc_key: lat + name: latitude + file_type: vgac_nc + standard_name: latitude + units: degrees_north + nc_key: lat longitude: - name: longitude - file_type: vgac_nc - standard_name: longitude - units: degrees_east - nc_key: lon + name: longitude + file_type: vgac_nc + standard_name: longitude + units: degrees_east + nc_key: lon scanline_timestamps: name: scanline_timestamps resolution: 5000 - file_type: vgac_nc + file_type: vgac_nc nc_key: time proj_time0: diff --git a/satpy/etc/readers/virr_l1b.yaml b/satpy/etc/readers/virr_l1b.yaml index 245f5393c5..c4c219cc38 100644 --- a/satpy/etc/readers/virr_l1b.yaml +++ b/satpy/etc/readers/virr_l1b.yaml @@ -9,42 +9,56 @@ reader: reader: !!python/name:satpy.readers.core.yaml_reader.FileYAMLReader file_types: - virr_l1b: - file_reader: !!python/name:satpy.readers.virr_l1b.VIRR_L1B - file_patterns: - - 'tf{creation_time:%Y%j%H%M%S}.{platform_id}-L_VIRRX_L1B.HDF' - geolocation_prefix: '' - virr_geoxx: - file_reader: !!python/name:satpy.readers.virr_l1b.VIRR_L1B - file_patterns: - - 'tf{creation_time:%Y%j%H%M%S}.{platform_id}-L_VIRRX_GEOXX.HDF' - geolocation_prefix: 'Geolocation/' + virr_l1b: + file_reader: !!python/name:satpy.readers.virr_l1b.VIRR_L1B + file_patterns: + - "tf{creation_time:%Y%j%H%M%S}.{platform_id}-L_VIRRX_L1B.HDF" + geolocation_prefix: "" + virr_geoxx: + file_reader: !!python/name:satpy.readers.virr_l1b.VIRR_L1B + file_patterns: + - "tf{creation_time:%Y%j%H%M%S}.{platform_id}-L_VIRRX_GEOXX.HDF" + geolocation_prefix: "Geolocation/" datasets: R1: - name: '1' + name: "1" wavelength: [0.58, 0.63, 0.68] resolution: 1000 file_type: virr_l1b file_key: Data/EV_RefSB band_index: 0 - standard_name: toa_bidirectional_reflectance coordinates: [longitude, latitude] - calibration: reflectance + calibration: + # 8< v1.0 + reflectance: + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" R2: - name: '2' + name: "2" wavelength: [0.84, 0.865, 0.89] resolution: 1000 file_type: virr_l1b file_key: Data/EV_RefSB band_index: 1 - standard_name: toa_bidirectional_reflectance coordinates: [longitude, latitude] - calibration: reflectance + calibration: + # 8< v1.0 + reflectance: + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" E1: - name: '3' + name: "3" wavelength: [3.55, 3.74, 3.93] resolution: 1000 file_type: virr_l1b @@ -55,7 +69,7 @@ datasets: calibration: brightness_temperature E2: - name: '4' + name: "4" wavelength: [10.3, 10.8, 11.3] resolution: 1000 file_type: virr_l1b @@ -66,7 +80,7 @@ datasets: calibration: brightness_temperature E3: - name: '5' + name: "5" wavelength: [11.5, 12.0, 12.5] resolution: 1000 file_type: virr_l1b @@ -77,59 +91,94 @@ datasets: calibration: brightness_temperature R3: - name: '6' + name: "6" wavelength: [1.55, 1.6, 1.64] resolution: 1000 file_type: virr_l1b file_key: Data/EV_RefSB band_index: 2 - standard_name: toa_bidirectional_reflectance coordinates: [longitude, latitude] - calibration: reflectance + calibration: + # 8< v1.0 + reflectance: + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" R4: - name: '7' + name: "7" wavelength: [0.43, 0.455, 0.48] resolution: 1000 file_type: virr_l1b file_key: Data/EV_RefSB band_index: 3 - standard_name: toa_bidirectional_reflectance coordinates: [longitude, latitude] - calibration: reflectance + calibration: + # 8< v1.0 + reflectance: + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" R5: - name: '8' + name: "8" wavelength: [0.48, 0.505, 0.53] resolution: 1000 file_type: virr_l1b file_key: Data/EV_RefSB band_index: 4 - standard_name: toa_bidirectional_reflectance coordinates: [longitude, latitude] - calibration: reflectance + calibration: + # 8< v1.0 + reflectance: + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" R6: - name: '9' + name: "9" wavelength: [0.53, 0.555, 0.58] resolution: 1000 file_type: virr_l1b file_key: Data/EV_RefSB band_index: 5 - standard_name: toa_bidirectional_reflectance coordinates: [longitude, latitude] - calibration: reflectance + calibration: + # 8< v1.0 + reflectance: + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" R7: - name: '10' + name: "10" wavelength: [1.325, 1.36, 1.395] resolution: 1000 file_type: virr_l1b file_key: Data/EV_RefSB band_index: 6 - standard_name: toa_bidirectional_reflectance coordinates: [longitude, latitude] - calibration: reflectance + calibration: + # 8< v1.0 + reflectance: + standard_name: toa_bidirectional_reflectance + units: "%" + # >8 v1.0 + radiance_factor: + standard_name: product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance + units: "%" satellite_azimuth_angle: name: satellite_azimuth_angle diff --git a/satpy/readers/aapp_l1b.py b/satpy/readers/aapp_l1b.py index cf47155271..bace3c180c 100644 --- a/satpy/readers/aapp_l1b.py +++ b/satpy/readers/aapp_l1b.py @@ -313,10 +313,14 @@ def calibrate(self, if calib_coeffs is None: calib_coeffs = {} - units = {"reflectance": "%", - "brightness_temperature": "K", - "counts": "", - "radiance": "W*m-2*sr-1*cm ?"} + units = { + # 8< v1.0 + "reflectance": "%", + # >8 v1.0 + "radiance_factor": "%", + "brightness_temperature": "K", + "counts": "", + "radiance": "W*m-2*sr-1*cm ?"} if dataset_id["name"] in ("3a", "3b") and self._is3b is None: # Is it 3a or 3b: @@ -544,12 +548,25 @@ def _vis_calibrate(data, mask=True): """Calibrate visible channel data. - *calib_type* in count, reflectance, radiance. + *calib_type* in count, radiance_factor, radiance. """ + # 8< v1.0 + import warnings + if calib_type == "reflectance": + warnings.warn("Reflectance is not a correct calibration for AVHRR AAPP L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 # Calibration count to albedo, the calibration is performed separately for # two value ranges. - if calib_type not in ["counts", "radiance", "reflectance"]: + if calib_type not in [ + "counts", + "radiance", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: raise ValueError("Calibration " + calib_type + " unknown!") channel_data = data["hrpt"][:, :, chn] @@ -597,9 +614,9 @@ def _vis_calibrate(data, # In the level 1b file, the visible coefficients are stored as 4-byte integers. Scaling factors then convert # them to real numbers which are applied to the measured counts. The coefficient is different depending on # whether the counts are less than or greater than the high-gain/low-gain transition value (nominally 500). - # The slope for visible channels should always be positive (reflectance increases with count). With the + # The slope for visible channels should always be positive (radiance_factor increases with count). With the # pre-launch coefficients the channel 2, 3a slope is always positive but with the operational coefs the stored - # number in the high-reflectance regime overflows the maximum 2147483647, i.e. it is negative when + # number in the high-radiance_factor regime overflows the maximum 2147483647, i.e. it is negative when # interpreted as a signed integer. So you have to modify it. Also chanel 1 is treated the same way in AAPP. slope2 = da.where(slope2 < 0, slope2 + 0.4294967296, slope2) diff --git a/satpy/readers/abi_l1b.py b/satpy/readers/abi_l1b.py index 48e82f6968..34bd843c63 100644 --- a/satpy/readers/abi_l1b.py +++ b/satpy/readers/abi_l1b.py @@ -45,6 +45,13 @@ def __init__(self, filename, filename_info, filetype_info, clip_negative_radianc def get_dataset(self, key, info): """Load a dataset.""" logger.debug("Reading in get_dataset %s.", key["name"]) + # 8< v1.0 + import warnings + if key["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for ABI L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 # For raw cal, don't apply scale and offset, return raw file counts if key["calibration"] == "counts": @@ -55,7 +62,10 @@ def get_dataset(self, key, info): # mapping of calibration types to calibration functions cal_dictionary = { + "radiance_factor": self._vis_calibrate, + # 8< v1.0 "reflectance": self._vis_calibrate, + # >8 v1.0 "brightness_temperature": self._ir_calibrate, "radiance": self._rad_calibrate, "counts": self._raw_calibrate, @@ -131,7 +141,7 @@ def _raw_calibrate(self, data): return res def _vis_calibrate(self, data): - """Calibrate visible channels to reflectance.""" + """Calibrate visible channels to radiance_factor.""" solar_irradiance = self["esun"] esd = self["earth_sun_distance_anomaly_in_AU"] @@ -140,8 +150,8 @@ def _vis_calibrate(self, data): res = data * np.float32(factor) res.attrs = data.attrs res.attrs["units"] = "1" - res.attrs["long_name"] = "Bidirectional Reflectance" - res.attrs["standard_name"] = "toa_bidirectional_reflectance" + res.attrs["long_name"] = "Product of cosine of solar zenith angle and TOA bidirectional reflectance" + res.attrs["standard_name"] = "product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance" return res def _get_minimum_radiance(self, data): diff --git a/satpy/readers/abi_l2_nc.py b/satpy/readers/abi_l2_nc.py index 572d39de3e..bd7f8f3749 100644 --- a/satpy/readers/abi_l2_nc.py +++ b/satpy/readers/abi_l2_nc.py @@ -64,7 +64,7 @@ def get_dataset(self, key, info): variable = self._filter_dqf(variable) # convert to satpy standard units - if variable.attrs["units"] == "1" and key.get("calibration") == "reflectance": + if variable.attrs["units"] == "1" and key.get("calibration") == "radiance_factor": variable *= 100.0 variable.attrs["units"] = "%" diff --git a/satpy/readers/agri_l1.py b/satpy/readers/agri_l1.py index 3fdd7d21e0..b9d8eb215b 100644 --- a/satpy/readers/agri_l1.py +++ b/satpy/readers/agri_l1.py @@ -24,6 +24,7 @@ """ import logging +import warnings from satpy.readers.core.fy4 import FY4Base @@ -42,6 +43,13 @@ def get_dataset(self, dataset_id, ds_info): """Load a dataset.""" ds_name = dataset_id["name"] logger.debug("Reading in get_dataset %s.", ds_name) + # 8< v1.0 + if "calibration" in dataset_id and dataset_id["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for AGRI L1 data, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 + file_key = ds_info.get("file_key", ds_name) if self.PLATFORM_ID == "FY-4B": if self.CHANS_ID in file_key: diff --git a/satpy/readers/ahi_hsd.py b/satpy/readers/ahi_hsd.py index ffaa80b17d..ee7a7da718 100644 --- a/satpy/readers/ahi_hsd.py +++ b/satpy/readers/ahi_hsd.py @@ -670,12 +670,31 @@ def _get_metadata(self, key, ds_info): def calibrate(self, data, calibration): """Calibrate the data.""" + # 8< v1.0 + import warnings + if calibration == "reflectance": + warnings.warn("Reflectance is not a correct calibration for AHI HSD, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 + if calibration == "counts": return data - if calibration in ["radiance", "reflectance", "brightness_temperature"]: + if calibration in [ + "radiance", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "brightness_temperature"]: data = self.convert_to_radiance(data) - if calibration == "reflectance": + if calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor" + ]: data = self._vis_calibrate(data) elif calibration == "brightness_temperature": data = self._ir_calibrate(data) diff --git a/satpy/readers/ami_l1b.py b/satpy/readers/ami_l1b.py index a67ef79261..761e514036 100644 --- a/satpy/readers/ami_l1b.py +++ b/satpy/readers/ami_l1b.py @@ -186,6 +186,9 @@ def get_orbital_parameters(self): def get_dataset(self, dataset_id, ds_info): """Load a dataset as a xarray DataArray.""" + # 8< v1.0 + _warn_if_reflectance(dataset_id) + # >8 v1.0 file_key = ds_info.get("file_key", dataset_id["name"]) data = self.nc[file_key] # hold on to attributes for later @@ -210,14 +213,24 @@ def get_dataset(self, dataset_id, ds_info): gain = self.nc.attrs["DN_to_Radiance_Gain"] offset = self.nc.attrs["DN_to_Radiance_Offset"] - if dataset_id["calibration"] in ("radiance", "reflectance", "brightness_temperature"): + if dataset_id["calibration"] in ( + "radiance", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "brightness_temperature"): data = gain * data + offset data = self._clip_negative_radiance(data, gain, offset) if self.calib_mode == "GSICS": data = self._apply_gsics_rad_correction(data) elif isinstance(self.user_calibration, dict): data = self._apply_user_rad_correction(data) - if dataset_id["calibration"] == "reflectance": + if dataset_id["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: # depends on the radiance calibration above rad_to_alb = self.nc.attrs["Radiance_to_Albedo_c"] if ds_info.get("units") == "%": @@ -298,3 +311,12 @@ def _apply_user_rad_correction(self, data): self.user_calibration) data = apply_rad_correction(data, rad_slope, rad_offset) return data + +# 8< v1.0 +def _warn_if_reflectance(dataset_id): + import warnings + if dataset_id["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for AMI L1, " + "please use 'radiance_factor'", + DeprecationWarning) +# >8 v1.0 diff --git a/satpy/readers/avhrr_l1b_gaclac.py b/satpy/readers/avhrr_l1b_gaclac.py index bf50032559..1d2f609082 100644 --- a/satpy/readers/avhrr_l1b_gaclac.py +++ b/satpy/readers/avhrr_l1b_gaclac.py @@ -149,6 +149,13 @@ def read_raw_data(self): def get_dataset(self, key, info): """Get the dataset.""" + # 8< v1.0 + import warnings + if "calibration" in key and key["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for SCMI ABI L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 self.read_raw_data() if key["name"] in ["latitude", "longitude"]: # Lats/lons are buffered by the reader @@ -274,7 +281,12 @@ def _get_channel(self, key): counts = self.reader.get_counts() self.counts = counts channels = self.counts - elif calibration in ["reflectance", "brightness_temperature"]: + elif calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "brightness_temperature"]: if self.calib_channels is None: self.calib_channels = self.reader.get_calibrated_channels() channels = self.calib_channels diff --git a/satpy/readers/core/fy4.py b/satpy/readers/core/fy4.py index 031a2ad00e..f723a6d807 100644 --- a/satpy/readers/core/fy4.py +++ b/satpy/readers/core/fy4.py @@ -119,8 +119,8 @@ def _getitem(block, lut): return lut[block] @cached_property - def reflectance_coeffs(self): - """Retrieve the reflectance calibration coefficients from the HDF file.""" + def radiance_factor_coeffs(self): + """Retrieve the radiance_factor calibration coefficients from the HDF file.""" # using the corresponding SCALE and OFFSET if self.PLATFORM_ID == "FY-4A": cal_coef = "CALIBRATION_COEF(SCALE+OFFSET)" @@ -132,6 +132,13 @@ def reflectance_coeffs(self): def calibrate(self, data, ds_info, ds_name, file_key): """Calibrate the data.""" + # 8< v1.0 + import warnings + if ds_info.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for FY4, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 # Check if calibration is present, if not assume dataset is an angle calibration = ds_info.get("calibration") # Return raw data in case of counts or no calibration @@ -139,9 +146,13 @@ def calibrate(self, data, ds_info, ds_name, file_key): data.attrs["units"] = ds_info["units"] ds_info["valid_range"] = data.attrs["valid_range"] ds_info["fill_value"] = data.attrs["FillValue"].item() - elif calibration == "reflectance": + elif calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: channel_index = int(file_key[-2:]) - 1 - data = self.calibrate_to_reflectance(data, channel_index, ds_info) + data = self.calibrate_to_radiance_factor(data, channel_index, ds_info) elif calibration == "brightness_temperature": data = self.calibrate_to_bt(data, ds_info, ds_name) elif calibration == "radiance": @@ -154,14 +165,14 @@ def calibrate(self, data, ds_info, ds_name, file_key): data.attrs["_FillValue"] = data.attrs["FillValue"].item() return data - def calibrate_to_reflectance(self, data, channel_index, ds_info): - """Calibrate to reflectance [%].""" - logger.debug("Calibrating to reflectances") + def calibrate_to_radiance_factor(self, data, channel_index, ds_info): + """Calibrate to radiance_factor [%].""" + logger.debug("Calibrating to radiance_factor") # using the corresponding SCALE and OFFSET if self.sensor != "AGRI" and self.sensor != "GHI": raise ValueError(f"Unsupported sensor type: {self.sensor}") - coeffs = self.reflectance_coeffs + coeffs = self.radiance_factor_coeffs num_channel = coeffs.shape[0] if self.sensor == "AGRI" and num_channel == 1: diff --git a/satpy/readers/core/seviri.py b/satpy/readers/core/seviri.py index 79af4d1052..49acdef972 100644 --- a/satpy/readers/core/seviri.py +++ b/satpy/readers/core/seviri.py @@ -166,14 +166,13 @@ - `Radiometric Calibration of MSG SEVIRI Level 1.5 Image Data in Equivalent Spectral Blackbody Radiance`_ .. _Conversion from radiances to reflectances for SEVIRI warm channels: - https://www-cdn.eumetsat.int/files/2020-04/pdf_msg_seviri_rad2refl.pdf + https://user.eumetsat.int/s3/eup-strapi-media/pdf_msg_seviri_rad2refl_d6cd0c663f.pdf .. _MSG Level 1.5 Image Data Format Description: https://www.eumetsat.int/media/45126 .. _Radiometric Calibration of MSG SEVIRI Level 1.5 Image Data in Equivalent Spectral Blackbody Radiance: - https://www-cdn.eumetsat.int/files/2020-04/pdf_ten_msg_seviri_rad_calib.pdf - + https://user.eumetsat.int/s3/eup-strapi-media/pdf_ten_msg_seviri_rad_calib_b4e474a6de.pdf .. _Inter-calibration of polar imager solar channels using SEVIRI: http://dx.doi.org/10.5194/amt-6-2495-2013 @@ -608,7 +607,8 @@ def vis_calibrate(self, data, solar_irradiance): """Calibrate to reflectance. This uses the method described in Conversion from radiances to - reflectances for SEVIRI warm channels: https://www-cdn.eumetsat.int/files/2020-04/pdf_msg_seviri_rad2refl.pdf + reflectances for SEVIRI warm channels: + https://user.eumetsat.int/s3/eup-strapi-media/pdf_msg_seviri_rad2refl_d6cd0c663f.pdf """ reflectance = np.pi * data * 100.0 / solar_irradiance return utils.apply_earthsun_distance_correction(reflectance, self._scan_time) @@ -647,7 +647,10 @@ def calibrate(self, data, calibration): """Calibrate the given data.""" if calibration == "counts": res = data - elif calibration in ["radiance", "reflectance", + elif calibration in ["radiance", "radiance_factor", + # 8< v1.0 + "reflectance", + # >8 v1.0 "brightness_temperature"]: coefs = self.get_coefs() res = self._algo.convert_to_radiance( @@ -662,7 +665,11 @@ def calibrate(self, data, calibration): ) ) - if calibration == "reflectance": + if calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: solar_irradiance = CALIB[self._scan_params.platform_id][self._scan_params.channel_name]["F"] res = self._algo.vis_calibrate(res, solar_irradiance) elif calibration == "brightness_temperature": diff --git a/satpy/readers/epic_l1b_h5.py b/satpy/readers/epic_l1b_h5.py index 59f67bde30..fbc0827748 100644 --- a/satpy/readers/epic_l1b_h5.py +++ b/satpy/readers/epic_l1b_h5.py @@ -34,7 +34,7 @@ ``scn.load(['solar_zenith_angle'])`` Note that ancillary dataset names use common standards and not the dataset names in the file. -By default, channel data is loaded as calibrated reflectances, but counts data is also available. +By default, channel data is loaded as calibrated radiance_factor, but counts data is also available. """ @@ -48,7 +48,7 @@ logger = logging.getLogger(__name__) -# Level 1b is given as counts. These factors convert to reflectance. +# Level 1b is given as counts. These factors convert to radiance_factor. # Retrieved from: https://asdc.larc.nasa.gov/documents/dscovr/DSCOVR_EPIC_Calibration_Factors_V03.pdf CALIB_COEFS = {"B317": 1.216e-4, "B325": 1.111e-4, @@ -92,12 +92,24 @@ def _mask_infinite(band): @staticmethod def calibrate(data, ds_name, calibration=None): """Convert counts input reflectance.""" - if calibration == "reflectance": + if calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: return data * CALIB_COEFS[ds_name] * 100. return data def get_dataset(self, dataset_id, ds_info): """Load a dataset.""" + # 8< v1.0 + import warnings + if "calibration" in dataset_id and dataset_id["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for EPIC L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 + ds_name = dataset_id["name"] logger.debug("Reading in get_dataset %s.", ds_name) diff --git a/satpy/readers/eps_l1b.py b/satpy/readers/eps_l1b.py index be437eff92..13af5d1e3e 100644 --- a/satpy/readers/eps_l1b.py +++ b/satpy/readers/eps_l1b.py @@ -46,8 +46,8 @@ def radiance_to_bt(arr, wc_, a__, b__): return a__ + b__ * (C2 * wc_ / (da.log(1 + (C1 * (wc_ ** 3) / arr)))) -def radiance_to_refl(arr, solar_flux): - """Convert to reflectances in %.""" +def radiance_to_radiance_factor(arr, solar_flux): + """Convert to radiance_factor in %.""" return arr * np.pi * 100.0 / solar_flux @@ -143,9 +143,13 @@ class EPSAVHRRFile(BaseFileHandler): sensors = {"AVHR": "avhrr-3"} - units = {"reflectance": "%", - "brightness_temperature": "K", - "radiance": "W m^-2 sr^-1"} + units = { + # 8< v1.0 + "reflectance": "%", + # >8 v1.0 + "radiance_factor": "%", + "brightness_temperature": "K", + "radiance": "W m^-2 sr^-1"} def __init__(self, filename, filename_info, filetype_info): """Initialize FileHandler.""" @@ -279,6 +283,13 @@ def get_bounding_box(self): def get_dataset(self, key, info): """Get calibrated channel data.""" + # 8< v1.0 + import warnings + if "calibration" in key and key["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for AVHRR L1b EPS, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 if self.sections is None: self._read_all() @@ -335,7 +346,13 @@ def three_b_mask(self): def _get_calibrated_dataarray(self, key): """Get a calibrated dataarray.""" - if key["calibration"] not in ["reflectance", "brightness_temperature", "radiance"]: + if key["calibration"] not in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "brightness_temperature", + "radiance"]: raise ValueError("calibration type " + str(key["calibration"]) + " is not supported!") @@ -347,8 +364,13 @@ def _get_calibrated_dataarray(self, key): array = self["SCENE_RADIANCES"][:, radiance_indices[channel_name], :] if channel_name in ["1", "2", "3A"]: - if key["calibration"] == "reflectance": - array = radiance_to_refl(array, + if key["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + ]: + array = radiance_to_radiance_factor(array, self[f"CH{channel_name}_SOLAR_FILTERED_IRRADIANCE"]) if channel_name == "3A": mask = self.three_a_mask[:, np.newaxis] diff --git a/satpy/readers/fci_l1c_nc.py b/satpy/readers/fci_l1c_nc.py index f32323a954..3e2121e7d5 100644 --- a/satpy/readers/fci_l1c_nc.py +++ b/satpy/readers/fci_l1c_nc.py @@ -125,6 +125,7 @@ import datetime as dt import logging from functools import cached_property +from warnings import warn import dask.array as da import numpy as np @@ -404,7 +405,12 @@ def _get_dataset_measurand(self, key, info=None): self["attr/platform"], self["attr/platform"]) # remove unpacking parameters for calibrated data - if key["calibration"] in ["brightness_temperature", "reflectance", "radiance"]: + if key["calibration"] in ["brightness_temperature", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "radiance"]: res.attrs.pop("add_offset") res.attrs.pop("warm_add_offset") res.attrs.pop("scale_factor") @@ -645,12 +651,21 @@ def get_area_def(self, key): def calibrate(self, data, key): """Calibrate data.""" - if key["calibration"] in ["brightness_temperature", "reflectance", "radiance"]: + if key["calibration"] in ["brightness_temperature", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "radiance"]: data = self.calibrate_counts_to_physical_quantity(data, key) elif key["calibration"] != "counts": logger.error( "Received unknown calibration key. Expected " - "'brightness_temperature', 'reflectance', 'radiance' or 'counts', got " + "'brightness_temperature', " + # 8< v1.0 + "'reflectance', " + # >8 v1.0 + "'radiance', 'radiance_factor' or 'counts', got " + key["calibration"] + ".") return data @@ -663,7 +678,16 @@ def calibrate_counts_to_physical_quantity(self, data, key): if key["calibration"] == "brightness_temperature": data = self.calibrate_rad_to_bt(data, key) - elif key["calibration"] == "reflectance": + elif key["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: + # 8< v1.0 + if key["calibration"] == "reflectance": + warn("Reflectance is not a correct calibration for FCI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 data = self.calibrate_rad_to_refl(data, key) return data @@ -735,7 +759,7 @@ def calibrate_rad_to_refl(self, radiance, key): "_FillValue", default_fillvals.get(cesi.dtype.str[1:])): logger.error( "channel effective solar irradiance set to fill value, " - "cannot produce reflectance for {:s}.".format(measured)) + f"cannot produce {key['calibration'].name} for {measured}.") return radiance * np.float32(np.nan) sun_earth_distance = self._compute_sun_earth_distance res = 100 * radiance * np.float32(np.pi) * np.float32(sun_earth_distance) ** np.float32(2) / cesi diff --git a/satpy/readers/gms/gms5_vissr_l1b.py b/satpy/readers/gms/gms5_vissr_l1b.py index e0b0c77a01..dc411b6fd0 100644 --- a/satpy/readers/gms/gms5_vissr_l1b.py +++ b/satpy/readers/gms/gms5_vissr_l1b.py @@ -66,7 +66,7 @@ Calibration ----------- -Sensor counts are calibrated by looking up reflectance/temperature values in the +Sensor counts are calibrated by looking up radiance_factor/temperature values in the calibration tables included in each file. See section 2.2 in the VISSR user guide. @@ -323,6 +323,13 @@ def _get_start_time(self): def get_dataset(self, dataset_id, ds_info): """Get dataset from file.""" + # 8< v1.0 + import warnings + if dataset_id.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for GMS-5/VISSR, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 image_data = self._get_image_data() counts = self._get_counts(image_data) dataset = self._calibrate(counts, dataset_id) @@ -605,7 +612,7 @@ def read_from_file_obj(file_obj, dtype, count, offset=0): class Calibrator: - """Calibrate VISSR data to reflectance or brightness temperature. + """Calibrate VISSR data to radiance_factor or brightness temperature. Reference: Section 2.2 in the VISSR User Guide. """ @@ -635,7 +642,11 @@ def _calibrate(self, counts): ) def _postproc(self, res, calibration): - if calibration == "reflectance": + if calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: res = self._convert_to_percent(res) return res diff --git a/satpy/readers/goes_imager_hrit.py b/satpy/readers/goes_imager_hrit.py index 869532842e..b3aff640b9 100644 --- a/satpy/readers/goes_imager_hrit.py +++ b/satpy/readers/goes_imager_hrit.py @@ -389,6 +389,13 @@ def __init__(self, filename, filename_info, filetype_info, def get_dataset(self, key, info): """Get the data from the files.""" + # 8< v1.0 + import warnings + if key.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for GOES Imager, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 logger.debug("Getting raw data") res = super(HRITGOESFileHandler, self).get_dataset(key, info) @@ -430,7 +437,11 @@ def calibrate(self, data, calibration): tic = dt.datetime.now() if calibration == "counts": return data - if calibration == "reflectance": + if calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: res = self._calibrate(data) elif calibration == "brightness_temperature": res = self._calibrate(data) diff --git a/satpy/readers/goes_imager_nc.py b/satpy/readers/goes_imager_nc.py index ad51665a86..3eaf868131 100644 --- a/satpy/readers/goes_imager_nc.py +++ b/satpy/readers/goes_imager_nc.py @@ -194,7 +194,7 @@ variant of this dataset with the following differences: 1. The geolocation is in a separate file, used for all bands -2. VIS data is calibrated to Albedo (or reflectance) +2. VIS data is calibrated to Albedo (or radiance_factor) 3. IR data is calibrated to radiance. 4. VIS data is downsampled to IR resolution (4km) 5. File name differs also slightly @@ -817,9 +817,13 @@ def _counts2radiance(self, counts, coefs, channel): offset=coefs["offset"]) def _calibrate(self, radiance, coefs, channel, calibration): - """Convert radiance to reflectance or brightness temperature.""" + """Convert radiance to radiance_factor or brightness temperature.""" if is_vis_channel(channel): - if not calibration == "reflectance": + if calibration not in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: raise ValueError("Cannot calibrate VIS channel to " "{}".format(calibration)) return self._calibrate_vis(radiance=radiance, k=coefs["k"]) @@ -902,7 +906,7 @@ def _viscounts2radiance(counts, slope, offset): @staticmethod def _calibrate_vis(radiance, k): - """Convert VIS radiance to reflectance. + """Convert VIS radiance to radiance_factor. Note: Angle of incident radiation and annual variation of the earth-sun distance is not taken into account. A value of 100% @@ -922,9 +926,9 @@ def _calibrate_vis(radiance, k): response function of the detector). Units of k: [m2 um sr W-1] Returns: - Reflectance [%] + radiance_factor [%] """ - logger.debug("Calibrating to reflectance") + logger.debug("Calibrating to radiance_factor") refl = 100 * k * radiance return refl.clip(min=0) @@ -1016,6 +1020,13 @@ def __init__(self, filename, filename_info, filetype_info): def get_dataset(self, key, info): """Load dataset designated by the given key from file.""" + # 8< v1.0 + import warnings + if key.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for GOES Imager, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 logger.debug("Reading dataset {}".format(key["name"])) # Read data from file and calibrate if necessary @@ -1050,7 +1061,11 @@ def calibrate(self, counts, calibration, channel): coefs = CALIB_COEFS[self.platform_name][channel] if calibration == "counts": return counts - if calibration in ["radiance", "reflectance", + if calibration in ["radiance", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", "brightness_temperature"]: radiance = self._counts2radiance(counts=counts, coefs=coefs, channel=channel) @@ -1080,6 +1095,13 @@ def __init__(self, filename, filename_info, filetype_info, geo_data): def get_dataset(self, key, info): """Load dataset designated by the given key from file.""" + # 8< v1.0 + import warnings + if key.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for GOES Imager, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 logger.debug("Reading dataset {}".format(key["name"])) tic = dt.datetime.now() @@ -1105,8 +1127,12 @@ def calibrate(self, data, calibration, channel): coefs = CALIB_COEFS[self.platform_name][channel] is_vis = is_vis_channel(channel) - # IR files provide radiances, VIS file provides reflectances - if is_vis and calibration == "reflectance": + # IR files provide radiances, VIS file provides radiance_factor + if is_vis and calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: return data if not is_vis and calibration == "radiance": return data diff --git a/satpy/readers/hrit_jma.py b/satpy/readers/hrit_jma.py index 555c6a9444..a15e74fcbb 100644 --- a/satpy/readers/hrit_jma.py +++ b/satpy/readers/hrit_jma.py @@ -95,6 +95,7 @@ import datetime as dt import logging +import warnings import numpy as np import xarray as xr @@ -369,6 +370,12 @@ def get_area_def(self, dsid): def get_dataset(self, key, info): """Get the dataset designated by *key*.""" res = super(HRITJMAFileHandler, self).get_dataset(key, info) + # 8< v1.0 + if key["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for SCMI ABI L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 # Filenames of segmented data is identical for MTSAT-1R, MTSAT-2 # and Himawari-8/9. Make sure we have the correct reader for the data diff --git a/satpy/readers/hrpt.py b/satpy/readers/hrpt.py index 03ee751f08..3d78fda4cf 100644 --- a/satpy/readers/hrpt.py +++ b/satpy/readers/hrpt.py @@ -159,6 +159,13 @@ def platform_name(self): def get_dataset(self, key, info): """Get the dataset.""" + # 8< v1.0 + import warnings + if "calibration" in key and key["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for AVHRR L0, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 attrs = info.copy() attrs["platform_name"] = self.platform_name diff --git a/satpy/readers/insat3d_img_l1b_h5.py b/satpy/readers/insat3d_img_l1b_h5.py index 8eaf596b59..d3bd842e8c 100644 --- a/satpy/readers/insat3d_img_l1b_h5.py +++ b/satpy/readers/insat3d_img_l1b_h5.py @@ -135,6 +135,13 @@ def datatree(self): def get_dataset(self, ds_id, ds_info): """Get a data array.""" + # 8< v1.0 + import warnings + if ds_id.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for INSAT3D L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 resolution = ds_id["resolution"] ds = self.datatree[str(resolution)] if ds_id["name"] in ["longitude", "latitude"]: @@ -146,7 +153,11 @@ def get_dataset(self, ds_id, ds_info): calibration = "" elif ds_id["calibration"] == "radiance": calibration = "_RADIANCE" - elif ds_id["calibration"] == "reflectance": + elif ds_id["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: calibration = "_ALBEDO" elif ds_id["calibration"] == "brightness_temperature": calibration = "_TEMP" diff --git a/satpy/readers/mersi_l1b.py b/satpy/readers/mersi_l1b.py index b76c397fe6..82a367cb89 100644 --- a/satpy/readers/mersi_l1b.py +++ b/satpy/readers/mersi_l1b.py @@ -76,9 +76,9 @@ def platform_name(self): return self["/attr/Satellite Name"] def get_refl_mult(self): - """Get reflectance multiplier.""" + """Get radiance_factor multiplier.""" if self.sensor_name == "mersi-rm": - # MERSI-RM has reflectance in the range 0-1, so we need to convert + # MERSI-RM has radiance_factor in the range 0-1, so we need to convert return 100. else: return 1. @@ -130,6 +130,13 @@ def _get_dn_corrections(self, data, band_index, dataset_id, attrs): def get_dataset(self, dataset_id, ds_info): """Load data variable and metadata and calibrate if needed.""" + # 8< v1.0 + import warnings + if "calibration" in dataset_id and dataset_id["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for MERSI L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 file_key = ds_info.get("file_key", dataset_id["name"]) band_index = ds_info.get("band_index") data = self[file_key] @@ -144,7 +151,11 @@ def get_dataset(self, dataset_id, ds_info): data = self._mask_data(data, dataset_id, attrs) data = self._get_dn_corrections(data, band_index, dataset_id, attrs) - if dataset_id.get("calibration") == "reflectance": + if dataset_id.get("calibration") in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: data = self._get_ref_dataset(data, ds_info) elif dataset_id.get("calibration") == "radiance": @@ -201,15 +212,15 @@ def _mask_data(self, data, dataset_id, attrs): return data def _get_ref_dataset(self, data, ds_info): - """Get the dataset as reflectance. + """Get the dataset as radiance_factor. For MERSI-1/2/RM, coefficients will be as:: - Reflectance = coeffs_1 + coeffs_2 * DN + coeffs_3 * DN ** 2 + radiance_factor = coeffs_1 + coeffs_2 * DN + coeffs_3 * DN ** 2 - For MERSI-LL, the DN value is in radiance and the reflectance could be calculated by:: + For MERSI-LL, the DN value is in radiance and the radiance_factor could be calculated by:: - Reflectance = Rad * pi / E0 * 100 + radiance_factor = Rad * pi / E0 * 100 Here E0 represents the solar irradiance of the specific band and is the coefficient. @@ -228,7 +239,7 @@ def _get_rad_dataset(self, data, ds_info, datset_id): For MERSI-2/RM VIS bands, this could be calculated by:: - Rad = Reflectance / 100 * E0 / pi + Rad = radiance_factor / 100 * E0 / pi For MERSI-2, E0 is in the attribute "Solar_Irradiance". For MERSI-RM, E0 is in the calibration dataset "Solar_Irradiance". diff --git a/satpy/readers/modis_l1b.py b/satpy/readers/modis_l1b.py index 08f9a32428..91a5cac204 100644 --- a/satpy/readers/modis_l1b.py +++ b/satpy/readers/modis_l1b.py @@ -178,7 +178,7 @@ def _get_band_index(self, var_attrs, band_name): return index def _fill_saturated(self, array, valid_max): - """Replace saturation-related values with max reflectance. + """Replace saturation-related values with max radiance_factor. If the file handler was created with ``mask_saturated`` set to ``True`` then all invalid/fill values are set to NaN. If ``False`` @@ -223,7 +223,11 @@ def _calibrate_data(self, key, info, array, var_attrs, index): projectable = calibrate_bt(array, var_attrs, index, key["name"]) info.setdefault("units", "K") info.setdefault("standard_name", "toa_brightness_temperature") - elif key["calibration"] == "reflectance": + elif key["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: projectable = calibrate_refl(array, var_attrs, index) info.setdefault("units", "%") info.setdefault("standard_name", @@ -254,6 +258,13 @@ def __init__(self, filename, filename_info, filetype_info, **kwargs): def get_dataset(self, key, info): """Get the dataset.""" + # 8< v1.0 + import warnings + if key.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for MODIS L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 if key["name"] in HDFEOSGeoReader.DATASET_NAMES: return HDFEOSGeoReader.get_dataset(self, key, info) return HDFEOSBandReader.get_dataset(self, key, info) @@ -279,7 +290,7 @@ def calibrate_refl(array, attributes, index): """Calibration for reflective channels.""" offset = np.float32(attributes["reflectance_offsets"][index]) scale = np.float32(attributes["reflectance_scales"][index]) - # convert to reflectance and convert from 1 to % + # convert to radiance_factor and convert from 1 to % array = (array - offset) array = array * (scale * 100) # avoid extra dask tasks by combining scalars return array diff --git a/satpy/readers/msi_ec_l1c_h5.py b/satpy/readers/msi_ec_l1c_h5.py index 9bb4110575..b3277b8945 100644 --- a/satpy/readers/msi_ec_l1c_h5.py +++ b/satpy/readers/msi_ec_l1c_h5.py @@ -53,6 +53,13 @@ def start_time(self): def get_dataset(self, dataset_id, ds_info): """Load data variable and metadata and calibrate if needed.""" + # 8< v1.0 + import warnings + if dataset_id.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for MSI EarthCare L1c, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 file_key = ds_info.get("file_key", dataset_id["name"]) data = self[file_key] @@ -71,7 +78,7 @@ def get_dataset(self, dataset_id, ds_info): ds_fill = ds_info["fill_value"] data = data.where(data != ds_fill) - # VIS/SWIR data can have radiance or reflectance calibration. + # VIS/SWIR data can have radiance or radiance_factor calibration. if "calibration" in ds_info: cal_type = ds_info["calibration"].name data = self._calibrate(data, band_index, cal_type) @@ -84,7 +91,11 @@ def get_dataset(self, dataset_id, ds_info): def _calibrate(self, chan_data, band_index, cal_type): """Calibrate the data.""" - if cal_type == "reflectance": + if cal_type in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: sol_irrad = self["ScienceData/solar_spectral_irradiance"] chan_data.data = chan_data.data * 100. * np.pi / sol_irrad[band_index].data.reshape((1, sol_irrad.shape[1])) return chan_data diff --git a/satpy/readers/msu_gsa_l1b.py b/satpy/readers/msu_gsa_l1b.py index a141ea5069..603579f00a 100644 --- a/satpy/readers/msu_gsa_l1b.py +++ b/satpy/readers/msu_gsa_l1b.py @@ -82,6 +82,13 @@ def _apply_scale_offset(in_data): def get_dataset(self, dataset_id, ds_info): """Load data variable and metadata and calibrate if needed.""" + # 8< v1.0 + import warnings + if dataset_id.get("calibration") == "reflectance": + warnings.warn("Reflectance is not a correct calibration for MSU-GS/A, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 file_key = ds_info.get("file_key", dataset_id["name"]) data = self[file_key] attrs = data.attrs.copy() # avoid contaminating other band loading @@ -94,11 +101,15 @@ def get_dataset(self, dataset_id, ds_info): # Data has a scale and offset that we must apply data = self._apply_scale_offset(data) - # Data is given as radiance values, we must convert if we want reflectance - if dataset_id.get("calibration") == "reflectance": + # Data is given as radiance values, we must convert if we want radiance_factor + if dataset_id.get("calibration") in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: solconst = float(attrs.pop("F_solar_constant")) data = np.pi * data / solconst - # Satpy expects reflectance values in 0-100 range + # Satpy expects radiance_factor values in 0-100 range data = data * 100. data.attrs = attrs diff --git a/satpy/readers/olci_nc.py b/satpy/readers/olci_nc.py index 724e5db26e..4bd2b96015 100644 --- a/satpy/readers/olci_nc.py +++ b/satpy/readers/olci_nc.py @@ -40,6 +40,7 @@ import logging +import warnings from functools import reduce import dask.array as da @@ -226,11 +227,20 @@ def get_dataset(self, key, info): else: dataset = self.nc[self.channel + "_radiance"] - if key["calibration"] == "reflectance": + if key["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: idx = int(key["name"][2:]) - 1 sflux = self._get_solar_flux(idx) dataset = dataset / sflux * np.pi * 100 dataset.attrs["units"] = "%" + # 8< v1.0 + if key["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for SEVIRI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 dataset.attrs["platform_name"] = self.platform_name dataset.attrs["sensor"] = self.sensor diff --git a/satpy/readers/scmi.py b/satpy/readers/scmi.py index 1e5f35a98a..51dddce3d9 100644 --- a/satpy/readers/scmi.py +++ b/satpy/readers/scmi.py @@ -45,6 +45,9 @@ import logging import os +# 8< v1.0 +import warnings + import numpy as np import xarray as xr from pyresample import geometry @@ -52,6 +55,10 @@ from satpy.readers.core.file_handlers import BaseFileHandler from satpy.utils import get_legacy_chunk_size +# >8 v1.0 + + + CHUNK_SIZE = get_legacy_chunk_size() # NetCDF doesn't support multi-threaded reading, trick it by opening # as one whole chunk then split it up before we do any calculations @@ -133,6 +140,12 @@ def get_shape(self, key, info): def get_dataset(self, key, info): """Load a dataset.""" logger.debug("Reading in get_dataset %s.", key["name"]) + # 8< v1.0 + if key["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for SCMI ABI L1b, " + "please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 var_name = info.get("file_key", self.filetype_info.get("file_key")) if var_name: data = self[var_name] @@ -149,7 +162,12 @@ def get_dataset(self, key, info): offset = data.attrs.pop("add_offset", 0) units = data.attrs.get("units", 1) # the '*1' unit is some weird convention added/needed by AWIPS - if units in ["1", "*1"] and key["calibration"] == "reflectance": + if units in ["1", "*1"] and key["calibration"] in ( + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + ): data *= 100 factor *= 100 # used for valid_min/max data.attrs["units"] = "%" diff --git a/satpy/readers/seviri_l1b_hrit.py b/satpy/readers/seviri_l1b_hrit.py index a0f61fe14e..878c8560a6 100644 --- a/satpy/readers/seviri_l1b_hrit.py +++ b/satpy/readers/seviri_l1b_hrit.py @@ -216,6 +216,7 @@ import copy import datetime as dt import logging +from warnings import warn import dask.array as da import numpy as np @@ -681,8 +682,17 @@ def get_dataset(self, key, info): """Get the dataset.""" res = super(HRITMSGFileHandler, self).get_dataset(key, info) res = self.calibrate(res, key["calibration"]) - - is_calibration = key["calibration"] in ["radiance", "reflectance", "brightness_temperature"] + # 8< v1.0 + if key["calibration"] == "reflectance": + warn("Reflectance is not a correct calibration for SEVIRI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 + is_calibration = key["calibration"] in ["radiance", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "brightness_temperature"] if is_calibration and self.mask_bad_quality_scan_lines: res = self._mask_bad_quality(res) diff --git a/satpy/readers/seviri_l1b_nc.py b/satpy/readers/seviri_l1b_nc.py index 781762e555..bc76648165 100644 --- a/satpy/readers/seviri_l1b_nc.py +++ b/satpy/readers/seviri_l1b_nc.py @@ -19,6 +19,7 @@ import datetime as dt import logging +from warnings import warn import numpy as np @@ -174,7 +175,18 @@ def get_dataset(self, dataset_id, dataset_info): dataset = dataset.sel(y=slice(None, None, -1)) dataset = self.calibrate(dataset, dataset_id) - is_calibration = dataset_id["calibration"] in ["radiance", "reflectance", "brightness_temperature"] + is_calibration = dataset_id["calibration"] in ["radiance", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "brightness_temperature"] + + # 8< v1.0 + if dataset_id["calibration"] == "reflectance": + warn("Reflectance is not a correct calibration for SEVIRI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 if (is_calibration and self.mask_bad_quality_scan_lines): dataset = self._mask_bad_quality(dataset, dataset_info) diff --git a/satpy/readers/sgli_l1b.py b/satpy/readers/sgli_l1b.py index ded709b468..f5af9aafaf 100644 --- a/satpy/readers/sgli_l1b.py +++ b/satpy/readers/sgli_l1b.py @@ -30,6 +30,7 @@ import datetime as dt import logging +from warnings import warn import dask.array as da import h5py @@ -124,10 +125,19 @@ def calibrate_vis(self, dataset, calibration): attrs = dataset.attrs if calibration == "counts": return dataset - if calibration == "reflectance": + if calibration in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: calibrated = (dataset * attrs["Slope_reflectance"] + attrs["Offset_reflectance"]) * 100 elif calibration == "radiance": calibrated = dataset * attrs["Slope"] + attrs["Offset"] + # 8< v1.0 + if calibration == "reflectance": + warn("Reflectance is not a correct calibration for SGLI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 missing, _ = self.get_missing_and_saturated(attrs) return calibrated.where(dataset < missing) diff --git a/satpy/readers/slstr_l1b.py b/satpy/readers/slstr_l1b.py index 510aa46ee4..049c64ee46 100644 --- a/satpy/readers/slstr_l1b.py +++ b/satpy/readers/slstr_l1b.py @@ -203,7 +203,11 @@ def get_dataset(self, key, info): variable = self.nc["{}_radiance_{}{}".format(self.channel, self.stripe, self.view[0])] radiances = self._apply_radiance_adjustment(variable) units = variable.attrs["units"] - if key["calibration"] == "reflectance": + if key["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: # TODO take into account sun-earth distance solar_flux = self.cal[re.sub("_[^_]*$", "", key["name"]) + "_solar_irradiances"] d_index = self.indices["detector_{}{}".format(self.stripe, self.view[0])] @@ -212,6 +216,11 @@ def get_dataset(self, key, info): self._cal_rad, radiances.data, d_index.data, solar_flux=solar_flux[:, idx].values) radiances *= np.pi * 100 units = "%" + # 8< v1.0 + if key["calibration"] == "reflectance": + warnings.warn("Reflectance is not a correct calibration for SEVIRI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 info = info.copy() info.update(radiances.attrs) diff --git a/satpy/readers/viirs_compact.py b/satpy/readers/viirs_compact.py index d27fa9d629..bca9de8888 100644 --- a/satpy/readers/viirs_compact.py +++ b/satpy/readers/viirs_compact.py @@ -32,6 +32,7 @@ import datetime as dt import logging from contextlib import suppress +from warnings import warn import dask.array as da import h5py @@ -248,7 +249,11 @@ def read_dataset(self, dataset_key, info): unit = "W m-2 sr-1 μm-1" if dataset_key["calibration"] == "counts": raise NotImplementedError("Can't get counts from this data") - if dataset_key["calibration"] in ["reflectance", "brightness_temperature"]: + if dataset_key["calibration"] in ["radiance_factor", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "brightness_temperature"]: # do calibrate try: # First guess: VIS or NIR data @@ -257,6 +262,11 @@ def read_dataset(self, dataset_key, info): dse = h5attrs["EarthSunDistanceNormalised"] rads *= 100 * np.pi * a_vis / b_vis * (dse**2) unit = "%" + # 8< v1.0 + if dataset_key["calibration"] == "reflectance": + warn("Reflectance is not a correct calibration for SEVIRI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 except KeyError: # Maybe it's IR data? try: @@ -276,7 +286,10 @@ def read_dataset(self, dataset_key, info): elif dataset_key["calibration"] != "radiance": raise ValueError("Calibration parameter should be radiance, " - "reflectance or brightness_temperature") + # 8< v1.0 + "reflectance, " + # >8 v1.0 + "radiance_factor or brightness_temperature") rads = rads.clip(min=0) rads.attrs = self.mda rads.attrs["units"] = unit diff --git a/satpy/readers/viirs_l1b.py b/satpy/readers/viirs_l1b.py index 5c4b5cacbc..3c0c9f6ff3 100644 --- a/satpy/readers/viirs_l1b.py +++ b/satpy/readers/viirs_l1b.py @@ -19,6 +19,7 @@ import datetime as dt import logging +from warnings import warn import numpy as np @@ -152,6 +153,11 @@ def _get_dataset_valid_range(self, dataset_id, ds_info, var_path): valid_max = self[var_path + "/attr/valid_max"] scale_factor = self[var_path + "/attr/scale_factor"] scale_offset = self[var_path + "/attr/add_offset"] + # 8< v1.0 + if dataset_id["calibration"] == "reflectance": + warn("Reflectance is not a correct calibration for SGLI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 elif ds_info.get("units") == "K": # normal brightness temperature # use a special LUT to get the actual values diff --git a/satpy/readers/virr_l1b.py b/satpy/readers/virr_l1b.py index 37506b3340..195e651df1 100644 --- a/satpy/readers/virr_l1b.py +++ b/satpy/readers/virr_l1b.py @@ -42,6 +42,7 @@ import datetime as dt import logging +from warnings import warn import dask.array as da import numpy as np @@ -51,15 +52,6 @@ LOG = logging.getLogger(__name__) -# PROVIDED BY NIGEL ATKINSON - 2013 -# FY3B_REF_COEFFS = [ -# 0.12640, -1.43200, #channel1# -# 0.13530, -1.62360, #channel2# -# 0.09193, -2.48207, #channel6# -# 0.07480, -0.90980, #channel7# -# 0.07590, -0.91080, #channel8# -# 0.07460, -0.89520, #channel9# -# 0.06300, -0.76280] #channel10# # CMA - 2015 - http://www.nsmc.org.cn/en/NSMC/Contents/100089.html FY3B_REF_COEFFS = [ 0.1264, -1.4320, @@ -120,14 +112,27 @@ def get_dataset(self, dataset_id, ds_info): data.attrs.update({"platform_name": self["/attr/Satellite Name"], "sensor": self["/attr/Sensor Identification Code"].lower()}) data.attrs.update(ds_info) + self._fix_units(data, dataset_id, file_key) + return data + + def _fix_units(self, data, dataset_id, file_key): + """Fix units.""" units = self.get(file_key + "/attr/units") if units is not None and str(units).lower() != "none": data.attrs.update({"units": self.get(file_key + "/attr/units")}) - elif data.attrs.get("calibration") == "reflectance": + elif data.attrs.get("calibration") in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: data.attrs.update({"units": "%"}) + # 8< v1.0 + if dataset_id["calibration"] == "reflectance": + warn("Reflectance is not a correct calibration for SEVIRI channels, please use 'radiance_factor'", + DeprecationWarning) + # >8 v1.0 else: data.attrs.update({"units": "1"}) - return data def _calibrate_reflective(self, data, band_index): if self.platform_id == "FY3B": diff --git a/satpy/tests/reader_tests/gms/test_gms5_vissr_l1b.py b/satpy/tests/reader_tests/gms/test_gms5_vissr_l1b.py index b86f5e78b6..3722e8cfb8 100644 --- a/satpy/tests/reader_tests/gms/test_gms5_vissr_l1b.py +++ b/satpy/tests/reader_tests/gms/test_gms5_vissr_l1b.py @@ -94,7 +94,7 @@ def _patch_number_of_pixels_per_scanline(self, monkeypatch): @pytest.fixture( params=[ - make_dataid(name="VIS", calibration="reflectance", resolution=1250), + make_dataid(name="VIS", calibration="radiance_factor", resolution=1250), make_dataid( name="IR1", calibration="brightness_temperature", resolution=5000 ), @@ -370,7 +370,7 @@ def file_handler(self, vissr_file_like, mask_space): @pytest.fixture def vis_refl_exp(self, mask_space, lons_lats_exp): - """Get expected VIS reflectance.""" + """Get expected VIS radiance_factor.""" lons, lats = lons_lats_exp if mask_space: data = [[np.nan, np.nan], [50, 100]] @@ -470,7 +470,7 @@ def dataset_exp(self, dataset_id, ir1_counts_exp, ir1_bt_exp, vis_refl_exp): name="IR1", calibration="brightness_temperature", resolution=5000 ) vis_refl_id = make_dataid( - name="VIS", calibration="reflectance", resolution=1250 + name="VIS", calibration="radiance_factor", resolution=1250 ) expectations = { ir1_counts_id: ir1_counts_exp, @@ -548,6 +548,14 @@ def test_time_attributes(self, file_handler, attrs_exp): assert file_handler.start_time == start_time_exp assert file_handler.end_time == end_time_exp + # 8< v1.0 + def test_reflectance_warns(self, file_handler): + """Test getting the dataset.""" + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = file_handler.get_dataset( + make_dataid(name="VIS", calibration="reflectance", resolution=1250), {}) + # >8 v1.0 + class TestCorruptFile: """Test reading corrupt files.""" diff --git a/satpy/tests/reader_tests/modis_tests/test_modis_l1b.py b/satpy/tests/reader_tests/modis_tests/test_modis_l1b.py index 94a21c2ef8..a2706d1683 100644 --- a/satpy/tests/reader_tests/modis_tests/test_modis_l1b.py +++ b/satpy/tests/reader_tests/modis_tests/test_modis_l1b.py @@ -186,7 +186,7 @@ def test_load_vis(self, modis_l1b_nasa_mod021km_file): scene = Scene(reader="modis_l1b", filenames=modis_l1b_nasa_mod021km_file) dataset_name = "1" with dask.config.set({"array.chunk-size": "1 MiB"}): - scene.load([dataset_name]) + scene.load([dataset_name], calibration="radiance_factor") dataset = scene[dataset_name] assert dataset[0, 0] == 300.0 assert dataset.shape == _shape_for_resolution(1000) @@ -200,7 +200,7 @@ def test_load_vis_saturation(self, mask_saturated, modis_l1b_nasa_mod021km_file) reader_kwargs={"mask_saturated": mask_saturated}) dataset_name = "2" with dask.config.set({"array.chunk-size": "1 MiB"}): - scene.load([dataset_name]) + scene.load([dataset_name], calibration="radiance_factor") dataset = scene[dataset_name] assert dataset.shape == _shape_for_resolution(1000) assert dataset.attrs["resolution"] == 1000 @@ -218,3 +218,13 @@ def test_load_vis_saturation(self, mask_saturated, modis_l1b_nasa_mod021km_file) # albedos are converted to % assert data[-1, -2] >= 32767 * 100.0 # saturation assert data[-1, -3] >= 32767 * 100.0 # can't aggregate + + # 8< v1.0 + def test_reflectance_warns(self, modis_l1b_nasa_mod021km_file): + """Test asking for reflectance issues a warning.""" + scene = Scene(reader="modis_l1b", filenames=modis_l1b_nasa_mod021km_file) + dataset_name = "1" + with dask.config.set({"array.chunk-size": "1 MiB"}): + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + scene.load([dataset_name], calibration="reflectance") + # >8 v1.0 diff --git a/satpy/tests/reader_tests/test_aapp_l1b.py b/satpy/tests/reader_tests/test_aapp_l1b.py index fd96a99a90..a5ae796982 100644 --- a/satpy/tests/reader_tests/test_aapp_l1b.py +++ b/satpy/tests/reader_tests/test_aapp_l1b.py @@ -254,7 +254,7 @@ def test_read(self, all_channels_fh): mins = [] maxs = [] for name in ["1", "2", "3a"]: - key = make_dataid(name=name, calibration="reflectance") + key = make_dataid(name=name, calibration="radiance_factor") res = all_channels_fh.get_dataset(key, info) assert res.dtype == np.float32 assert res.min() == 0 @@ -265,7 +265,7 @@ def test_read(self, all_channels_fh): assert np.all(np.isnan(res[:2, :])) for name in ["3b", "4", "5"]: - key = make_dataid(name=name, calibration="reflectance") + key = make_dataid(name=name, calibration="radiance_factor") res = all_channels_fh.get_dataset(key, info) assert res.dtype == np.float32 mins.append(res.min().values) @@ -275,6 +275,13 @@ def test_read(self, all_channels_fh): np.testing.assert_allclose(mins, [0., 0., 0., 204.1018, 103.24155, 106.426704]) np.testing.assert_allclose(maxs, [108.40393, 107.68546, 106.80061, 337.71414, 355.15897, 350.87186]) + def test_reflectance_warns(self, all_channels_fh): + """Test the reading.""" + info = {} + key = make_dataid(name="1", calibration="reflectance") + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = all_channels_fh.get_dataset(key, info) + def test_angles(self, all_channels_fh): """Test reading the angles.""" info = {} @@ -368,7 +375,7 @@ class TestAAPPL1BChannel3AMissing: def test_loading_missing_channels_returns_none(self, missing3a_fh): """Test that loading a missing channel raises a keyerror.""" info = {} - key = make_dataid(name="3a", calibration="reflectance") + key = make_dataid(name="3a", calibration="radiance_factor") assert missing3a_fh.get_dataset(key, info) is None def test_available_datasets_miss_3a(self, missing3a_fh): @@ -566,8 +573,8 @@ def _neg_cal_data(): return data -def test_bright_channel2_has_reflectance_greater_than_100(neg_cal_path): +def test_bright_channel2_has_radiance_factor_greater_than_100(neg_cal_path): """Test that a bright channel 2 has reflectances greater that 100.""" file_handler = AVHRRAAPPL1BFile(neg_cal_path, dict(), None) - data = file_handler.get_dataset(make_dataid(name="2", calibration="reflectance"), dict()) + data = file_handler.get_dataset(make_dataid(name="2", calibration="radiance_factor"), dict()) np.testing.assert_array_less(100, data.values) diff --git a/satpy/tests/reader_tests/test_abi_l1b.py b/satpy/tests/reader_tests/test_abi_l1b.py index bcb6d35041..7732e3db14 100644 --- a/satpy/tests/reader_tests/test_abi_l1b.py +++ b/satpy/tests/reader_tests/test_abi_l1b.py @@ -139,10 +139,13 @@ def generate_l1b_filename(chan_name: str) -> str: @pytest.fixture def c01_refl(tmp_path) -> xr.DataArray: - """Load c01 reflectances.""" + """Load c01 radiance_factor.""" with _apply_dask_chunk_size(): reader = _create_reader_for_data(tmp_path, "C01", None, 1000) - return reader.load(["C01"])["C01"] + # 8< v1.0 + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + # >8 v1.0 + return reader.load(["C01"])["C01"] @pytest.fixture @@ -443,8 +446,8 @@ def test_vis_calibrate(c01_refl): np.testing.assert_allclose(data_np[0, :10], expected, equal_nan=True) assert "scale_factor" not in res.attrs assert "_FillValue" not in res.attrs - assert res.attrs["standard_name"] == "toa_bidirectional_reflectance" - assert res.attrs["long_name"] == "Bidirectional Reflectance" + assert res.attrs["standard_name"] == "product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance" # noqa + assert res.attrs["long_name"] == "Product of cosine of solar zenith angle and TOA bidirectional reflectance" # noqa def test_raw_calibrate(c01_counts): diff --git a/satpy/tests/reader_tests/test_abi_l2_nc.py b/satpy/tests/reader_tests/test_abi_l2_nc.py index 0f7132f9b7..08f06dc67e 100644 --- a/satpy/tests/reader_tests/test_abi_l2_nc.py +++ b/satpy/tests/reader_tests/test_abi_l2_nc.py @@ -186,7 +186,7 @@ class TestMCMIPReading: ("product", "exp_metadata"), [ ("C14", {"calibration": "brightness_temperature", "wavelength": (10.8, 11.2, 11.6), "units": "K"}), - ("C01", {"calibration": "reflectance", "wavelength": (0.45, 0.47, 0.49), "units": "%"}), + ("C01", {"calibration": "radiance_factor", "wavelength": (0.45, 0.47, 0.49), "units": "%"}), ] ) @mock.patch("satpy.readers.core.abi.xr") diff --git a/satpy/tests/reader_tests/test_agri_l1.py b/satpy/tests/reader_tests/test_agri_l1.py index 4ad06cef20..c1687dbd48 100644 --- a/satpy/tests/reader_tests/test_agri_l1.py +++ b/satpy/tests/reader_tests/test_agri_l1.py @@ -18,6 +18,7 @@ """The agri_l1 reader tests package.""" import os +import warnings from unittest import mock import dask.array as da @@ -278,19 +279,37 @@ def test_agri_all_bands_have_right_units(self): reader = self._create_reader_for_resolutions(*RESOLUTION_LIST) band_names = ALL_BAND_NAMES - res = reader.load(band_names) + # 8< v1.0 + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="Reflectance is not a correct calibration.*") + # >8 v1.0 + res = reader.load(band_names) assert len(res) == 14 for band_name in band_names: assert res[band_name].shape == (2, 5) self._check_units(band_name, res) + # 8< v1.0 + def test_reflecance_warns(self): + """Test that using reflectance as calibration issues a warning.""" + reader = self._create_reader_for_resolutions(*RESOLUTION_LIST) + + band_names = ALL_BAND_NAMES[0:1] + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = reader.load(band_names) + # >8 v1.0 + def test_agri_orbital_parameters_are_correct(self): """Test orbital parameters are set correctly.""" reader = self._create_reader_for_resolutions(*RESOLUTION_LIST) band_names = ALL_BAND_NAMES - res = reader.load(band_names) + # 8< v1.0 + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="Reflectance is not a correct calibration.*") + # >8 v1.0 + res = reader.load(band_names) # check whether the data type of orbital_parameters is float orbital_parameters = res[band_names[0]].attrs["orbital_parameters"] @@ -310,7 +329,10 @@ def _check_keys_for_dsq(available_datasets, resolution_to_test): ds_q = make_dsq(name=band_name, resolution=resolution_to_test) res = get_key(ds_q, available_datasets, num_results=0, best=False) if band_name < "C07": - assert len(res) == 2 + # 8< v1.0 + assert len(res) == 3 + # >8 v1.0 + # assert len(res) == 2 else: assert len(res) == 3 @@ -370,7 +392,11 @@ def test_agri_for_one_resolution(self, resolution_to_test, satname): available_datasets = reader.available_dataset_ids band_names = CHANNELS_BY_RESOLUTION[resolution_to_test] self._assert_which_channels_are_loaded(available_datasets, band_names, resolution_to_test) - res = reader.load(band_names) + # 8< v1.0 + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", message="Reflectance is not a correct calibration.*") + # >8 v1.0 + res = reader.load(band_names) assert len(res) == len(band_names) self._check_calibration_and_units(band_names, res) for band_name in band_names: @@ -388,7 +414,10 @@ def _check_calibration_and_units(self, band_names, result): @staticmethod def _check_units(band_name, result): if band_name < "C07": + # 8< v1.0 assert result[band_name].attrs["calibration"] == "reflectance" + # >8 v1.0 + # assert result[band_name].attrs["calibration"] == "radiance_factor" else: assert result[band_name].attrs["calibration"] == "brightness_temperature" if band_name < "C07": @@ -412,6 +441,9 @@ def _assert_which_channels_are_loaded(available_datasets, band_names, resolution ds_q = make_dsq(name=band_name, resolution=resolution_to_test) res = get_key(ds_q, available_datasets, num_results=0, best=False) if band_name < "C07": - assert len(res) == 2 + # 8< v1.0 + assert len(res) == 3 + # >8 v1.0 + # assert len(res) == 2 else: assert len(res) == 3 diff --git a/satpy/tests/reader_tests/test_ahi_hrit.py b/satpy/tests/reader_tests/test_ahi_hrit.py index 4496e22943..24a93a6b50 100644 --- a/satpy/tests/reader_tests/test_ahi_hrit.py +++ b/satpy/tests/reader_tests/test_ahi_hrit.py @@ -363,7 +363,13 @@ def test_get_area_def(tmp_path, mda_info, area_name, extent): assert area.description == AREA_NAMES[area_name]["long"] -@pytest.mark.parametrize("calibration", ["counts", "reflectance", "brightness_temperature"]) +@pytest.mark.parametrize("calibration", [ + "counts", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + "brightness_temperature"]) def test_calibrate(tmp_path, calibration): """Test calibration.""" num_rows = 275 @@ -371,14 +377,22 @@ def test_calibrate(tmp_path, calibration): hrit_path = tmp_path / "IMG_DK01VIS_202509261940_001" units = { "counts": "1", + # 8< v1.0 "reflectance": "%", + # >8 v1.0 + "radiance_factor": "%", "brightness_temperature": "K", }[calibration] create_fake_ahi_hrit( hrit_path, num_rows, num_cols, - is_vis=calibration == "reflectance", + is_vis=calibration in ( + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor", + ), # Choose an area near the subsatellite point to avoid masking of space pixels metadata_overrides={ "loff": 1375.0, @@ -389,18 +403,33 @@ def test_calibrate(tmp_path, calibration): ) reader = HRITJMAFileHandler(hrit_path, {"start_time": dt.datetime.now()}, {}) key = make_dataid(name="VIS", calibration=calibration) - res = reader.get_dataset( - key, - { - "units": units, - "sensor": "ahi", - }, - ) + # 8< v1.0 + if calibration == "reflectance": + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + res = reader.get_dataset( + key, + { + "units": units, + "sensor": "ahi", + }, + ) + else: + # >8 v1.0 + res = reader.get_dataset( + key, + { + "units": units, + "sensor": "ahi", + }, + ) exp_counts = np.arange(49658, 49658 + 200, 1, dtype=">u2").astype(np.float32) exp = { "counts": exp_counts, + # 8< v1.0 "reflectance": np.interp(exp_counts, [0, 1023, 65535], [-0.10, 100.0, 100.0]), + # >8 v1.0 + "radiance_factor": np.interp(exp_counts, [0, 1023, 65535], [-0.10, 100.0, 100.0]), "brightness_temperature": np.interp(exp_counts, [0, 1023, 65535], [329.98, 130.02, 130.02]), } res_np = res.data.compute() @@ -456,7 +485,7 @@ def test_get_dataset(tmp_path): ) reader = HRITJMAFileHandler(hrit_path, {"start_time": dt.datetime.now()}, {}) - key = make_dataid(name="VIS", calibration="reflectance") + key = make_dataid(name="VIS", calibration="radiance_factor") with mock.patch.object(reader, "_mask_space", wraps=reader._mask_space) as mask_space, \ mock.patch.object(reader, "calibrate", wraps=reader.calibrate) as calibrate: res = reader.get_dataset(key, {"units": "%", "sensor": "ahi"}) @@ -481,7 +510,7 @@ def test_sensor_mismatch(tmp_path, caplog): create_fake_ahi_hrit(hrit_path) reader = HRITJMAFileHandler(hrit_path, {"start_time": dt.datetime.now()}, {}) - key = make_dataid(name="VIS", calibration="reflectance") + key = make_dataid(name="VIS", calibration="radiance_factor") reader.get_dataset(key, {"units": "%", "sensor": "jami"}) assert "Sensor-Platform mismatch" in caplog.text diff --git a/satpy/tests/reader_tests/test_ahi_hsd.py b/satpy/tests/reader_tests/test_ahi_hsd.py index 56f06be25d..d620e5cca9 100644 --- a/satpy/tests/reader_tests/test_ahi_hsd.py +++ b/satpy/tests/reader_tests/test_ahi_hsd.py @@ -376,7 +376,7 @@ def test_read_band_from_actual_file(self, hsd_file_jp01): key, { "units": "%", - "standard_name": "toa_bidirectional_reflectance", + "standard_name": "product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance", "wavelength": 2, "resolution": 1000, }) @@ -498,11 +498,20 @@ def test_default_calibrate(self, *mocks): calibration="brightness_temperature") np.testing.assert_allclose(bt, bt_exp) + # 8< v1.0 # Reflectance + refl_exp = np.array([[2.92676, 2.214325], + [1.50189, 0.]]) + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + refl = self.fh.calibrate(data=self.counts, calibration="reflectance") + assert np.allclose(refl, refl_exp) + # >8 v1.0 + + # radiance_factor refl_exp = np.array([[2.92676, 2.214325], [1.50189, 0.]]) refl = self.fh.calibrate(data=self.counts, - calibration="reflectance") + calibration="radiance_factor") assert np.allclose(refl, refl_exp) def test_updated_calibrate(self): diff --git a/satpy/tests/reader_tests/test_ami_l1b.py b/satpy/tests/reader_tests/test_ami_l1b.py index 041bf454fd..d65fe590b2 100644 --- a/satpy/tests/reader_tests/test_ami_l1b.py +++ b/satpy/tests/reader_tests/test_ami_l1b.py @@ -276,13 +276,13 @@ def test_get_area_def(self, adef, fake_vis_reader): def test_get_dataset_vis(self, fake_vis_reader): """Test get visible calibrated data.""" from satpy.tests.utils import make_dataid - key = make_dataid(name="VI006", calibration="reflectance") + key = make_dataid(name="VI006", calibration="radiance_factor") res = fake_vis_reader.get_dataset(key, { "file_key": "image_pixel_values", - "standard_name": "toa_bidirectional_reflectance", + "standard_name": "product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance", "units": "%", }) - exp = {"calibration": "reflectance", + exp = {"calibration": "radiance_factor", "modifiers": (), "platform_name": "GEO-KOMPSAT-2A", "sensor": "ami", @@ -309,6 +309,19 @@ def test_get_dataset_counts(self, fake_vis_reader): assert val == res.attrs[key] self._check_orbital_parameters(res.attrs["orbital_parameters"]) + # 8< v1.0 + def test_get_dataset_reflectance_warns(self, fake_vis_reader): + """Test get visible calibrated data.""" + from satpy.tests.utils import make_dataid + key = make_dataid(name="VI006", calibration="reflectance") + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = fake_vis_reader.get_dataset(key, { + "file_key": "image_pixel_values", + "standard_name": "toa_bidirectional_reflectance", + "units": "%", + }) + # >8 v1.0 + class TestAMIL1bNetCDFIRCal: """Test IR specific things about the AMI reader.""" diff --git a/satpy/tests/reader_tests/test_avhrr_l0_hrpt.py b/satpy/tests/reader_tests/test_avhrr_l0_hrpt.py index bddac3efa7..bb485f9a99 100644 --- a/satpy/tests/reader_tests/test_avhrr_l0_hrpt.py +++ b/satpy/tests/reader_tests/test_avhrr_l0_hrpt.py @@ -96,14 +96,20 @@ def test_no_calibration_values_are_raw(self, hrpt_fh): assert (result.values == COUNTS[:, :, 0]).all() -class TestHRPTGetCalibratedReflectances: - """Test case for reading calibrated reflectances from hrpt data.""" +class TestHRPTGetCalibratedVIS: + """Test case for reading calibrated vis data from hrpt data.""" - def test_calibrated_reflectances_values(self, hrpt_fh): + def test_calibrated_vis_values(self, hrpt_fh): """Test the calibrated reflectance values.""" - result = hrpt_fh.get_dataset(make_dataid(name="1", calibration="reflectance"), {}) + result = hrpt_fh.get_dataset(make_dataid(name="1", calibration="radiance_factor"), {}) np.testing.assert_allclose(result.values.mean(), 62.262344) + def test_reflectance_warns(self, hrpt_fh): + """Test that asking for reflectance issues a warning.""" + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = hrpt_fh.get_dataset(make_dataid(name="1", calibration="reflectance"), {}) + + class TestHRPTGetCalibratedBT: """Test case for reading calibrated brightness temperature from hrpt data.""" @@ -125,7 +131,7 @@ def test_channel_3b_masking(self, hrpt_fh): def test_channel_3a_masking(self, hrpt_fh): """Test that channel 3a is split correctly.""" - result = hrpt_fh.get_dataset(make_dataid(name="3a", calibration="reflectance"), {}) + result = hrpt_fh.get_dataset(make_dataid(name="3a", calibration="radiance_factor"), {}) assert np.isnan(result.values[5:]).all() assert np.isfinite(result.values[:5]).all() diff --git a/satpy/tests/reader_tests/test_avhrr_l1b_gaclac.py b/satpy/tests/reader_tests/test_avhrr_l1b_gaclac.py index ba5814181f..f4653f9423 100644 --- a/satpy/tests/reader_tests/test_avhrr_l1b_gaclac.py +++ b/satpy/tests/reader_tests/test_avhrr_l1b_gaclac.py @@ -398,7 +398,7 @@ def test_get_channel_calibrated(self, stub: Path, reader_kwargs: dict, expect: E """Test getting calibrated channel.""" scene = Scene(filenames=[stub], reader="avhrr_l1b_gaclac", reader_kwargs=reader_kwargs) - scene.load(["1"]) + scene.load(["1"], calibration="radiance_factor") assert scene["1"].shape == (expect.num_lines, 409) assert scene["1"].dims == ("y", "x") assert scene["1"].start_time == expect.start_time @@ -407,6 +407,15 @@ def test_get_channel_calibrated(self, stub: Path, reader_kwargs: dict, expect: E assert "tle" in scene["1"].attrs["orbital_parameters"] assert scene["1"].attrs["platform_name"] == expect.platform_name + # 8< v1.0 + def test_reflectance_warns(self, stub: Path, reader_kwargs: dict, expect: Expectations): + """Test getting calibrated channel.""" + scene = Scene(filenames=[stub], reader="avhrr_l1b_gaclac", + reader_kwargs=reader_kwargs) + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + scene.load(["1"], calibration="reflectance") + # >8 v1.0 + def test_get_channel_counts(self, stub: Path, reader_kwargs: dict): """Test getting raw channel counts.""" scene = Scene(filenames=[stub], reader="avhrr_l1b_gaclac", diff --git a/satpy/tests/reader_tests/test_epic_l1b_h5.py b/satpy/tests/reader_tests/test_epic_l1b_h5.py index 0e1263b937..d06ee44bfa 100644 --- a/satpy/tests/reader_tests/test_epic_l1b_h5.py +++ b/satpy/tests/reader_tests/test_epic_l1b_h5.py @@ -106,15 +106,25 @@ def test_counts_calibration(self, setup_hdf5_file): np.testing.assert_allclose(ds["B317"].data, b317_data) def test_refl_calibration(self, setup_hdf5_file): - """Test that data is correctly calibrated into reflectances.""" + """Test that data is correctly calibrated into radiance_factor.""" from satpy.tests.utils import make_dsq test_reader = self._setup_h5(setup_hdf5_file) - # Test conversion to reflectance - ds = test_reader.load([make_dsq(name="B317", calibration="reflectance")]) + # Test conversion to radiance_factor + ds = test_reader.load([make_dsq(name="B317", calibration="radiance_factor")]) np.testing.assert_allclose(ds["B317"].data, b317_data * CALIB_COEFS["B317"] * 100., rtol=1e-5) + # 8< v1.0 + def test_reflectance_warns(self, setup_hdf5_file): + """Test that ascing for reflectance as calibration issues a warning.""" + from satpy.tests.utils import make_dsq + + test_reader = self._setup_h5(setup_hdf5_file) + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = test_reader.load([make_dsq(name="B317", calibration="reflectance")]) + # >8 v1.0 + def test_bad_calibration(self, setup_hdf5_file): """Test that error is raised if a bad calibration is used.""" from satpy.tests.utils import make_dsq diff --git a/satpy/tests/reader_tests/test_eps_l1b.py b/satpy/tests/reader_tests/test_eps_l1b.py index 16c7cfe27b..6979c0712a 100644 --- a/satpy/tests/reader_tests/test_eps_l1b.py +++ b/satpy/tests/reader_tests/test_eps_l1b.py @@ -116,13 +116,13 @@ def test_read_all(self): def test_dataset(self): """Test getting a dataset.""" - did = make_dataid(name="1", calibration="reflectance") + did = make_dataid(name="1", calibration="radiance_factor") res = self.fh.get_dataset(did, {}) assert isinstance(res, xr.DataArray) assert res.attrs["platform_name"] == "Metop-C" assert res.attrs["sensor"] == "avhrr-3" assert res.attrs["name"] == "1" - assert res.attrs["calibration"] == "reflectance" + assert res.attrs["calibration"] == "radiance_factor" assert res.attrs["units"] == "%" did = make_dataid(name="4", calibration="brightness_temperature") @@ -134,6 +134,12 @@ def test_dataset(self): assert res.attrs["calibration"] == "brightness_temperature" assert res.attrs["units"] == "K" + def test_reflectance_warns(self): + """Test that asking for reflectance as calibration issues a warning.""" + did = make_dataid(name="1", calibration="reflectance") + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = self.fh.get_dataset(did, {}) + def test_get_dataset_radiance(self): """Test loading a data array with radiance calibration.""" did = make_dataid(name="1", calibration="radiance") diff --git a/satpy/tests/reader_tests/test_fci_l1c_nc.py b/satpy/tests/reader_tests/test_fci_l1c_nc.py index dde1da3ea1..dfc13fe678 100644 --- a/satpy/tests/reader_tests/test_fci_l1c_nc.py +++ b/satpy/tests/reader_tests/test_fci_l1c_nc.py @@ -128,11 +128,18 @@ }, }, + # 8< v1.0 "reflectance": {"dtype": np.float32, "attrs_dict": {"calibration": "reflectance", "units": "%" }, }, + # >8 v1.0 + "radiance_factor": {"dtype": np.float32, + "attrs_dict": {"calibration": "radiance_factor", + "units": "%" + }, + }, "counts": {"dtype": np.uint16, "value_1": 5, @@ -573,8 +580,12 @@ def clear_cache(reader): def get_list_channel_calibration(calibration): """Get the channel's list according the calibration.""" - if calibration == "reflectance": + if calibration == "radiance_factor": return LIST_CHANNEL_SOLAR + # 8< v1.0 + elif calibration == "reflectance": + return LIST_CHANNEL_SOLAR + # >8 v1.0 elif calibration == "brightness_temperature": return LIST_CHANNEL_TERRAN else: @@ -750,8 +761,8 @@ def _get_assert_erased_attrs(res, ch): assert atr not in res[ch].attrs @staticmethod - def _reflectance_test(tab, filenames): - """Test of with the reflectance test.""" + def _radiance_facter_test(tab, filenames): + """Test of with the radiance_factor test.""" if "IQTI" in filenames: numpy.testing.assert_array_almost_equal(tab, 93.6462, decimal=4) @@ -779,10 +790,18 @@ def _shape_test(res, ch, grid_type, dict_arg): def _get_assert_load(self, res, ch, dict_arg, filenames): """Test the value for different channels.""" self._get_assert_attrs(res, ch, dict_arg["attrs_dict"]) - if dict_arg["attrs_dict"]["calibration"] in ["radiance", "brightness_temperature", "reflectance"]: + if dict_arg["attrs_dict"]["calibration"] in ["radiance", "brightness_temperature", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: self._get_assert_erased_attrs(res, ch) - if dict_arg["attrs_dict"]["calibration"] == "reflectance": - self._reflectance_test(res[ch], filenames) + if dict_arg["attrs_dict"]["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]: + self._radiance_facter_test(res[ch], filenames) else: self._other_calibration_test(res, ch, dict_arg) @@ -849,7 +868,11 @@ def test_file_pattern_for_TRAIL_file(self, reader_configs, filenames): files = reader.select_files_from_pathnames(filenames) assert len(files) == 0 - @pytest.mark.parametrize("calibration", ["counts", "radiance", "brightness_temperature", "reflectance"]) + @pytest.mark.parametrize("calibration", ["counts", "radiance", "brightness_temperature", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]) @pytest.mark.parametrize(("fh_param", "res_type"), [ (lazy_fixture("FakeFCIFileHandlerFDHSI_fixture"), "hdfi"), (lazy_fixture("FakeFCIFileHandlerHRFI_fixture"), "hrfi"), @@ -862,13 +885,20 @@ def test_file_pattern_for_TRAIL_file(self, reader_configs, filenames): ]) def test_load_calibration(self, reader_configs, fh_param, caplog, calibration, res_type): - """Test loading with counts,radiance,reflectance and bt.""" + """Test loading with counts, radiance, radiance_factor and bt.""" expected_res_n = {} - if calibration == "reflectance": + if calibration == "radiance_factor": + list_chan = fh_param["channels"]["solar"] + list_grid = fh_param["channels"]["solar_grid_type"] + expected_res_n["hdfi"] = 8 + expected_res_n["hrfi"] = 2 + # 8< v1.0 + elif calibration == "reflectance": list_chan = fh_param["channels"]["solar"] list_grid = fh_param["channels"]["solar_grid_type"] expected_res_n["hdfi"] = 8 expected_res_n["hrfi"] = 2 + # >8 v1.0 elif calibration == "brightness_temperature": list_chan = fh_param["channels"]["terran"] list_grid = fh_param["channels"]["terran_grid_type"] @@ -930,11 +960,17 @@ def test_drop_fill_value(self, reader_configs, fh_param): @pytest.mark.parametrize(("calibration", "channel", "resolution"), [ (calibration, channel, resolution) - for calibration in ["counts", "radiance", "brightness_temperature", "reflectance"] + for calibration in ["counts", + "radiance", + "brightness_temperature", + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"] for channel, resolution in generate_parameters(calibration) ]) def test_load_calibration_af(self, FakeFCIFileHandlerAF_fixture, reader_configs, channel, calibration, caplog): - """Test loading with counts,radiance,reflectance and bt for AF files.""" + """Test loading with counts, radiance, radiance_factor and bt for AF files.""" expected_res_n = 1 fh_param = FakeFCIFileHandlerAF_fixture type_ter = self._get_type_ter_AF(channel) @@ -1298,12 +1334,17 @@ def test_handling_bad_data_ir(self, reader_configs, caplog): calibration="brightness_temperature")], pad_data=False) assert "cannot produce brightness temperature" in caplog.text - def test_handling_bad_data_vis(self, reader_configs, caplog): + @pytest.mark.parametrize("calibration", [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor"]) + def test_handling_bad_data_vis(self, reader_configs, caplog, calibration): """Test handling of bad VIS data.""" with mocked_basefilehandler(FakeFCIFileHandlerWithBadData): reader = _get_reader_with_filehandlers(TEST_FILENAMES["fdhsi"], reader_configs) with caplog.at_level(logging.ERROR): reader.load([make_dataid( name="vis_06", - calibration="reflectance")], pad_data=False) - assert "cannot produce reflectance" in caplog.text + calibration=calibration)], pad_data=False) + assert f"cannot produce {calibration}" in caplog.text diff --git a/satpy/tests/reader_tests/test_fy4_base.py b/satpy/tests/reader_tests/test_fy4_base.py index 75df9def21..6200aa40bf 100644 --- a/satpy/tests/reader_tests/test_fy4_base.py +++ b/satpy/tests/reader_tests/test_fy4_base.py @@ -44,7 +44,7 @@ def test_badsensor(self): """Test case where we pass a bad sensor name, must be GHI or AGRI.""" fy4 = FY4Base(None, {"platform_id": "FY4A", "instrument": "FCI"}, self.file_type) with pytest.raises(ValueError, match="Unsupported sensor type: FCI"): - fy4.calibrate_to_reflectance(None, None, None) + fy4.calibrate_to_radiance_factor(None, None, None) with pytest.raises(ValueError, match="Error, sensor must be GHI or AGRI."): fy4.calibrate_to_bt(None, None, None) diff --git a/satpy/tests/reader_tests/test_ghi_l1.py b/satpy/tests/reader_tests/test_ghi_l1.py index 33991620cf..ccca895868 100644 --- a/satpy/tests/reader_tests/test_ghi_l1.py +++ b/satpy/tests/reader_tests/test_ghi_l1.py @@ -248,25 +248,58 @@ def test_ghi_channels_are_loaded_with_right_resolution(self): def test_ghi_all_bands_have_right_units(self): """Test all bands have the right units.""" + from satpy.tests.utils import make_dsq + reader = self._create_reader_for_resolutions(*RESOLUTION_LIST) - band_names = ALL_BAND_NAMES - res = reader.load(band_names) + dsqs = [] + for band in ALL_BAND_NAMES: + if band < "C07": + dsqs.append(make_dsq(name=band, calibration="radiance_factor")) + else: + dsqs.append(band) + + res = reader.load(dsqs) assert len(res) == 7 - for band_name in band_names: + for band_name in ALL_BAND_NAMES: assert res[band_name].shape == (2, 5) self._check_units(band_name, res) + # 8< v1.0 + def test_reflectance_warns(self): + """Test that requesting reflectance issues a warning.""" + from satpy.tests.utils import make_dsq + + reader = self._create_reader_for_resolutions(*RESOLUTION_LIST) + + dsqs = [] + for band in ALL_BAND_NAMES: + if band < "C07": + dsqs.append(make_dsq(name=band, calibration="reflectance")) + else: + dsqs.append(band) + + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = reader.load(dsqs) + # >8 v1.0 + def test_ghi_orbital_parameters_are_correct(self): """Test orbital parameters are set correctly.""" + from satpy.tests.utils import make_dsq + reader = self._create_reader_for_resolutions(*RESOLUTION_LIST) - band_names = ALL_BAND_NAMES - res = reader.load(band_names) + dsqs = [] + for band in ALL_BAND_NAMES: + if band < "C07": + dsqs.append(make_dsq(name=band, calibration="radiance_factor")) + else: + dsqs.append(band) + res = reader.load(dsqs) # check whether the data type of orbital_parameters is float - orbital_parameters = res[band_names[0]].attrs["orbital_parameters"] + orbital_parameters = res[ALL_BAND_NAMES[0]].attrs["orbital_parameters"] for attr in orbital_parameters: assert isinstance(orbital_parameters[attr], float) assert orbital_parameters["satellite_nominal_latitude"] == 0. @@ -283,7 +316,10 @@ def _check_keys_for_dsq(available_datasets, resolution_to_test): ds_q = make_dsq(name=band_name, resolution=resolution_to_test) res = get_key(ds_q, available_datasets, num_results=0, best=False) if band_name < "C07": - assert len(res) == 2 + # 8< v1.0 + assert len(res) == 3 + # >8 v1.0 + # assert len(res) == 2 else: assert len(res) == 3 @@ -331,11 +367,18 @@ def _create_reader_for_resolutions(self, *resolutions): @pytest.mark.parametrize("resolution_to_test", RESOLUTION_LIST) def test_ghi_for_one_resolution(self, resolution_to_test): """Test loading data when only one resolution is available.""" + from satpy.tests.utils import make_dsq reader = self._create_reader_for_resolutions(resolution_to_test) available_datasets = reader.available_dataset_ids band_names = CHANNELS_BY_RESOLUTION[resolution_to_test] + dsqs = [] + for band in band_names: + if band < "C07": + dsqs.append(make_dsq(name=band, calibration="radiance_factor")) + else: + dsqs.append(band) self._assert_which_channels_are_loaded(available_datasets, band_names, resolution_to_test) - res = reader.load(band_names) + res = reader.load(dsqs) assert len(res) == len(band_names) self._check_calibration_and_units(band_names, res) for band_name in band_names: @@ -352,7 +395,7 @@ def _check_calibration_and_units(self, band_names, result): @staticmethod def _check_units(band_name, result): if band_name <= "C06": - assert result[band_name].attrs["calibration"] == "reflectance" + assert result[band_name].attrs["calibration"] == "radiance_factor" else: assert result[band_name].attrs["calibration"] == "brightness_temperature" if band_name <= "C06": @@ -376,6 +419,9 @@ def _assert_which_channels_are_loaded(available_datasets, band_names, resolution ds_q = make_dsq(name=band_name, resolution=resolution_to_test) res = get_key(ds_q, available_datasets, num_results=0, best=False) if band_name < "C07": - assert len(res) == 2 + # 8< v1.0 + assert len(res) == 3 + # >8 v1.0 + # assert len(res) == 2 else: assert len(res) == 3 diff --git a/satpy/tests/reader_tests/test_goes_imager_hrit.py b/satpy/tests/reader_tests/test_goes_imager_hrit.py index 0cb0ff0959..48d77d5b45 100644 --- a/satpy/tests/reader_tests/test_goes_imager_hrit.py +++ b/satpy/tests/reader_tests/test_goes_imager_hrit.py @@ -151,7 +151,7 @@ def test_init(self): @mock.patch("satpy.readers.goes_imager_hrit.HRITFileHandler.get_dataset") def test_get_dataset(self, base_get_dataset): """Test get_dataset.""" - key = make_dataid(name="CH1", calibration="reflectance") + key = make_dataid(name="CH1", calibration="radiance_factor") base_get_dataset.return_value = DataArray(np.arange(25).reshape(5, 5)) res = self.reader.get_dataset(key, {}) expected = np.array([[np.nan, 0.097752, 0.195503, 0.293255, 0.391007], @@ -167,6 +167,17 @@ def test_get_dataset(self, base_get_dataset): "projection_latitude": 0.0, "projection_altitude": ALTITUDE} + # 8< v1.0 + @mock.patch("satpy.readers.goes_imager_hrit.HRITFileHandler.get_dataset") + def test_reflectance_warns(self, base_get_dataset): + """Test get_dataset.""" + import pytest + key = make_dataid(name="CH1", calibration="reflectance") + base_get_dataset.return_value = DataArray(np.arange(25).reshape(5, 5)) + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = self.reader.get_dataset(key, {}) + # >8 v1.0 + def test_get_area_def(self): """Test getting the area definition.""" from pyproj import CRS @@ -179,7 +190,7 @@ def test_get_area_def(self): "number_of_lines": 464, "number_of_columns": 2816 }) - dsid = make_dataid(name="CH1", calibration="reflectance", + dsid = make_dataid(name="CH1", calibration="radiance_factor", resolution=3000) area = self.reader.get_area_def(dsid) diff --git a/satpy/tests/reader_tests/test_goes_imager_nc_eum.py b/satpy/tests/reader_tests/test_goes_imager_nc_eum.py index 189b76d5cd..27e98b185f 100644 --- a/satpy/tests/reader_tests/test_goes_imager_nc_eum.py +++ b/satpy/tests/reader_tests/test_goes_imager_nc_eum.py @@ -112,8 +112,8 @@ def test_get_sector(self): assert sector == sector_ref, "Incorrect sector identification" -class GOESNCEUMFileHandlerReflectanceTest(unittest.TestCase): - """Testing the reflectances.""" +class GOESNCEUMFileHandlerVISTest(unittest.TestCase): + """Testing the radiance_factor.""" longMessage = True @@ -132,13 +132,13 @@ def setUp(self, xr_): # Mock file access to return a fake dataset. nrows = ncols = 300 - self.reflectance = 50 * np.ones((1, nrows, ncols)) # Vis channel + self.vis_data = 50 * np.ones((1, nrows, ncols)) # Vis channel self.lon = np.zeros((nrows, ncols)) # Dummy self.lat = np.repeat(np.linspace(-150, 150, nrows), ncols).reshape( nrows, ncols) # Includes invalid values to be masked xr_.open_dataset.return_value = xr.Dataset( - {"data": xr.DataArray(data=self.reflectance, dims=("time", "yc", "xc")), + {"data": xr.DataArray(data=self.vis_data, dims=("time", "yc", "xc")), "time": xr.DataArray(data=np.array([0], dtype="datetime64[ns]"), dims=("time",)), "bands": xr.DataArray(data=np.array([1]))}, @@ -153,12 +153,21 @@ def setUp(self, xr_): self.reader = GOESEUMNCFileHandler(filename="dummy", filename_info={}, filetype_info={}, geo_data=geo_data) - def test_get_dataset_reflectance(self): - """Test getting the reflectance.""" + def test_get_dataset_vis(self): + """Test getting the visible data.""" for ch in self.channels: if is_vis_channel(ch): - refl = self.reader.get_dataset( - key=make_dataid(name=ch, calibration="reflectance"), info={}) + data = self.reader.get_dataset( + key=make_dataid(name=ch, calibration="radiance_factor"), info={}) # ... this only compares the valid (unmasked) elements - assert np.all(self.reflectance == refl.to_masked_array()), \ - f"get_dataset() returns invalid reflectance for channel {ch}" + assert np.all(self.vis_data == data.to_masked_array()), \ + f"get_dataset() returns invalid radiance_factor for channel {ch}" + + # 8< v1.0 + def test_reflectance_warns(self): + """Test that requesting reflectance calibration issues a warning.""" + import pytest + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = self.reader.get_dataset( + key=make_dataid(name="00_7", calibration="reflectance"), info={}) + # >8 v1.0 diff --git a/satpy/tests/reader_tests/test_goes_imager_nc_noaa.py b/satpy/tests/reader_tests/test_goes_imager_nc_noaa.py index 1049d814dd..0941c436de 100644 --- a/satpy/tests/reader_tests/test_goes_imager_nc_noaa.py +++ b/satpy/tests/reader_tests/test_goes_imager_nc_noaa.py @@ -136,7 +136,7 @@ def test_calibrate_vis(self): refl = self.reader._calibrate_vis(radiance=rad, k=self.coefs["00_7"]["k"]) assert np.allclose(refl.data, refl_expected.data, atol=1e-06), \ - "Incorrect conversion from radiance to reflectance" + "Incorrect conversion from radiance to radiance_factor" def test_calibrate_ir(self): """Test IR calibration.""" @@ -358,7 +358,7 @@ def setUp(self, xr_): # Mock file access to return a fake dataset. Choose a medium count value # (100) to avoid elements being masked due to invalid - # radiance/reflectance/BT + # radiance/radiance_factor/BT nrows = ncols = 300 self.counts = 100 * 32 * np.ones((1, nrows, ncols)) # emulate 10-bit self.lon = np.zeros((nrows, ncols)) # Dummy @@ -422,12 +422,12 @@ def test_get_dataset_counts(self): def test_get_dataset_masks(self): """Test whether data and coordinates are masked consistently.""" # Requires that no element has been masked due to invalid - # radiance/reflectance/BT (see setUp()). + # radiance/radiance_factor/BT (see setUp()). lon = self.reader.get_dataset(key=make_dataid(name="longitude"), info={}) lon_mask = lon.to_masked_array().mask for ch in self.channels: - for calib in ("counts", "radiance", "reflectance", + for calib in ("counts", "radiance", "radiance_factor", "brightness_temperature"): try: data = self.reader.get_dataset( @@ -440,18 +440,22 @@ def test_get_dataset_masks(self): def test_get_dataset_invalid(self): """Test handling of invalid calibrations.""" + from satpy.dataset.dataid import ValueList, default_id_keys_config + cal_enum = ValueList("Calibration", " ".join(default_id_keys_config["calibration"]["enum"])) # VIS -> BT args = dict(key=make_dataid(name="00_7", calibration="brightness_temperature"), info={}) - with pytest.raises(ValueError, match="Cannot calibrate VIS channel to 2"): + with pytest.raises(ValueError, + match=f"Cannot calibrate VIS channel to {cal_enum.brightness_temperature.value}"): self.reader.get_dataset(**args) - # IR -> Reflectance + # IR -> radiance_factor args = dict(key=make_dataid(name="10_7", - calibration="reflectance"), + calibration="radiance_factor"), info={}) - with pytest.raises(ValueError, match="Cannot calibrate IR channel to 1"): + with pytest.raises(ValueError, + match=f"Cannot calibrate IR channel to {cal_enum.radiance_factor.value}"): self.reader.get_dataset(**args) # Unsupported calibration @@ -460,12 +464,18 @@ def test_get_dataset_invalid(self): calibration="invalid"), info={}) + def test_reflectance_warns(self): + """Test that asking for reflectance calibration issues a warning.""" + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = self.reader.get_dataset(key=make_dataid(name="00_7", calibration="reflectance"), + info={}) + def test_calibrate(self): """Test whether the correct calibration methods are called.""" for ch in self.channels: if is_vis_channel(ch): calibs = {"radiance": "_viscounts2radiance", - "reflectance": "_calibrate_vis"} + "radiance_factor": "_calibrate_vis"} else: calibs = {"radiance": "_ircounts2radiance", "brightness_temperature": "_calibrate_ir"} diff --git a/satpy/tests/reader_tests/test_insat3d_img_l1b_h5.py b/satpy/tests/reader_tests/test_insat3d_img_l1b_h5.py index 3b100415a4..3383ebf5df 100644 --- a/satpy/tests/reader_tests/test_insat3d_img_l1b_h5.py +++ b/satpy/tests/reader_tests/test_insat3d_img_l1b_h5.py @@ -213,7 +213,7 @@ def test_insat3d_datatree_has_global_attributes(insat_filename): @pytest.mark.parametrize(("calibration", "expected_values"), [("counts", values_1km), ("radiance", mask_array(values_1km * 2)), - ("reflectance", mask_array(values_1km * 3))]) + ("radiance_factor", mask_array(values_1km * 3))]) def test_filehandler_returns_data_array(insat_filehandler, calibration, expected_values): """Test that the filehandler can get dataarrays.""" fh = insat_filehandler @@ -225,12 +225,19 @@ def test_filehandler_returns_data_array(insat_filehandler, calibration, expected assert darr.dims == ("y", "x") +def test_reflectance_warns(insat_filehandler): + """Test that asking for reflectance issues a warning.""" + ds_id = make_dataid(name="VIS", resolution=1000, calibration="reflectance") + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = insat_filehandler.get_dataset(ds_id, {}) + + def test_filehandler_returns_masked_data_in_space(insat_filehandler): """Test that the filehandler masks space pixels.""" fh = insat_filehandler ds_info = None - ds_id = make_dataid(name="VIS", resolution=1000, calibration="reflectance") + ds_id = make_dataid(name="VIS", resolution=1000, calibration="radiance_factor") darr = fh.get_dataset(ds_id, ds_info) assert np.isnan(darr[0, 0]) @@ -240,7 +247,7 @@ def test_insat3d_has_orbital_parameters(insat_filehandler): fh = insat_filehandler ds_info = None - ds_id = make_dataid(name="VIS", resolution=1000, calibration="reflectance") + ds_id = make_dataid(name="VIS", resolution=1000, calibration="radiance_factor") darr = fh.get_dataset(ds_id, ds_info) assert "orbital_parameters" in darr.attrs @@ -295,7 +302,7 @@ def test_filehandler_has_start_and_end_time(insat_filehandler): def test_satpy_load_array(insat_filename): """Test that satpy can load the VIS array.""" scn = Scene(filenames=[os.fspath(insat_filename)], reader="insat3d_img_l1b_h5") - scn.load(["VIS"]) + scn.load(["VIS"], calibration="radiance_factor") expected = mask_array(values_1km * 3).squeeze() np.testing.assert_allclose(scn["VIS"], expected) diff --git a/satpy/tests/reader_tests/test_mersi_l1b.py b/satpy/tests/reader_tests/test_mersi_l1b.py index f01f0443d2..cc91da3480 100644 --- a/satpy/tests/reader_tests/test_mersi_l1b.py +++ b/satpy/tests/reader_tests/test_mersi_l1b.py @@ -671,6 +671,7 @@ class TestMERSIRML1B(MERSIL1BTester): def test_500m_resolution(self): """Test loading data when all resolutions are available.""" from satpy.readers.core.loading import load_reader + from satpy.tests.utils import make_dataid filenames = self.filenames_500m reader = load_reader(self.reader_configs) files = reader.select_files_from_pathnames(filenames) @@ -679,13 +680,17 @@ def test_500m_resolution(self): # Make sure we have some files assert reader.file_handlers - res = reader.load(["1", "2", "4", "7"]) + ds_ids = [] + for band_name in ["1", "2", "4"]: + ds_ids.append(make_dataid(name=band_name, calibration="radiance_factor")) + ds_ids.append(make_dataid(name="7")) + res = reader.load(ds_ids) assert len(res) == 4 - assert res["4"].shape == (2 * 10, 4096) - assert res["1"].attrs["calibration"] == "reflectance" + assert res["1"].shape == (2 * 10, 4096) + assert res["1"].attrs["calibration"] == "radiance_factor" assert res["1"].attrs["units"] == "%" assert res["2"].shape == (2 * 10, 4096) - assert res["2"].attrs["calibration"] == "reflectance" + assert res["2"].attrs["calibration"] == "radiance_factor" assert res["2"].attrs["units"] == "%" assert res["7"].shape == (20, 2048 * 2) assert res["7"].attrs["calibration"] == "brightness_temperature" @@ -713,3 +718,17 @@ def test_rad_calib(self): assert res[band_name].shape == (20, 4096) assert res[band_name].attrs["calibration"] == "radiance" assert res[band_name].attrs["units"] == "mW/ (m2 cm-1 sr)" + + # 8< v1.0 + def test_reflectance_warns(self): + """Test that loading reflectances issue a warning.""" + from satpy.readers.core.loading import load_reader + from satpy.tests.utils import make_dataid + filenames = self.filenames_500m + reader = load_reader(self.reader_configs) + files = reader.select_files_from_pathnames(filenames) + reader.create_filehandlers(files) + + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = reader.load([make_dataid(name="1", calibration="reflectance")]) + # >8 v1.0 diff --git a/satpy/tests/reader_tests/test_msi_ec_l1c.py b/satpy/tests/reader_tests/test_msi_ec_l1c.py index 5c2bef787c..f2b8fb6f7a 100644 --- a/satpy/tests/reader_tests/test_msi_ec_l1c.py +++ b/satpy/tests/reader_tests/test_msi_ec_l1c.py @@ -74,18 +74,23 @@ def test_get_pixvalues(msi_ec_l1c_dummy_file): res = Scene(reader="msi_l1c_earthcare", filenames=[msi_ec_l1c_dummy_file]) available_datasets = list(res.available_dataset_ids()) - assert len(available_datasets) == 27 - - res.load(["VIS", "VNIR", "TIR1", "TIR3", "solar_azimuth_angle", "land_water_mask"]) + # 8< v1.0 + assert len(available_datasets) == 31 + # >8 v1.0 + # assert len(available_datasets) == 27 + + vis_id = make_dataid(name="VIS", calibration="radiance_factor") + vnir_id = make_dataid(name="VNIR", calibration="radiance_factor") + res.load([vis_id, vnir_id, "TIR1", "TIR3", "solar_azimuth_angle", "land_water_mask"]) #assert len(res) == 6 with pytest.raises(KeyError): res["TIR2"] with pytest.raises(KeyError): res["SWIR1"] - assert res["VIS"].shape == (20, N_COLS) - assert res["VIS"].attrs["calibration"] == "reflectance" - assert res["VIS"].attrs["units"] == "%" + assert res[vis_id].shape == (20, N_COLS) + assert res[vis_id].attrs["calibration"] == "radiance_factor" + assert res[vis_id].attrs["units"] == "%" assert res["TIR1"].shape == (20, N_COLS) assert res["TIR1"].attrs["calibration"] == "brightness_temperature" @@ -117,7 +122,17 @@ def test_calibration(msi_ec_l1c_dummy_file): assert res["VIS"].attrs["units"] == "W m-2 sr-1" assert np.all(np.array(res["VIS"].data) == 1) - res.load([make_dataid(name="VNIR", calibration="reflectance")]) - assert res["VNIR"].attrs["calibration"] == "reflectance" + res.load([make_dataid(name="VNIR", calibration="radiance_factor")]) + assert res["VNIR"].attrs["calibration"] == "radiance_factor" assert res["VNIR"].attrs["units"] == "%" assert np.all(np.array(res["VNIR"].data) == 1 * np.pi * 100 / SOL_IRRAD[1]) + + +# 8< v1.0 +def test_reflectance_warns(msi_ec_l1c_dummy_file): + """Test that asking for reflectances issue a warning.""" + res = Scene(reader="msi_l1c_earthcare", filenames=[msi_ec_l1c_dummy_file]) + + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + res.load([make_dataid(name="VIS", calibration="reflectance")]) +# >8 v1.0 diff --git a/satpy/tests/reader_tests/test_msu_gsa_l1b.py b/satpy/tests/reader_tests/test_msu_gsa_l1b.py index 1ff0c11b12..c36bf49e68 100644 --- a/satpy/tests/reader_tests/test_msu_gsa_l1b.py +++ b/satpy/tests/reader_tests/test_msu_gsa_l1b.py @@ -169,13 +169,19 @@ def test_nocounts(self): self.reader.load(ds_ids) def test_vis_cal(self): - """Test that we can retrieve VIS data as both radiance and reflectance.""" + """Test that we can retrieve VIS data as both radiance and radiance_factor.""" ds_ids = [make_dataid(name="C01", calibration="radiance")] res = self.reader.load(ds_ids) rad = res["C01"].data - ds_ids = [make_dataid(name="C01", calibration="reflectance")] + ds_ids = [make_dataid(name="C01", calibration="radiance_factor")] res = self.reader.load(ds_ids) refl = res["C01"].data # Check the RAD->REFL conversion np.testing.assert_allclose(100 * np.pi * rad / float(SOLCONST), refl) + + def test_reflectance_warns(self): + """Test that a warning is issued if reflectance is requested.""" + ds_ids = [make_dataid(name="C01", calibration="reflectance")] + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = self.reader.load(ds_ids) diff --git a/satpy/tests/reader_tests/test_scmi.py b/satpy/tests/reader_tests/test_scmi.py index 52d12304fa..ace4ebc7c9 100644 --- a/satpy/tests/reader_tests/test_scmi.py +++ b/satpy/tests/reader_tests/test_scmi.py @@ -74,7 +74,7 @@ def setUp(self, xr_): "scale_factor": 0.5, "add_offset": -1., "_FillValue": 20, - "standard_name": "toa_bidirectional_reflectance", + "standard_name": "product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance", # noqa }, coords={ "time": time, @@ -114,18 +114,28 @@ def test_data_load(self): """Test data loading.""" from satpy.tests.utils import make_dataid res = self.reader.get_dataset( - make_dataid(name="C05", calibration="reflectance"), {}) + make_dataid(name="C05", calibration="radiance_factor"), {}) np.testing.assert_allclose(res.data, self.expected_rad, equal_nan=True) assert "scale_factor" not in res.attrs assert "_FillValue" not in res.attrs - assert res.attrs["standard_name"] == "toa_bidirectional_reflectance" + assert res.attrs["standard_name"] == "product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance" # noqa assert "orbital_parameters" in res.attrs orb_params = res.attrs["orbital_parameters"] assert orb_params["projection_longitude"] == -90.0 assert orb_params["projection_latitude"] == 0.0 assert orb_params["projection_altitude"] == 35785831.0 + # 8< v1.0 + def test_load_reflectance_warns(self): + """Test that using reflectance as calibration issues a warning.""" + from satpy.tests.utils import make_dataid + + with pytest.warns(DeprecationWarning, match="Reflectance is not a correct calibration"): + _ = self.reader.get_dataset( + make_dataid(name="C05", calibration="reflectance"), {}) + # >8 v1.0 + class TestSCMIFileHandlerArea(unittest.TestCase): """Test the SCMIFileHandler's area creation.""" diff --git a/satpy/tests/reader_tests/test_seviri_l1b_calibration.py b/satpy/tests/reader_tests/test_seviri_l1b_calibration.py index 57c0e629b6..511f8db30e 100644 --- a/satpy/tests/reader_tests/test_seviri_l1b_calibration.py +++ b/satpy/tests/reader_tests/test_seviri_l1b_calibration.py @@ -276,6 +276,7 @@ class TestFileHandlerCalibrationBase: dims=("y", "x") ) }, + # 8< v1.0 "reflectance": { "NOMINAL": xr.DataArray( [[np.nan, 41.88985], @@ -287,6 +288,19 @@ class TestFileHandlerCalibrationBase: [4607.8843, 11822.249]], dims=("y", "x") ) + }, + # >8 v1.0 + "radiance_factor": { + "NOMINAL": xr.DataArray( + [[np.nan, 41.88985], + [460.7884, 1182.2247]], + dims=("y", "x") + ), + "EXTERNAL": xr.DataArray( + [[np.nan, 418.89853], + [4607.8843, 11822.249]], + dims=("y", "x") + ) } }, "IR_108": { @@ -357,6 +371,7 @@ class TestFileHandlerCalibrationBase: dims=("y", "x") ) }, + # 8< v1.0 "reflectance": { "NOMINAL": xr.DataArray( [[np.nan, 415.26767], @@ -368,6 +383,19 @@ class TestFileHandlerCalibrationBase: [1903.31, 4883.2397]], dims=("y", "x") ) + }, + # >8 v1.0 + "radiance_factor": { + "NOMINAL": xr.DataArray( + [[np.nan, 415.26767], + [4567.944, 11719.775]], + dims=("y", "x") + ), + "EXTERNAL": xr.DataArray( + [[np.nan, 173.02817], + [1903.31, 4883.2397]], + dims=("y", "x") + ) } } } diff --git a/satpy/tests/reader_tests/test_seviri_l1b_hrit.py b/satpy/tests/reader_tests/test_seviri_l1b_hrit.py index 15167af040..2ed59e674e 100644 --- a/satpy/tests/reader_tests/test_seviri_l1b_hrit.py +++ b/satpy/tests/reader_tests/test_seviri_l1b_hrit.py @@ -79,7 +79,7 @@ def test_read_hrv_band(self, memmap): @mock.patch("satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler.calibrate") def test_get_dataset(self, calibrate, parent_get_dataset): """Test getting the hrv dataset.""" - key = make_dataid(name="HRV", calibration="reflectance") + key = make_dataid(name="HRV", calibration="radiance_factor") info = setup.get_fake_dataset_info() parent_get_dataset.return_value = mock.MagicMock() @@ -101,7 +101,7 @@ def test_get_dataset(self, calibrate, parent_get_dataset): @mock.patch("satpy.readers.seviri_l1b_hrit.HRITMSGFileHandler.calibrate") def test_get_dataset_non_fill(self, calibrate, parent_get_dataset): """Test getting a non-filled hrv dataset.""" - key = make_dataid(name="HRV", calibration="reflectance") + key = make_dataid(name="HRV", calibration="radiance_factor") key.name = "HRV" info = setup.get_fake_dataset_info() self.reader.fill_hrv = False @@ -200,7 +200,7 @@ def test_get_dataset(self, calibrate, parent_get_dataset): parent_get_dataset.return_value = mock.MagicMock() calibrate.return_value = data - key = make_dataid(name="VIS006", calibration="reflectance") + key = make_dataid(name="VIS006", calibration="radiance_factor") info = setup.get_fake_dataset_info() res = self.reader.get_dataset(key, info) @@ -240,7 +240,7 @@ def test_get_dataset_without_masking_bad_scan_lines(self, calibrate, parent_get_ parent_get_dataset.return_value = mock.MagicMock() calibrate.return_value = data - key = make_dataid(name="VIS006", calibration="reflectance") + key = make_dataid(name="VIS006", calibration="radiance_factor") info = setup.get_fake_dataset_info() self.reader.mask_bad_quality_scan_lines = False res = self.reader.get_dataset(key, info) @@ -262,7 +262,7 @@ def test_get_dataset_without_masking_bad_scan_lines(self, calibrate, parent_get_ def test_get_dataset_with_raw_metadata(self, calibrate, parent_get_dataset): """Test getting the dataset.""" calibrate.return_value = self._get_fake_data() - key = make_dataid(name="VIS006", calibration="reflectance") + key = make_dataid(name="VIS006", calibration="radiance_factor") info = setup.get_fake_dataset_info() self.reader.include_raw_metadata = True res = self.reader.get_dataset(key, info) @@ -445,10 +445,16 @@ def file_handler(self): ("VIS006", "counts", "NOMINAL", False), ("VIS006", "radiance", "NOMINAL", False), ("VIS006", "radiance", "GSICS", False), + # 8< v1.0 ("VIS006", "reflectance", "NOMINAL", False), + # >8 v1.0 + ("VIS006", "radiance_factor", "NOMINAL", False), # VIS channel, external coefficients (mode should have no effect) ("VIS006", "radiance", "GSICS", True), + # 8< v1.0 ("VIS006", "reflectance", "NOMINAL", True), + # >8 v1.0 + ("VIS006", "radiance_factor", "NOMINAL", True), # IR channel, internal coefficients ("IR_108", "counts", "NOMINAL", False), ("IR_108", "radiance", "NOMINAL", False), @@ -458,14 +464,20 @@ def file_handler(self): # IR channel, external coefficients (mode should have no effect) ("IR_108", "radiance", "NOMINAL", True), ("IR_108", "brightness_temperature", "GSICS", True), - # HRV channel, internal coefficiens + # HRV channel, internal coefficients ("HRV", "counts", "NOMINAL", False), ("HRV", "radiance", "NOMINAL", False), ("HRV", "radiance", "GSICS", False), + # 8< v1.0 ("HRV", "reflectance", "NOMINAL", False), + # >8 v1.0 + ("HRV", "radiance_factor", "NOMINAL", False), # HRV channel, external coefficients (mode should have no effect) ("HRV", "radiance", "GSICS", True), + # 8< v1.0 ("HRV", "reflectance", "NOMINAL", True), + # >8 v1.0 + ("HRV", "radiance_factor", "NOMINAL", True), ] ) def test_calibrate( diff --git a/satpy/tests/reader_tests/test_seviri_l1b_native.py b/satpy/tests/reader_tests/test_seviri_l1b_native.py index 5765024cc5..49da939a3d 100644 --- a/satpy/tests/reader_tests/test_seviri_l1b_native.py +++ b/satpy/tests/reader_tests/test_seviri_l1b_native.py @@ -844,10 +844,16 @@ def file_handler(self): ("VIS006", "counts", "NOMINAL", False), ("VIS006", "radiance", "NOMINAL", False), ("VIS006", "radiance", "GSICS", False), + # 8< v1.0 ("VIS006", "reflectance", "NOMINAL", False), + # >8 v1.0 + ("VIS006", "radiance_factor", "NOMINAL", False), # VIS channel, external coefficients (mode should have no effect) ("VIS006", "radiance", "GSICS", True), + # 8< v1.0 ("VIS006", "reflectance", "NOMINAL", True), + # >8 v1.0 + ("VIS006", "radiance_factor", "NOMINAL", True), # IR channel, internal coefficients ("IR_108", "counts", "NOMINAL", False), ("IR_108", "radiance", "NOMINAL", False), @@ -857,14 +863,20 @@ def file_handler(self): # IR channel, external coefficients (mode should have no effect) ("IR_108", "radiance", "NOMINAL", True), ("IR_108", "brightness_temperature", "GSICS", True), - # HRV channel, internal coefficiens + # HRV channel, internal coefficients ("HRV", "counts", "NOMINAL", False), ("HRV", "radiance", "NOMINAL", False), ("HRV", "radiance", "GSICS", False), + # 8< v1.0 ("HRV", "reflectance", "NOMINAL", False), + # >8 v1.0 + ("HRV", "radiance_factor", "NOMINAL", False), # HRV channel, external coefficients (mode should have no effect) ("HRV", "radiance", "GSICS", True), + # 8< v1.0 ("HRV", "reflectance", "NOMINAL", True), + # >8 v1.0 + ("HRV", "radiance_factor", "NOMINAL", True), ] ) def test_calibrate( @@ -1302,7 +1314,8 @@ def test_read_physical_seviri_nat_file(full_path): scene = scene_from_physical_seviri_nat_file(full_path) assert scene.sensor_names == {"seviri"} - assert len(scene.available_dataset_ids()) == 36 + # WARN: v1.0 expect 36 + assert len(scene.available_dataset_ids()) == 40 assert set(scene.available_dataset_names()) == set(CHANNEL_INDEX_LIST) with warnings.catch_warnings(): diff --git a/satpy/tests/reader_tests/test_seviri_l1b_nc.py b/satpy/tests/reader_tests/test_seviri_l1b_nc.py index cbd66b10be..1426f4d551 100644 --- a/satpy/tests/reader_tests/test_seviri_l1b_nc.py +++ b/satpy/tests/reader_tests/test_seviri_l1b_nc.py @@ -218,10 +218,16 @@ def file_handler(self, counts, h5netcdf): # VIS channel, internal coefficients ("VIS006", "counts", False), ("VIS006", "radiance", False), + # 8< v1.0 ("VIS006", "reflectance", False), + # >8 v1.0 + ("VIS006", "radiance_factor", False), # VIS channel, external coefficients ("VIS006", "radiance", True), + # 8< v1.0 ("VIS006", "reflectance", True), + # >8 v1.0 + ("VIS006", "radiance_factor", True), # IR channel, internal coefficients ("IR_108", "counts", False), ("IR_108", "radiance", False), @@ -287,8 +293,12 @@ def test_mask_bad_quality(self, file_handler): @pytest.mark.parametrize( ("channel", "calibration", "mask_bad_quality_scan_lines"), [ + # 8< v1.0 ("VIS006", "reflectance", True), ("VIS006", "reflectance", False), + # >8 v1.0 + ("VIS006", "radiance_factor", True), + ("VIS006", "radiance_factor", False), ("IR_108", "brightness_temperature", True) ] ) diff --git a/satpy/tests/reader_tests/test_slstr_l1b.py b/satpy/tests/reader_tests/test_slstr_l1b.py index 7cac036f2a..edd48cc632 100644 --- a/satpy/tests/reader_tests/test_slstr_l1b.py +++ b/satpy/tests/reader_tests/test_slstr_l1b.py @@ -39,6 +39,7 @@ "calibration": { "enum": [ "reflectance", + "radiance_factor", "brightness_temperature", "radiance", "counts" @@ -267,6 +268,7 @@ def test_radiance_calibration(self, xr_): np.testing.assert_allclose(data.values, self.base_data * CHANCALIB_FACTORS["S5_nadir"]) + # 8< v1.0 @mock.patch("satpy.readers.slstr_l1b.xr") @mock.patch("satpy.readers.slstr_l1b.da") def test_reflectance_calibration(self, da_, xr_): @@ -281,6 +283,22 @@ def test_reflectance_calibration(self, da_, xr_): data = test.get_dataset(ds_id, dict(filename_info, **{"file_key": "S5"})) assert data.units == "%" np.testing.assert_allclose(data.values, self.rad * np.pi) + # >8 v1.0 + + @mock.patch("satpy.readers.slstr_l1b.xr") + @mock.patch("satpy.readers.slstr_l1b.da") + def test_radiance_factor_calibration(self, da_, xr_): + """Test reflectance calibration.""" + xr_.open_dataset.return_value = self.fake_dataset + da_.map_blocks.return_value = self.rad / 100. + filename_info = {"mission_id": "S3A", "dataset_name": "S5", + "start_time": 0, "end_time": 0, + "stripe": "a", "view": "n"} + ds_id = make_dataid(name="S5", calibration="radiance_factor", stripe="a", view="nadir") + test = NCSLSTR1B("somedir/S1_radiance_an.nc", filename_info, "c") + data = test.get_dataset(ds_id, dict(filename_info, **{"file_key": "S5"})) + assert data.units == "%" + np.testing.assert_allclose(data.values, self.rad * np.pi) def test_cal_rad(self): """Test the radiance to reflectance converter.""" diff --git a/satpy/tests/reader_tests/test_viirs_l1b.py b/satpy/tests/reader_tests/test_viirs_l1b.py index 19317a0df1..48eb9d15f1 100644 --- a/satpy/tests/reader_tests/test_viirs_l1b.py +++ b/satpy/tests/reader_tests/test_viirs_l1b.py @@ -244,7 +244,12 @@ def test_load_every_m_band_refl(self): "M11"]) assert len(datasets) == (11 if self.has_reflectance_bands else 0) for v in datasets.values(): - assert v.attrs["calibration"] == "reflectance" + assert v.attrs["calibration"] in [ + # 8< v1.0 + "reflectance", + # >8 v1.0 + "radiance_factor" + ] assert v.attrs["units"] == "%" assert v.attrs["rows_per_scan"] == 2 assert v.attrs["area"].lons.attrs["rows_per_scan"] == 2 diff --git a/satpy/tests/reader_tests/test_virr_l1b.py b/satpy/tests/reader_tests/test_virr_l1b.py index f065ba8804..8a166fb7c1 100644 --- a/satpy/tests/reader_tests/test_virr_l1b.py +++ b/satpy/tests/reader_tests/test_virr_l1b.py @@ -140,10 +140,17 @@ def _fy3_helper(self, platform_name, reader, Emissive_units): assert datetime.datetime(2018, 12, 25, 21, 47, 28, 254000) == attributes["end_time"] assert (19, 20) == datasets[dataset["name"]].shape assert ("y", "x") == datasets[dataset["name"]].dims + # 8< v1.0 if dataset["name"] in ["1", "2", "6", "7", "8", "9", "10"]: self._band_helper(attributes, "%", "reflectance", "toa_bidirectional_reflectance", "virr_l1b", 7, 1000) + # >8 v1.0 + # WARN: v1.0 uncomment this + # if dataset["name"] in ["1", "2", "6", "7", "8", "9", "10"]: + # self._band_helper(attributes, "%", "radiance_factor", + # "product_of_cosine_solar_zenith_angle_and_toa_bidirectional_reflectance", + # "virr_l1b", 7, 1000) elif dataset["name"] in ["3", "4", "5"]: self._band_helper(attributes, Emissive_units, "brightness_temperature", "toa_brightness_temperature", "virr_l1b", 3, 1000)