ec-jrc / pyPoseidon

Framework for Hydrodynamic simulations
https://pyposeidon.readthedocs.io/
European Union Public License 1.2
20 stars 7 forks source link

Adjust dem fails when also interpolating onto grid #113

Open TPCollings opened 1 year ago

TPCollings commented 1 year ago

Hello again,

When using the tutorial script DEM.ipynb, I get an error when running the command to process the DEM with the mesh grid nodes, whilst also adjusting for coastlines. Example error is below.

I've found a work around, to adjust coastlines before including the interpolation onto the mesh, and then use the output from that to sample onto the mesh, with adjust_dem=False.

Cheers,

Tom

dem = pdem.Dem(**geometry, coastlines = ne_i, dem_source=dem.Dataset, grid_x = x, grid_y = y,adjust_dem=True)

INFO:pyposeidon.dem:dem done

INFO:pyposeidon.dem:.. interpolating on mesh ..

INFO:pyposeidon.dem:.. using elevation values ..

INFO:pyposeidon.dem:dem on grid done

INFO:pyposeidon.utils.fix:adjust dem

DEBUG:pyposeidon.utils.fix:compute water and land

DEBUG:pyposeidon.utils.fix:invoke pygeos

DEBUG:pyposeidon.utils.fix:find wet and dry masks

DEBUG:pyposeidon.utils.fix:fix wet points

DEBUG:pyposeidon.utils.fix:fix dry points

DEBUG:pyposeidon.utils.fix:assemble dataset

WARNING:pyposeidon.dem:Adjusting dem failed, keeping original values


ValueError Traceback (most recent call last) Input In [77], in <cell line: 1>() ----> 1 dem = pdem.Dem(**geometry, coastlines = ne_i, dem_source=dem.Dataset, grid_x = x, grid_y = y,adjust_dem=True)

File ~/anaconda3/envs/pypos_main1/lib/python3.8/site-packages/pyposeidon/dem.py:79, in Dem.init(self, dem_source, **kwargs) 77 logger.info("Dem already adjusted\n") 78 else: ---> 79 self.adjust(coastline)

File ~/anaconda3/envs/pypos_main1/lib/python3.8/site-packages/pyposeidon/dem.py:91, in Dem.adjust(self, coastline, **kwargs) 89 if not check: 90 logger.warning("Adjusting dem failed, keeping original values\n") ---> 91 self.Dataset = self.Dataset.drop_vars("adjusted")

File ~/anaconda3/envs/pypos_main1/lib/python3.8/site-packages/xarray/core/dataset.py:4834, in Dataset.drop_vars(self, names, errors) 4832 names = set(names) 4833 if errors == "raise": -> 4834 self._assert_all_in_dataset(names) 4836 # GH6505 4837 other_names = set()

File ~/anaconda3/envs/pypos_main1/lib/python3.8/site-packages/xarray/core/dataset.py:4801, in Dataset._assert_all_in_dataset(self, names, virtual_okay) 4799 bad_names -= self.virtual_variables 4800 if bad_names: -> 4801 raise ValueError( 4802 "One or more of the specified variables " 4803 "cannot be found in this dataset" 4804 )

ValueError: One or more of the specified variables cannot be found in this dataset

brey commented 1 year ago

I am testing it on binder and it seems to work fine there.