satpy.readers.fci_l1c_nc module
Interface to MTG-FCI L1c NetCDF files.
This module defines the FCIL1cNCFileHandler
file handler, to
be used for reading Meteosat Third Generation (MTG) Flexible Combined
Imager (FCI) Level-1c data. FCI flies
on the MTG Imager (MTG-I) series of satellites, with the first satellite (MTG-I1)
launched on the 13th of December 2022.
For more information about FCI, see EUMETSAT.
For simulated test data to be used with this reader, see test data releases. For the Product User Guide (PUG) of the FCI L1c data, see PUG.
Note
This reader supports data from both IDPF-I and IQT-I processing facilities.
This reader currently supports Full Disk High Spectral Resolution Imagery
(FDHSI), High Spatial Resolution Fast Imagery (HRFI) data in full-disc (“FD”) or in RSS (“Q4”) scanning mode.
In addition it also supports the L1C format for the African dissemination (“AF”), where each file
contains the masked full-dic of a single channel see AF PUG.
If the user provides a list of both FDHSI and HRFI files from the same repeat cycle to the Satpy Scene
,
Satpy will automatically read the channels from the source with the finest resolution,
i.e. from the HRFI files for the vis_06, nir_22, ir_38, and ir_105 channels.
If needed, the desired resolution can be explicitly requested using e.g.:
scn.load(['vis_06'], resolution=1000)
.
Note that RSS data is not supported yet.
Geolocation is based on information from the data files. It uses:
From the shape of the data variable
data/<channel>/measured/effective_radiance
, start and end line columns of current swath.From the data variable
data/<channel>/measured/x
, the x-coordinates for the grid, in radians (azimuth angle positive towards West).From the data variable
data/<channel>/measured/y
, the y-coordinates for the grid, in radians (elevation angle positive towards North).From the attribute
semi_major_axis
on the data variabledata/mtg_geos_projection
, the Earth equatorial radiusFrom the attribute
inverse_flattening
on the same data variable, the (inverse) flattening of the ellipsoidFrom the attribute
perspective_point_height
on the same data variable, the geostationary altitude in the normalised geostationary projectionFrom the attribute
longitude_of_projection_origin
on the same data variable, the longitude of the projection originFrom the attribute
sweep_angle_axis
on the same, the sweep angle axis, see https://proj.org/operations/projections/geos.html
From the pixel centre angles in radians and the geostationary altitude, the
extremities of the lower left and upper right corners are calculated in units
of arc length in m. This extent along with the number of columns and rows, the
sweep angle axis, and a dictionary with equatorial radius, polar radius,
geostationary altitude, and longitude of projection origin, are passed on to
pyresample.geometry.AreaDefinition
, which then uses proj4 for the actual
geolocation calculations.
The reading routine supports channel data in counts, radiances, and (depending on channel) brightness temperatures or reflectances. The brightness temperature and reflectance calculation is based on the formulas indicated in PUG. Radiance datasets are returned in units of radiance per unit wavenumber (mW m-2 sr-1 (cm-1)-1). Radiances can be converted to units of radiance per unit wavelength (W m-2 um-1 sr-1) by multiplying with the radiance_unit_conversion_coefficient dataset attribute.
For each channel, it also supports a number of auxiliary datasets, such as the pixel quality, the index map and the related geometric and acquisition parameters: time, subsatellite latitude, subsatellite longitude, platform altitude, subsolar latitude, subsolar longitude, earth-sun distance, sun-satellite distance, swath number, and swath direction.
All auxiliary data can be obtained by prepending the channel name such as
"vis_04_pixel_quality"
.
Warning
The API for the direct reading of pixel quality is temporary and likely to
change. Currently, for each channel, the pixel quality is available by
<chan>_pixel_quality
. In the future, they will likely all be called
pixel_quality
and disambiguated by a to-be-decided property in the
DataID.
Note
For reading compressed data, a decompression library is
needed. Either install the FCIDECOMP library (see PUG), or the
hdf5plugin
package with:
pip install hdf5plugin
or:
conda install hdf5plugin -c conda-forge
If you use hdf5plugin
, make sure to add the line import hdf5plugin
at the top of your script.
- class satpy.readers.fci_l1c_nc.FCIL1cNCFileHandler(filename, filename_info, filetype_info)[source]
Bases:
NetCDF4FsspecFileHandler
Class implementing the MTG FCI L1c Filehandler.
This class implements the Meteosat Third Generation (MTG) Flexible Combined Imager (FCI) Level-1c NetCDF reader. It is designed to be used through the
Scene
class using theload
method with the reader"fci_l1c_nc"
.Initialize file handler.
- _get_dataset_measurand(key, info=None)[source]
Load dataset corresponding to channel measurement.
Load a dataset when the key refers to a measurand, whether uncalibrated (counts) or calibrated in terms of brightness temperature, radiance, or reflectance.
- _platform_name_translate = {'MTI1': 'MTG-I1', 'MTI2': 'MTG-I2', 'MTI3': 'MTG-I3', 'MTI4': 'MTG-I4'}
- calibrate_counts_to_physical_quantity(data, key)[source]
Calibrate counts to radiances, brightness temperatures, or reflectances.
- property end_time
Get end time.
- get_iqt_parameters_lon_lat_alt()[source]
Compute the orbital parameters for IQT data.
Compute satellite_actual_longitude, satellite_actual_latitude, satellite_actual_altitude.
- get_parameters_lon_lat_alt()[source]
Compute the orbital parameters.
Compute satellite_actual_longitude, satellite_actual_latitude, satellite_actual_altitude.
- get_segment_position_info()[source]
Get information about the size and the position of the segment inside the final image array.
As the final array is composed by stacking segments vertically, the position of a segment inside the array is defined by the numbers of the start (lowest) and end (highest) row of the segment. The row numbering is assumed to start with 1. This info is used in the GEOVariableSegmentYAMLReader to compute optimal segment sizes for missing segments.
Note: in the FCI terminology, a segment is actually called “chunk”. To avoid confusion with the dask concept of chunk, and to be consistent with SEVIRI, we opt to use the word segment.
Note: This function is not used for the African data as it contains only one segment.
- property nominal_end_time
Get nominal end time.
- property nominal_start_time
Get nominal start time.
- property observation_end_time
Get observation end time.
- property observation_start_time
Get observation start time.
- property orbital_param
Compute the orbital parameters for the current segment.
- property rc_period_min
Get nominal repeat cycle duration.
- property start_time
Get start time.