diff --git a/satpy/etc/readers/multiple_sensors_isccpng_l1g_nc.yaml b/satpy/etc/readers/multiple_sensors_isccpng_l1g_nc.yaml index a0f3537de8..f08712fdf7 100644 --- a/satpy/etc/readers/multiple_sensors_isccpng_l1g_nc.yaml +++ b/satpy/etc/readers/multiple_sensors_isccpng_l1g_nc.yaml @@ -10,74 +10,102 @@ reader: file_types: isccp_ng_l1g_nc_refl_0047um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_0047um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_0047um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__refl_0047um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_refl_00_51um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_00_51um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_00_51um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__refl_00_51um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_refl_01_38um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_01_38um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_01_38um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__refl_01_38um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_refl_02_20um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_02_20um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_02_20um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__refl_02_20um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_refl_01_60um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_01_60um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_01_60um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__refl_01_60um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_03_80um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_03_80um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_03_80um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_03_80um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_08_60um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_08_60um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_08_60um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_08_60um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_09_70um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_09_70um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_09_70um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_09_70um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_11_00um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_11_00um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_11_00um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_11_00um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_10_40um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_10_40um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_10_40um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_10_40um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_12_00um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_12_00um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_12_00um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_12_00um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_13_30um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_13_30um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_13_30um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_13_30um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_refl_00_65um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_00_65um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_00_65um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__refl_00_65um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_refl_00_86um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_00_86um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__refl_00_86um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__refl_00_86um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_06_20um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_06_20um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_06_20um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_06_20um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_06_70um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_06_70um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_06_70um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_06_70um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_temp_07_30um: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_07_30um__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__temp_07_30um__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__temp_07_30um__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_solar_zenith: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__solar_zenith_angle__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__solar_zenith_angle__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__solar_zenith_angle__{start_time:%Y%m%dT%H%M}.nc'] + isccp_ng_l1g_nc_sensor_zenith: + file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler + file_patterns: ['EUM_L1g_v{version}_res_0_05deg__sensor_zenith_angle__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_satellite_zenith: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__satellite_zenith_angle__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_solar_azimuth: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__solar_azimuth_angle__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__solar_azimuth_angle__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__solar_azimuth_angle__{start_time:%Y%m%dT%H%M}.nc'] + isccp_ng_l1g_nc_sensor_azimuth: + file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler + file_patterns: ['EUM_L1g_v{version}_res_0_05deg__sensor_azimuth_angle__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_satellite_azimuth: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__satellite_azimuth_angle__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_time: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler - file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__pixel_time__{start_time:%Y%m%dT%H%M}.nc'] + file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__pixel_time__{start_time:%Y%m%dT%H%M}.nc', + 'EUM_L1g_v{version}_res_0_05deg__pixel_time__{start_time:%Y%m%dT%H%M}.nc'] isccp_ng_l1g_nc_wmo_id: file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler file_patterns: ['ISCCP-NG_L1g_demo_v{version}_res_0_05deg__wmo_id__{start_time:%Y%m%dT%H%M}.nc'] - + isccp_ng_l1g_nc_sensor_flag: + file_reader: !!python/name:satpy.readers.multiple_sensors_isccpng_l1g_nc.IsccpngL1gFileHandler + file_patterns: ['EUM_L1g_v{version}_res_0_05deg__sensor_flag__{start_time:%Y%m%dT%H%M}.nc'] datasets: refl_0047um: @@ -291,6 +319,14 @@ datasets: units: degrees nc_key: 'solar_zenith_angle' + sensor_zenith_angle: + name: sensor_zenith_angle + standard_name: sensor_zenith_angle + resolution: 3000.403165817 + file_type: isccp_ng_l1g_nc_sensor_zenith + units: degrees + nc_key: 'sensor_zenith_angle' + satellite_zenith_angle: name: satellite_zenith_angle standard_name: satellite_zenith_angle @@ -307,6 +343,14 @@ datasets: units: degrees nc_key: 'solar_azimuth_angle' + sensor_azimuth_angle: + name: sensor_azimuth_angle + standard_name: sensor_azimuth_angle + resolution: 3000.403165817 + file_type: isccp_ng_l1g_nc_sensor_azimuth + units: degrees + nc_key: 'sensor_azimuth_angle' + satellite_azimuth_angle: name: satellite_azimuth_angle standard_name: satellite_azimuth_angle @@ -353,3 +397,10 @@ datasets: file_type: isccp_ng_l1g_nc_wmo_id coordinates: [lon, lat] nc_key: 'wmo_id' + + sensor_flag: + name: sensor_flag + resolution: 3000.403165817 + file_type: isccp_ng_l1g_nc_sensor_flag + coordinates: [lon, lat] + nc_key: 'sensor_flag' \ No newline at end of file diff --git a/satpy/readers/multiple_sensors_isccpng_l1g_nc.py b/satpy/readers/multiple_sensors_isccpng_l1g_nc.py index eef4193cdf..b7c3af5c05 100644 --- a/satpy/readers/multiple_sensors_isccpng_l1g_nc.py +++ b/satpy/readers/multiple_sensors_isccpng_l1g_nc.py @@ -73,20 +73,30 @@ def get_area_def(self, dsid): def modify_dims_and_coords(self, data): """Remove coords and rename dims to x and y.""" if len(data.dims) > 2: - data = data.drop_vars("latitude") - data = data.drop_vars("longitude") - data = data.drop_vars("start_time") - data = data.drop_vars("end_time") + for var in ["latitude", "longitude", "start_time", "end_time", "time"]: + try: + data = data.drop_vars(var) + except ValueError: + pass data = data.rename({"longitude": "x", "latitude": "y"}) return data def set_time_attrs(self, data): """Set time from attributes.""" if "start_time" in data.coords: + # ISCCP-NG L1g demo data.attrs["start_time"] = data["start_time"].values[0] data.attrs["end_time"] = data["end_time"].values[0] self._end_time = data.attrs["end_time"] self._start_time = data.attrs["start_time"] + if data.name == "pixel_time": + # EUMETSAT L1g + if not np.issubdtype(data.dtype, np.floating): + logger.debug("Finding max/min time") + data.attrs["start_time"] = np.nanmin(data.values) + data.attrs["end_time"] = np.nanmax(data.values) + self._end_time = data.attrs["end_time"] + self._start_time = data.attrs["start_time"] def get_dataset(self, key, yaml_info): """Get dataset."""