Parameters
fname : str
Input file path.
var_dict : dict
Dictionary of variables to read, along with variable metadata.
{varname: {"fillvalue": float, "scale": float, "units": str}, ...}
save_as_netcdf : bool, default=False
Save variables in var_dict in netcdf format.
Returns
xarray.Dataset
Source code in monetio/sat/gridded_eos.py
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 | def read_gridded_eos(fname, var_dict, *, save_as_netcdf=False):
"""
Parameters
__________
fname : str
Input file path.
var_dict : dict
Dictionary of variables to read, along with variable metadata.
``{varname: {"fillvalue": float, "scale": float, "units": str}, ...}``
save_as_netcdf : bool, default=False
Save variables in var_dict in netcdf format.
Returns
_______
xarray.Dataset
"""
from .hdfio import hdf_close, hdf_list, hdf_open, hdf_read
logger = logging.getLogger(__name__)
ds_dict = dict()
logger.info("read_gridded_eos:" + fname)
f = hdf_open(fname)
datasets, indices = hdf_list(f)
lon = hdf_read(f, "XDim")
lat = np.flip(hdf_read(f, "YDim"))
lon_da = xr.DataArray(lon, attrs={"long_name": "longitude", "units": "deg east"})
lat_da = xr.DataArray(lat, attrs={"long_name": "latitude", "units": "deg north"})
for var in var_dict:
logger.info("read_gridded_eos:" + var)
data = np.array(hdf_read(f, var), dtype=float)
data = np.flip(data, axis=0)
data[data == var_dict[var]["fillvalue"]] = np.nan
data *= var_dict[var]["scale"]
var_da = xr.DataArray(
data,
coords=[lat_da, lon_da],
dims=["lat", "lon"],
attrs={"units": var_dict[var]["units"]},
)
ds_dict[var] = var_da
hdf_close(f)
ds = xr.Dataset(ds_dict)
if save_as_netcdf:
fname_nc = fname.replace(".hdf", ".nc")
logger.info("writing " + fname_nc)
ds.to_netcdf(fname_nc)
return ds
|