From dd1d74b9ef1edd9b40f1487ce099a30c48543b5f Mon Sep 17 00:00:00 2001 From: CyanideCN Date: Mon, 6 Jan 2025 22:26:55 -0800 Subject: [PATCH] fix: raise error when product / tilt does not exist --- cinrad/io/level2.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/cinrad/io/level2.py b/cinrad/io/level2.py index 09ed7c1..48ccc64 100644 --- a/cinrad/io/level2.py +++ b/cinrad/io/level2.py @@ -764,6 +764,12 @@ def get_raw( """ # The scan number is set to zero in RHI mode. self.tilt = tilt if self.scan_type == "PPI" else 0 + if tilt not in self.data: + raise RadarDecodeError("Tilt {} does not exist.".format(tilt)) + if dtype not in self.data[tilt]: + raise RadarDecodeError( + "Product {} does not exist in tilt {}".format(dtype, tilt) + ) if self.scan_type == "RHI": max_range = self.scan_config[0].max_range1 / 1000 if drange > max_range: @@ -774,10 +780,7 @@ def get_raw( reso = self.scan_config[tilt].dop_reso / 1000 else: reso = self.scan_config[tilt].log_reso / 1000 - try: - raw = np.array(self.data[tilt][dtype]) - except KeyError: - raise RadarDecodeError("Invalid product name") + raw = np.array(self.data[tilt][dtype]) ngates = int(drange // reso) if raw.size == 0: warnings.warn("Empty data", RuntimeWarning) @@ -820,11 +823,11 @@ def get_data(self, tilt: int, drange: Number_T, dtype: str) -> xr.Dataset: Returns: xarray.Dataset: Data. """ + ret = self.get_raw(tilt, drange, dtype) if dtype in ["VEL", "SW", "VELSZ"]: reso = self.scan_config[tilt].dop_reso / 1000 else: reso = self.scan_config[tilt].log_reso / 1000 - ret = self.get_raw(tilt, drange, dtype) shape = ret[0].shape[1] if isinstance(ret, tuple) else ret.shape[1] if self.scan_type == "PPI": x, y, z, d, a = self.projection(reso)