Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

parse_cf() DimensionalityError on GOES data #1887

Open
lsterzinger opened this issue May 25, 2021 · 0 comments
Open

parse_cf() DimensionalityError on GOES data #1887

lsterzinger opened this issue May 25, 2021 · 0 comments
Labels
Type: Bug Something is not working like it should

Comments

@lsterzinger
Copy link
Contributor

lsterzinger commented May 25, 2021

I'm trying to use parse_cf() on GOES-16 SST data so I can use cartopy to plot coastlines etc. I'm pulling my GOES-16 data from the AWS S3 bucket and running the code on the Pangeo cloud.

import s3fs
import xarray as xr
import matplotlib.pyplot as plt
import metpy

fs = s3fs.S3FileSystem(anon=True)
f = fs.open("s3://noaa-goes16/ABI-L2-SSTF/2021/001/00/OR_ABI-L2-SSTF-M6_G16_s20210010000209_e20210010059517_c20210010105389.nc")

ds = xr.open_dataset(f)
ds.metpy.parse_cf()

This last command yields the following stacktrace

---------------------------------------------------------------------------
DimensionalityError                       Traceback (most recent call last)
/srv/conda/envs/notebook/lib/python3.8/site-packages/metpy/xarray.py in _rebuild_coords(self, var, crs)
    774                 try:
--> 775                     var = var.metpy.convert_coordinate_units(coord_name, 'meters')
    776                 except DimensionalityError:

/srv/conda/envs/notebook/lib/python3.8/site-packages/metpy/xarray.py in convert_coordinate_units(self, coord, units)
    189         new_coord_var = self._data_array[coord].copy(
--> 190             data=self._data_array[coord].metpy.unit_array.m_as(units)
    191         )

/srv/conda/envs/notebook/lib/python3.8/site-packages/pint/quantity.py in m_as(self, units)
    455         """
--> 456         return self.to(units).magnitude
    457 

/srv/conda/envs/notebook/lib/python3.8/site-packages/pint/quantity.py in to(self, other, *contexts, **ctx_kwargs)
    660 
--> 661         magnitude = self._convert_magnitude_not_inplace(other, *contexts, **ctx_kwargs)
    662 

/srv/conda/envs/notebook/lib/python3.8/site-packages/pint/quantity.py in _convert_magnitude_not_inplace(self, other, *contexts, **ctx_kwargs)
    609 
--> 610         return self._REGISTRY.convert(self._magnitude, self._units, other)
    611 

/srv/conda/envs/notebook/lib/python3.8/site-packages/pint/registry.py in convert(self, value, src, dst, inplace)
    953 
--> 954         return self._convert(value, src, dst, inplace)
    955 

/srv/conda/envs/notebook/lib/python3.8/site-packages/pint/registry.py in _convert(self, value, src, dst, inplace)
   1839 
-> 1840         return super()._convert(value, src, dst, inplace)
   1841 

/srv/conda/envs/notebook/lib/python3.8/site-packages/pint/registry.py in _convert(self, value, src, dst, inplace)
   1441         if not (src_offset_unit or dst_offset_unit):
-> 1442             return super()._convert(value, src, dst, inplace)
   1443 

/srv/conda/envs/notebook/lib/python3.8/site-packages/pint/registry.py in _convert(self, value, src, dst, inplace, check_dimensionality)
    986             if src_dim != dst_dim:
--> 987                 raise DimensionalityError(src, dst, src_dim, dst_dim)
    988 

DimensionalityError: Cannot convert from 'radian' (dimensionless) to 'meter' ([length])

During handling of the above exception, another exception occurred:

ValueError                                Traceback (most recent call last)
<ipython-input-8-3bf924c09a98> in <module>
----> 1 ds.metpy.parse_cf('SST')

/srv/conda/envs/notebook/lib/python3.8/site-packages/metpy/xarray.py in parse_cf(self, varname, coordinates)
    762 
    763         # Rebuild the coordinates of the dataarray, and return quantified DataArray
--> 764         var = self._rebuild_coords(var, crs)
    765         if crs is not None:
    766             var = var.assign_coords(coords={'metpy_crs': crs})

/srv/conda/envs/notebook/lib/python3.8/site-packages/metpy/xarray.py in _rebuild_coords(self, var, crs)
    778                     if crs is not None:
    779                         height = crs['perspective_point_height']
--> 780                         new_coord_var = coord_var.copy(
    781                             data=(
    782                                 coord_var.metpy.unit_array

/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/dataarray.py in copy(self, deep, data)
    981         pandas.DataFrame.copy
    982         """
--> 983         variable = self.variable.copy(deep=deep, data=data)
    984         coords = {k: v.copy(deep=deep) for k, v in self._coords.items()}
    985         if self._indexes is None:

/srv/conda/envs/notebook/lib/python3.8/site-packages/xarray/core/variable.py in copy(self, deep, data)
    942             data = as_compatible_data(data)
    943             if self.shape != data.shape:
--> 944                 raise ValueError(
    945                     "Data shape {} must match shape of object {}".format(
    946                         data.shape, self.shape

ValueError: Data shape (1,) must match shape of object ()

This seems to be a similar issue to that described here Unidata/python-training#94
But the fix that was implemented doesn't seem to fix my issue.

I'm running the following versions:

  • Python 3.8.6
  • s3fs 0.5.2
  • metpy 1.0
  • xarray 0.16.2

While package versions are controlled by Pangeo across all user instances, I did try with xarray 0.18.2 and the issue persists.

@lsterzinger lsterzinger added the Type: Bug Something is not working like it should label May 25, 2021
@lsterzinger lsterzinger changed the title parse_cf() DimensionalityError on GOES data parse_cf() DimensionalityError on GOES data May 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Bug Something is not working like it should
Projects
None yet
Development

No branches or pull requests

1 participant