From cacf4fd8493efad42bf0b9727a9b7d6b5831ae14 Mon Sep 17 00:00:00 2001 From: "Colin.Duff@eumetsat.int" Date: Tue, 5 Jan 2021 13:52:52 +0000 Subject: [PATCH 1/4] Code updated to fix issue with reading MSG GRIB products from the eumetsat datastore and added AES, CTH, MPE and ClearSkyMap GRIB products --- satpy/etc/readers/seviri_l2_grib.yaml | 155 ++++++++++++++++++++++++++ satpy/readers/seviri_l2_grib.py | 10 +- 2 files changed, 160 insertions(+), 5 deletions(-) diff --git a/satpy/etc/readers/seviri_l2_grib.yaml b/satpy/etc/readers/seviri_l2_grib.yaml index bf3b7f76bd..0279f7708f 100644 --- a/satpy/etc/readers/seviri_l2_grib.yaml +++ b/satpy/etc/readers/seviri_l2_grib.yaml @@ -14,6 +14,7 @@ file_types: - 'CLMEncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - '{spacecraft:4s}-SEVI-MSGCLMK-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - '{spacecraft:4s}-SEVI-MSGCLMK-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGCLMK-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' # EUMETSAT MSG SEVIRI L2 Optimal Cloud Analysis files in GRIB format grib_seviri_oca: @@ -22,6 +23,7 @@ file_types: - 'OCAEncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - '{spacecraft:4s}-SEVI-MSGOCAE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - '{spacecraft:4s}-SEVI-MSGOCAE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGOCAE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' # EUMETSAT MSG SEVIRI L2 Active Fire Monitoring files in GRIB format grib_seviri_fir: @@ -30,6 +32,39 @@ file_types: - 'FIREncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - '{spacecraft:4s}-SEVI-MSGFIRG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - '{spacecraft:4s}-SEVI-MSGFIRG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGFIRG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + + grib_seviri_aes: + file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler + file_patterns: + - 'AESGRIBProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' + - '{spacecraft:4s}-SEVI-MSGAESE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGAESE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGAESE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + + grib_seviri_cth: + file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler + file_patterns: + - 'CTHEncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' + - '{spacecraft:4s}-SEVI-MSGCLTH-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGCLTH-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGCLTH-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + + grib_seviri_crm: + file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler + file_patterns: + - 'CRMEncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' + - '{spacecraft:4s}-SEVI-MSGCRMN-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGCRMN-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGCRMN-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + + grib_seviri_mpe: + file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler + file_patterns: + - 'MPEGRIBProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' + - '{spacecraft:4s}-SEVI-MSGMPEG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGMPEG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGMPEG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' datasets: @@ -152,3 +187,123 @@ datasets: parameter_number: 9 units: "" long_name: active_fire_classification + + aerosol_optical_thickness_vis06: + name: aerosol_optical_thickness_vis06 + resolution: 3000 + file_type: grib_seviri_aes + parameter_number: 20 + units: "um" + long_name: aerosol_optical_thickness_vis06 + + aerosol_optical_thickness_vis08: + name: aerosol_optical_thickness_vis08 + resolution: 3000 + file_type: grib_seviri_aes + parameter_number: 21 + units: "um" + long_name: aerosol_optical_thickness_vis08 + + aerosol_optical_thickness_vis16: + name: aerosol_optical_thickness_vis16 + resolution: 3000 + file_type: grib_seviri_aes + parameter_number: 22 + units: "um" + long_name: aerosol_optical_thickness_vis06 + + angstroem_coefficient: + name: angstroem_coefficient + resolution: 3000 + file_type: grib_seviri_aes + parameter_number: 23 + units: "" + long_name: angstroem_coefficient + + aes_quality: + name: aes_quality + resolution: 3000 + file_type: grib_seviri_aes + parameter_number: 192 + units: "" + long_name: aes_quality + + cloud_top_height: + name: cloud_top_height + resolution: 3000 + file_type: grib_seviri_cth + parameter_number: 2 + units: Pa + long_name: cloud_top_height + + cloud_top_quality: + name: cloud_top_quality + resolution: 3000 + file_type: grib_seviri_cth + parameter_number: 3 + units: "" + long_name: cloud_top_quality + + vis_refl_06: + name: vis_refl_06 + resolution: 3000 + file_type: grib_seviri_crm + parameter_number: 9 + units: "%" + long_name: vis_refl_06 + + vis_refl_08: + name: vis_refl_08 + resolution: 3000 + file_type: grib_seviri_crm + parameter_number: 10 + units: "%" + long_name: vis_refl_08 + + vis_refl_16: + name: vis_refl_16 + resolution: 3000 + file_type: grib_seviri_crm + parameter_number: 11 + units: "%" + long_name: vis_refl_16 + + nir_refl_39: + name: nir_refl_39 + resolution: 3000 + file_type: grib_seviri_crm + parameter_number: 12 + units: "%" + long_name: nir_refl_39 + + num_accumulations: + name: num_accumulations + resolution: 3000 + file_type: grib_seviri_crm + parameter_number: 6 + units: "" + long_name: num_accumulations + + azimuth_angle: + name: azimuth_angle + resolution: 3000 + file_type: grib_seviri_crm + parameter_number: 7 + units: degrees + long_name: azimuth_angle + + relative_azimuth_angle: + name: relative_azimuth_angle + resolution: 3000 + file_type: grib_seviri_crm + parameter_number: 8 + units: degrees + long_name: relative_azimuth_angle + + instantaneous_rain_rate: + name: instantaneous_rain_rate + resolution: 3000 + file_type: grib_seviri_mpe + parameter_number: 1 + units: "kg m-2 s-1" + long_name: instantaneous_rain_rate diff --git a/satpy/readers/seviri_l2_grib.py b/satpy/readers/seviri_l2_grib.py index ae75f89633..a2edbe6e3d 100644 --- a/satpy/readers/seviri_l2_grib.py +++ b/satpy/readers/seviri_l2_grib.py @@ -26,19 +26,18 @@ https://navigator.eumetsat.int/ """ +import dask.array as da import logging import numpy as np import xarray as xr -import dask.array as da - from datetime import timedelta -from satpy.readers.file_handlers import BaseFileHandler +from satpy import CHUNK_SIZE from satpy.readers._geos_area import get_area_definition +from satpy.readers.file_handlers import BaseFileHandler from satpy.readers.seviri_base import (calculate_area_extent, PLATFORM_DICT, REPEAT_CYCLE_DURATION) -from satpy import CHUNK_SIZE try: import eccodes as ec @@ -143,6 +142,7 @@ def get_dataset(self, dataset_id, dataset_info): # Check if the parameter number in the GRIB message corresponds to the required key parameter_number = self._get_from_msg(gid, 'parameterNumber') + if parameter_number != dataset_info['parameter_number']: # The parameter number is not the correct one, skip to next message ec.codes_release(gid) @@ -153,7 +153,7 @@ def get_dataset(self, dataset_id, dataset_info): # Retrieve values and metadata from the GRIB message, masking the values equal to missing_value xarr = self._get_xarray_from_msg(gid) - xarr.where(xarr.data == missing_value, np.NaN) + xarr.data = xr.where(xarr.data == missing_value, np.nan, xarr.data) ec.codes_release(gid) From 07961efd73771f48bb0564983a3b12edef32c6ed Mon Sep 17 00:00:00 2001 From: "Colin.Duff@eumetsat.int" Date: Tue, 5 Jan 2021 15:30:42 +0000 Subject: [PATCH 2/4] Moved import loggin statement --- satpy/readers/seviri_l2_grib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/satpy/readers/seviri_l2_grib.py b/satpy/readers/seviri_l2_grib.py index a2edbe6e3d..bdeb1d75d8 100644 --- a/satpy/readers/seviri_l2_grib.py +++ b/satpy/readers/seviri_l2_grib.py @@ -26,8 +26,8 @@ https://navigator.eumetsat.int/ """ -import dask.array as da import logging +import dask.array as da import numpy as np import xarray as xr from datetime import timedelta From 9f2370dd684c6a56a6715f75add3a8315ea0928a Mon Sep 17 00:00:00 2001 From: "Colin.Duff@eumetsat.int" Date: Thu, 7 Jan 2021 09:28:48 +0000 Subject: [PATCH 3/4] added variable identifiers for 0100 string as this can vary --- satpy/etc/readers/seviri_l2_grib.yaml | 42 +++++++++++++-------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/satpy/etc/readers/seviri_l2_grib.yaml b/satpy/etc/readers/seviri_l2_grib.yaml index 0279f7708f..8d63bcac0f 100644 --- a/satpy/etc/readers/seviri_l2_grib.yaml +++ b/satpy/etc/readers/seviri_l2_grib.yaml @@ -12,59 +12,59 @@ file_types: file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler file_patterns: - 'CLMEncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - - '{spacecraft:4s}-SEVI-MSGCLMK-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - - '{spacecraft:4s}-SEVI-MSGCLMK-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' - - '{spacecraft:4s}-SEVI-MSGCLMK-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + - '{spacecraft:4s}-SEVI-MSGCLMK-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGCLMK-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGCLMK-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' # EUMETSAT MSG SEVIRI L2 Optimal Cloud Analysis files in GRIB format grib_seviri_oca: file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler file_patterns: - 'OCAEncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - - '{spacecraft:4s}-SEVI-MSGOCAE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - - '{spacecraft:4s}-SEVI-MSGOCAE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' - - '{spacecraft:4s}-SEVI-MSGOCAE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + - '{spacecraft:4s}-SEVI-MSGOCAE-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGOCAE-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGOCAE-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' # EUMETSAT MSG SEVIRI L2 Active Fire Monitoring files in GRIB format grib_seviri_fir: file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler file_patterns: - 'FIREncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - - '{spacecraft:4s}-SEVI-MSGFIRG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - - '{spacecraft:4s}-SEVI-MSGFIRG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' - - '{spacecraft:4s}-SEVI-MSGFIRG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + - '{spacecraft:4s}-SEVI-MSGFIRG-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGFIRG-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGFIRG-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' grib_seviri_aes: file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler file_patterns: - 'AESGRIBProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - - '{spacecraft:4s}-SEVI-MSGAESE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - - '{spacecraft:4s}-SEVI-MSGAESE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' - - '{spacecraft:4s}-SEVI-MSGAESE-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + - '{spacecraft:4s}-SEVI-MSGAESE-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGAESE-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGAESE-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' grib_seviri_cth: file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler file_patterns: - 'CTHEncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - - '{spacecraft:4s}-SEVI-MSGCLTH-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - - '{spacecraft:4s}-SEVI-MSGCLTH-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' - - '{spacecraft:4s}-SEVI-MSGCLTH-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + - '{spacecraft:4s}-SEVI-MSGCLTH-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGCLTH-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGCLTH-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' grib_seviri_crm: file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler file_patterns: - 'CRMEncProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - - '{spacecraft:4s}-SEVI-MSGCRMN-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - - '{spacecraft:4s}-SEVI-MSGCRMN-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' - - '{spacecraft:4s}-SEVI-MSGCRMN-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + - '{spacecraft:4s}-SEVI-MSGCRMN-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGCRMN-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGCRMN-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' grib_seviri_mpe: file_reader: !!python/name:satpy.readers.seviri_l2_grib.SeviriL2GribFileHandler file_patterns: - 'MPEGRIBProd_{start_time:%Y%m%d%H%M%S}Z_00_{server:8s}_{spacecraft:5s}_{scan_mode:3s}_{sub_sat:5s}' - - '{spacecraft:4s}-SEVI-MSGMPEG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' - - '{spacecraft:4s}-SEVI-MSGMPEG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' - - '{spacecraft:4s}-SEVI-MSGMPEG-0100-0100-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' + - '{spacecraft:4s}-SEVI-MSGMPEG-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}' + - '{spacecraft:4s}-SEVI-MSGMPEG-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-{product_creation_time:%Y%m%d%H%M%S}-{ord_num:7s}.grb' + - '{spacecraft:4s}-SEVI-MSGMPEG-{id1:4s}-{id2:4s}-{start_time:%Y%m%d%H%M%S}.000000000Z-NA.grb' datasets: From 3ea70012574fd2f49de1ca6af5e4ef44861e579d Mon Sep 17 00:00:00 2001 From: "Colin.Duff@eumetsat.int" Date: Wed, 20 Jan 2021 09:08:32 +0000 Subject: [PATCH 4/4] Updated reader and yaml file in line with reviewers comments --- satpy/etc/readers/seviri_l2_grib.yaml | 24 ++++++++++++------------ satpy/readers/seviri_l2_grib.py | 3 ++- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/satpy/etc/readers/seviri_l2_grib.yaml b/satpy/etc/readers/seviri_l2_grib.yaml index 8d63bcac0f..3995f60fd8 100644 --- a/satpy/etc/readers/seviri_l2_grib.yaml +++ b/satpy/etc/readers/seviri_l2_grib.yaml @@ -73,7 +73,7 @@ datasets: resolution: 3000 file_type: grib_seviri_clm parameter_number: 7 - units: "" + units: "1" long_name: cloud_mask_classification pixel_scene_type: @@ -81,7 +81,7 @@ datasets: resolution: 3000 file_type: grib_seviri_oca parameter_number: 8 - units: "" + units: "1" long_name: scene_classification measurement_cost: @@ -89,7 +89,7 @@ datasets: resolution: 3000 file_type: grib_seviri_oca parameter_number: 30 - units: "" + units: "1" long_name: cost_function upper_layer_cloud_optical_depth: @@ -97,7 +97,7 @@ datasets: resolution: 3000 file_type: grib_seviri_oca parameter_number: 31 - units: "" + units: "1" long_name: cloud_optical_depth upper_layer_cloud_top_pressure: @@ -121,7 +121,7 @@ datasets: resolution: 3000 file_type: grib_seviri_oca parameter_number: 34 - units: "" + units: "1" long_name: cloud_optical_depth error_in_upper_layer_cloud_top_pressure: @@ -145,7 +145,7 @@ datasets: resolution: 3000 file_type: grib_seviri_oca parameter_number: 37 - units: "" + units: "1" long_name: cloud_optical_depth lower_layer_cloud_top_pressure: @@ -161,7 +161,7 @@ datasets: resolution: 3000 file_type: grib_seviri_oca parameter_number: 39 - units: "" + units: "1" long_name: cloud_optical_depth_standard_error error_in_lower_layer_cloud_top_pressure: @@ -185,7 +185,7 @@ datasets: resolution: 3000 file_type: grib_seviri_fir parameter_number: 9 - units: "" + units: "1" long_name: active_fire_classification aerosol_optical_thickness_vis06: @@ -217,7 +217,7 @@ datasets: resolution: 3000 file_type: grib_seviri_aes parameter_number: 23 - units: "" + units: "1" long_name: angstroem_coefficient aes_quality: @@ -225,7 +225,7 @@ datasets: resolution: 3000 file_type: grib_seviri_aes parameter_number: 192 - units: "" + units: "1" long_name: aes_quality cloud_top_height: @@ -241,7 +241,7 @@ datasets: resolution: 3000 file_type: grib_seviri_cth parameter_number: 3 - units: "" + units: "1" long_name: cloud_top_quality vis_refl_06: @@ -281,7 +281,7 @@ datasets: resolution: 3000 file_type: grib_seviri_crm parameter_number: 6 - units: "" + units: "1" long_name: num_accumulations azimuth_angle: diff --git a/satpy/readers/seviri_l2_grib.py b/satpy/readers/seviri_l2_grib.py index bdeb1d75d8..008861e7a2 100644 --- a/satpy/readers/seviri_l2_grib.py +++ b/satpy/readers/seviri_l2_grib.py @@ -153,7 +153,8 @@ def get_dataset(self, dataset_id, dataset_info): # Retrieve values and metadata from the GRIB message, masking the values equal to missing_value xarr = self._get_xarray_from_msg(gid) - xarr.data = xr.where(xarr.data == missing_value, np.nan, xarr.data) + + xarr.data = da.where(xarr.data == missing_value, np.nan, xarr.data) ec.codes_release(gid)