ec-jrc / lisflood-utilities

LISFLOOD OS - Utilities
https://ec-jrc.github.io/lisflood
European Union Public License 1.2
22 stars 9 forks source link

Cut maps: output files in netcdf format #18

Closed StefaniaGrimaldi closed 3 years ago

StefaniaGrimaldi commented 3 years ago

I have been using cutmaps to retrieve the mask map of the area contributing to an outlet point. I think that this function is really useful!

I only noticed some imprecision in the reference system of the netcdf files (e.g. the files my_mask.nc and outlets.nc in the folder tests). Would it be possible to fix this issue?

Here is the message that I see when I run the python code: _Writing /xxxxxxx/tests/data/cutmaps/my_mask.nc Traceback (most recent call last): File "test_cutmap.py", line 10, in mask,outlets_nc = mask_from_ldd(ldd_pcr, stations) File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/lisfloodutilities/cutmaps/cutlib.py", line 243, in mask_from_ldd convert(smallmask_map, maskmap_nc, pcr2nc_metadata) File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/lisfloodutilities/pcr2nc/init.py", line 36, in convert writer.finalize() File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/lisfloodutilities/writers/nc.py", line 228, in finalize self.variable[:, :] = np.array(self.values, dtype=dtype) File "netCDF4/_netCDF4.pyx", line 4853, in netCDF4._netCDF4.Variable.setitem File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/netCDF4/utils.py", line 365, in _StartCountStride datashape = broadcasted_shape(shape, datashape) File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/netCDF4/utils.py", line 973, in broadcastedshape return np.broadcast(a, b).shape ValueError: shape mismatch: objects cannot be broadcast to a single shape

domeniconappo commented 3 years ago

Other info Estensione 0.0000000000000000,-950.0000000000000000 : 1000.0000000000000000,0.0000000000000000

Should be

Estensione | 2500000.0000000000000000,750000.0000000000000000 : 7500000.0000000000000000,5500000.0000000000000000

pixel size: 5000, 5000

image

image

domeniconappo commented 3 years ago
File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/lisfloodutilities/cutmaps/cutlib.py", line 243, in mask_from_ldd
convert(smallmask_map, maskmap_nc, pcr2nc_metadata)
File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/lisfloodutilities/pcr2nc/init.py", line 36, in convert
writer.finalize()
File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/lisfloodutilities/writers/nc.py", line 228, in finalize
self.variable[:, :] = np.array(self.values, dtype=dtype)
File "netCDF4/_netCDF4.pyx", line 4853, in netCDF4._netCDF4.Variable.setitem
File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/netCDF4/utils.py", line 365, in StartCountStride
datashape = broadcasted_shape(shape, datashape)
File "/home/grimast/anaconda3/envs/lisfloodv3/lib/python3.7/site-packages/netCDF4/utils.py", line 973, in broadcasted_shape
return np.broadcast(a, b).shape
ValueError: shape mismatch: objects cannot be broadcast to a single shape

Can reproduce this error when stations.txt contains a single item. This is another bug and it's not related to wrong reference systems in netcdf files. Will be fixed on same branch though.