Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/satctl/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@
import os
from importlib.resources import files

from satctl.sources import create_source, list_sources

# override the satpy config path, adding our own custom yaml configs
# it is non-destructive, i.e. if the variable is already set, we append
satpy_config_path = os.getenv("SATPY_CONFIG_PATH", None)
Expand All @@ -40,4 +38,7 @@
satpy_config_path = str([satpy_config_path, local_config_path])
os.environ["SATPY_CONFIG_PATH"] = satpy_config_path

# need to delay the import, otherwise satpy messes with the env
from satctl.sources import create_source, list_sources # noqa: E402

__all__ = ["create_source", "list_sources"]
365 changes: 365 additions & 0 deletions src/satctl/_config_data/satpy/readers/slstr_l1b_rev4.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,365 @@

reader:
name: slstr_l1b_004
short_name: SLSTR l1b (rev.004)
long_name: Sentinel-3 A and B SLSTR L1B, revision 4
description: NC Reader for SLSTR data after Jan 2020
status: Alpha
supports_fsspec: false
sensors: [slstr]
default_channels: []
reader: !!python/name:satpy.readers.core.yaml_reader.FileYAMLReader

data_identification_keys:
name:
required: true
wavelength:
type: !!python/name:satpy.dataset.dataid.WavelengthRange
resolution:
transitive: false
calibration:
enum:
- reflectance
- brightness_temperature
- radiance
- counts
transitive: true
view:
enum:
- nadir
- oblique
transitive: true
stripe:
enum:
- a
- b
- i
- f
modifiers:
default: []
type: !!python/name:satpy.dataset.dataid.ModifierTuple

coord_identification_keys:
name:
required: true
resolution:
transitive: false
view:
enum:
- nadir
- oblique
transitive: true
stripe:
enum:
- a
- b
- i
- 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']

datasets:
longitude:
name: longitude
resolution: [500, 1000]
view: [nadir, oblique]
stripe: [a, b, i, f]
file_type: esa_geo
file_key: longitude_{stripe:1s}{view:1s}
standard_name: longitude
units: degree

latitude:
name: latitude
resolution: [500, 1000]
view: [nadir, oblique]
stripe: [a, b, i, f]
file_type: esa_geo
file_key: latitude_{stripe:1s}{view:1s}
standard_name: latitude
units: degree

elevation:
name: elevation
resolution: [500, 1000]
view: [nadir, oblique]
stripe: [a, b, i, f]
file_type: esa_geo
file_key: elevation_{stripe:1s}{view:1s}
standard_name: elevation
units: m

# The channels S1-S3 are available in nadir (default) and oblique view.
S1:
name: S1
sensor: slstr
wavelength: [0.545,0.555,0.565]
resolution: 500
view: [nadir, oblique]
stripe: [a, b]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
coordinates: [longitude, latitude]
file_type: esa_l1b_refl

S2:
name: S2
sensor: slstr
wavelength: [0.649, 0.659, 0.669]
resolution: 500
view: [nadir, oblique]
stripe: [a, b]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
coordinates: [longitude, latitude]
file_type: esa_l1b_refl

S3:
name: S3
sensor: slstr
wavelength: [0.855, 0.865, 0.875]
resolution: 500
view: [nadir, oblique]
stripe: [a, b]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
coordinates: [longitude, latitude]
file_type: esa_l1b_refl

# The channels S4-S6 are available in nadir (default) and oblique view and for both in the
# a,b and c stripes.
S4:
name: S4
sensor: slstr
wavelength: [1.3675, 1.375, 1.36825]
resolution: 500
view: [nadir, oblique]
stripe: [a, b]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
coordinates: [longitude, latitude]
file_type: esa_l1b_refl

S5:
name: S5
sensor: slstr
wavelength: [1.58, 1.61, 1.64]
resolution: 500
view: [nadir, oblique]
stripe: [a, b]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
coordinates: [longitude, latitude]
file_type: esa_l1b_refl

S6:
name: S6
sensor: slstr
wavelength: [2.225, 2.25, 2.275]
resolution: 500
view: [nadir, oblique]
stripe: [a, b]
calibration:
reflectance:
standard_name: toa_bidirectional_reflectance
units: "%"
radiance:
standard_name: toa_outgoing_radiance_per_unit_wavelength
units: W m-2 um-1 sr-1
coordinates: [longitude, latitude]
file_type: esa_l1b_refl

# The channels S7-S9, F1 and F2 are available in nadir (default) and oblique view.
S7:
name: S7
sensor: slstr
wavelength: [3.55, 3.74, 3.93]
resolution: 1000
view: [nadir, oblique]
stripe: i
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: "K"
coordinates: [longitude, latitude]
file_type: esa_l1b_tir

S8:
name: S8
sensor: slstr
wavelength: [10.4, 10.85, 11.3]
resolution: 1000
view: [nadir, oblique]
stripe: i
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: "K"
coordinates: [longitude, latitude]
file_type: esa_l1b_tir

S9:
name: S9
sensor: slstr
wavelength: [11.57, 12.0225, 12.475]
resolution: 1000
view: [nadir, oblique]
stripe: i
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: "K"
coordinates: [longitude, latitude]
file_type: esa_l1b_tir

F1:
name: F1
sensor: slstr
wavelength: [3.55, 3.74, 3.93]
resolution: 1000
view: [nadir, oblique]
stripe: f
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: "K"
coordinates: [longitude, latitude]
file_type: esa_l1b_tir

F2:
name: F2
sensor: slstr
wavelength: [10.4, 10.85, 11.3]
resolution: 1000
view: [nadir, oblique]
stripe: i
calibration:
brightness_temperature:
standard_name: toa_brightness_temperature
units: "K"
coordinates: [longitude, latitude]
file_type: esa_l1b_tir


solar_zenith_angle:
name: solar_zenith_angle
sensor: slstr
resolution: [500, 1000]
coordinates: [longitude, latitude]
view: [nadir, oblique]
standard_name: solar_zenith_angle
file_type: esa_angles
file_key: solar_zenith_t{view:1s}

solar_azimuth_angle:
name: solar_azimuth_angle
sensor: slstr
resolution: [500, 1000]
coordinates: [longitude, latitude]
view: [nadir, oblique]
standard_name: solar_azimuth_angle
file_type: esa_angles
file_key: solar_azimuth_t{view:1s}

satellite_zenith_angle:
name: satellite_zenith_angle
sensor: slstr
resolution: [500, 1000]
coordinates: [longitude, latitude]
view: [nadir, oblique]
standard_name: satellite_zenith_angle
file_type: esa_angles
file_key: sat_zenith_t{view:1s}

satellite_azimuth_angle:
name: satellite_azimuth_angle
sensor: slstr
resolution: [500, 1000]
coordinates: [longitude, latitude]
view: [nadir, oblique]
standard_name: satellite_azimuth_angle
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.
cloud:
name: cloud
sensor: slstr
resolution: [500, 1000]
coordinates: [longitude, latitude]
view: [nadir, oblique]
stripe: [a, b, i, f]
file_type: esa_l1b_flag
file_key: cloud_{stripe:1s}{view:1s}

confidence:
name: confidence
sensor: slstr
resolution: [500, 1000]
coordinates: [longitude, latitude]
view: [nadir, oblique]
stripe: [a, b, i, f]
file_type: esa_l1b_flag
file_key: confidence_{stripe:1s}{view:1s}


pointing:
name: pointing
sensor: slstr
resolution: [500, 1000]
coordinates: [longitude, latitude]
view: [nadir, oblique]
stripe: [a, b, i, f]
file_type: esa_l1b_flag
file_key: pointing_{stripe:1s}{view:1s}

bayes:
name: bayes
sensor: slstr
resolution: [500, 1000]
coordinates: [longitude, latitude]
view: [nadir, oblique]
stripe: [a, b, i, f]
file_type: esa_l1b_flag
file_key: bayes_{stripe:1s}{view:1s}
Loading