diff --git a/utils/geocube_connection.py b/utils/geocube_connection.py index 47d150ee8042ba7d8b3175c4bdce2c7fc3888f42..1deedff62dea05d79fa13003056ace0f2a64a7e0 100644 --- a/utils/geocube_connection.py +++ b/utils/geocube_connection.py @@ -217,19 +217,29 @@ class GeoCube: dataset = data_array.to_dataset('band') data_array.close() self.dataset = dataset.rename({"x": "lon", "y": "lat"}) + + lat = self.dataset.variables["lat"][:] + lon = self.dataset.variables["lon"][:] + bb = [[lat.min(), lat.max()], [lon.max(), lon.min()]] self.dataset = self.dataset.sel(lon=slice(self.lon - 5, self.lon + 5), lat=slice(self.lat + 5, self.lat - 5)) # Problem mit der lat Achse, die von + nach - geht - tmp = self.dataset[1].values.tolist() + # tmp = self.dataset[1].values.tolist() self.xarray = True lat = self.dataset.variables["lat"][:] lon = self.dataset.variables["lon"][:] - min_lat = lat.min() - max_lat = lat.max() - min_lon = lon.min() - max_lon = lon.max() + try: + min_lat = lat.min() + max_lat = lat.max() + min_lon = lon.min() + max_lon = lon.max() + except: + if self.lat < bb[0][0] or self.lat > bb[0][1]: + raise ValueError(f"The given lat ({self.lat}) is out of range. Please select one between {float(bb[0][0])} and {float(bb[0][1])}") + elif self.lon < bb[1][0] or self.lon > bb[1][1]: + raise ValueError(f"The given lat ({self.lon}) is out of range. Please select one between {float(bb[1][0])} and {float(bb[1][1])}") self.metadata['lower_corner'] = [min_lat, min_lon] self.metadata['upper_corner'] = [max_lat, max_lon] @@ -304,6 +314,9 @@ class GeoCube: dataset = data_array.to_dataset('band') data_array.close() self.dataset = dataset.rename({"x": "lon", "y": "lat"}) + lat = self.dataset.variables["lat"][:] + lon = self.dataset.variables["lon"][:] + bb = [[lat.min(), lat.max()], [lon.max(), lon.min()]] self.dataset = self.dataset.sel(lon=slice(self.lon - 5, self.lon + 5), lat=slice(self.lat + 5, self.lat - 5)) @@ -311,11 +324,16 @@ class GeoCube: lat = self.dataset.variables["lat"][:] lon = self.dataset.variables["lon"][:] - - min_lat = lat.min() - max_lat = lat.max() - min_lon = lon.min() - max_lon = lon.max() + try: + min_lat = lat.min() + max_lat = lat.max() + min_lon = lon.min() + max_lon = lon.max() + except: + if self.lat < bb[0][0] or self.lat > bb[0][1]: + raise ValueError(f"The given lat ({self.lat}) is out of range. Please select one between {float(bb[0][0])} and {float(bb[0][1])}") + elif self.lon < bb[1][0] or self.lon > bb[1][1]: + raise ValueError(f"The given lat ({self.lon}) is out of range. Please select one between {float(bb[1][0])} and {float(bb[1][1])}") self.metadata['lower_corner'] = [min_lat, min_lon] self.metadata['upper_corner'] = [max_lat, max_lon] @@ -338,9 +356,9 @@ class GeoCube: f"/mnt/geodata/topography/SRTMv4.1/6_5x5_TIFs/srtm_{lon_index}_{lat_index}.tif") except: coords = {'lat': [self.lat - 1, self.lat, self.lat + 1], 'lon': [self.lon - 1, self.lon, self.lon + 1]} - data = [[0, 0, 0], - [0, 0, 0], - [0, 0, 0]] + data = [[-999, -999, -999], + [-999, -999, -999], + [-999, -999, -999]] self.dataset = xr.Dataset({1: (['lat', 'lon'], data)}, coords=coords) else: dataset = data_array.to_dataset('band')