From bd774ba7aec767db78c8c9035518010e351de1d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kai=20M=C3=BChlbauer?= Date: Tue, 13 Aug 2024 10:48:35 +0200 Subject: [PATCH] FIX: use rstart in meter for ODIM_H5/V2_4 (#197) * FIX: use correct rstart in meter for ODIM_H5/V2_4 * add history.md entry --- docs/history.md | 4 ++++ xradar/io/backends/odim.py | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/docs/history.md b/docs/history.md index df9ec518..1722d183 100644 --- a/docs/history.md +++ b/docs/history.md @@ -1,5 +1,9 @@ # History +## 0.6.3 (2024-08-13) + +FIX: use rstart in meter for ODIM_H5/V2_4 ({issue}`196`) by [@kmuehlbauer](https://github.com/kmuehlbauer), ({pull}`197`) by [@kmuehlbauer](https://github.com/kmuehlbauer). + ## 0.6.2 (2024-08-12) * FIX: Passing 'engine' kwarg in "open_cfradial1_datatree" method to enable fsspec.open when using url ({issue}`194`) by [@aladinor](https://github.com/aladinor), ({pull}`195`) by [@aladinor](https://github.com/aladinor) diff --git a/xradar/io/backends/odim.py b/xradar/io/backends/odim.py index df3515d1..bad31b99 100644 --- a/xradar/io/backends/odim.py +++ b/xradar/io/backends/odim.py @@ -176,9 +176,12 @@ def _get_time_what(what, where, nrays=None): return time_data -def _get_range(where): +def _get_range(where, odim_version=None): + scale = 1000.0 + if odim_version == "ODIM_H5/V2_4": + scale = 1.0 ngates = where["nbins"] - range_start = where["rstart"] * 1000.0 + range_start = where["rstart"] * scale bin_range = where["rscale"] cent_first = range_start + bin_range / 2.0 range_data = np.arange( @@ -303,6 +306,10 @@ def where(self): self._where = self.grp["where"].attrs return self._where + def _get_odim_version(self): + version = self._root.attrs["Conventions"] + return version + def _get_site_coords(self): lon = self._root["where"].attrs["lon"] lat = self._root["where"].attrs["lat"] @@ -411,7 +418,7 @@ def _get_ray_times(self, nrays=None): return time_data def _get_range(self): - return _get_range(self.where) + return _get_range(self.where, odim_version=self._odim_version) def _get_time(self, point="start"): return _get_time(self.what, point=point) @@ -461,6 +468,10 @@ def _sweep_number(self): """Return sweep number.""" return int(self._group.split("/")[0][7:]) - 1 + @property + def _odim_version(self): + return self._get_odim_version() + class H5NetCDFArrayWrapper(BackendArray): """H5NetCDFArrayWrapper