satpy.readers.mersi_l1b module

Reader for the FY-3D MERSI-2 L1B file format.

The files for this reader are HDF5 and come in four varieties; band data and geolocation data, both at 250m and 1000m resolution.

This reader was tested on FY-3A/B/C MERSI-1, FY-3D MERSI-2, FY-3E MERSI-LL and FY-3G MERSI-RM data, but should work on future platforms as well assuming no file format changes.

class satpy.readers.mersi_l1b.MERSIL1B(filename, filename_info, filetype_info)[source]

Bases: HDF5FileHandler

MERSI-1/MERSI-2/MERSI-LL/MERSI-RM L1B file reader.

Initialize file handler.

_get_bt_dataset(data, calibration_index, wave_number)[source]

Get the dataset as brightness temperature.

Apparently we don’t use these calibration factors for Rad -> BT:

coeffs = self._get_coefficients(ds_info['calibration_key'], calibration_index)
# coefficients are per-scan, we need to repeat the values for a
# clean alignment
coeffs = np.repeat(coeffs, data.shape[0] // coeffs.shape[1], axis=1)
coeffs = coeffs.rename({
    coeffs.dims[0]: 'coefficients', coeffs.dims[1]: 'y'
})  # match data dims
data = coeffs[0] + coeffs[1] * data + coeffs[2] * data**2 + coeffs[3] * data**3
_get_coefficients(cal_key, cal_index)[source]

Get VIS calibration coeffs from calibration datasets.

_get_coefficients_mersi1(cal_index)[source]

Get VIS calibration coeffs from attributes. Only for MERSI-1 on FY-3A/B.

_get_dn_corrections(data, band_index, dataset_id, attrs)[source]

Use slope and intercept to get DN corrections.

_get_rad_dataset(data, ds_info, datset_id)[source]

Get the dataset as radiance.

For MERSI-2/RM VIS bands, this could be calculated by:

Rad = Reflectance / 100 * E0 / pi

For MERSI-2, E0 is in the attribute “Solar_Irradiance”. For MERSI-RM, E0 is in the calibration dataset “Solar_Irradiance”. However we can’t find the way to retrieve this value from MERSI-1.

For MERSI-LL VIS band, it has already been stored in DN values. After applying slope and intercept, we just get it. And Same way for IR bands, no matter which sensor it is.

_get_ref_dataset(data, ds_info)[source]

Get the dataset as reflectance.

For MERSI-1/2/RM, coefficients will be as:

Reflectance = 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:

Reflectance = Rad * pi / E0 * 100

Here E0 represents the solar irradiance of the specific band and is the coefficient.

_get_single_slope_intercept(slope, intercept, cal_index)[source]
_mask_data(data, dataset_id, attrs)[source]

Mask the data using fill_value and valid_range attributes.

_strptime(date_attr, time_attr)[source]

Parse date/time strings.

property end_time

Time for final observation.

get_dataset(dataset_id, ds_info)[source]

Load data variable and metadata and calibrate if needed.

get_refl_mult()[source]

Get reflectance multiplier.

property platform_name

Platform name.

property sensor_name

Map sensor name to Satpy ‘standard’ sensor names.

property start_time

Time for first observation.