Skip to content

Commit

Permalink
Merge pull request #2268 from TAlonglong/issue2208-hy2-scat-l2b-h5-va…
Browse files Browse the repository at this point in the history
…lid-range-cherrypick

Closes undefined
  • Loading branch information
mraspaud committed Nov 11, 2022
2 parents 6081a02 + 004d910 commit df8ddd1
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 8 deletions.
19 changes: 11 additions & 8 deletions satpy/readers/hy2_scat_l2b_h5.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,13 @@ def get_dataset(self, key, info):
else:
dim_map = {curr_dim: new_dim for curr_dim, new_dim in zip(data.dims, dims)}
data = data.rename(dim_map)
data = self._mask_data(key['name'], data)
data = self._scale_data(key['name'], data)
data = self._mask_data(data)
data = self._scale_data(data)

if key['name'] in 'wvc_lon':
_attrs = data.attrs
data = xr.where(data > 180, data - 360., data)
data.attrs.update(_attrs)
data.attrs.update(info)
data.attrs.update(self.get_metadata())
data.attrs.update(self.get_variable_metadata())
Expand All @@ -120,13 +122,14 @@ def get_dataset(self, key, info):

return data

def _scale_data(self, key_name, data):
return data * self[key_name].attrs['scale_factor'] + self[key_name].attrs['add_offset']
def _scale_data(self, data):
return data * data.attrs['scale_factor'] + data.attrs['add_offset']

def _mask_data(self, key_name, data):
data = xr.where(data == self[key_name].attrs['fill_value'], np.nan, data)

valid_range = self[key_name].attrs['valid_range']
def _mask_data(self, data):
_attrs = data.attrs
valid_range = data.attrs['valid_range']
data = xr.where(data == data.attrs['fill_value'], np.nan, data)
data = xr.where(data < valid_range[0], np.nan, data)
data = xr.where(data > valid_range[1], np.nan, data)
data.attrs.update(_attrs)
return data
24 changes: 24 additions & 0 deletions satpy/tests/reader_tests/test_hy2_scat_l2b_h5.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,13 @@
class FakeHDF5FileHandler2(FakeHDF5FileHandler):
"""Swap-in HDF5 File Handler."""

def __getitem__(self, key):
"""Return copy of dataarray to prevent manipulating attributes in the original."""
val = self.file_content[key]
if isinstance(val, xr.core.dataarray.DataArray):
val = val.copy()
return val

def _get_geo_data(self, num_rows, num_cols):
geo = {
'wvc_lon':
Expand Down Expand Up @@ -498,3 +505,20 @@ def test_reading_attrs_nsoas(self):
with self.assertRaises(KeyError):
self.assertEqual(res['wvc_lon'].attrs['L2B_Number_WVC_cells'], 10)
self.assertEqual(res['wvc_lon'].attrs['L2B_Expected_WVC_Cells'], 10)

def test_properties(self):
"""Test platform_name."""
from datetime import datetime

from satpy.readers import load_reader
filenames = [
'W_XX-EUMETSAT-Darmstadt,SURFACE+SATELLITE,HY2B+SM_C_EUMP_20200326------_07077_o_250_l2b.h5', ]

reader = load_reader(self.reader_configs)
files = reader.select_files_from_pathnames(filenames)
reader.create_filehandlers(files)
# Make sure we have some files
res = reader.load(['wvc_lon'])
self.assertEqual(res['wvc_lon'].platform_name, 'HY-2B')
self.assertEqual(res['wvc_lon'].start_time, datetime(2020, 3, 26, 1, 11, 7))
self.assertEqual(res['wvc_lon'].end_time, datetime(2020, 3, 26, 2, 55, 40))

0 comments on commit df8ddd1

Please sign in to comment.