【问题标题】:Error creating Satellite images from THREDDS server after MetPy 0.12->1.1 upgradeMetPy 0.12->1.1 升级后从 THREDDS 服务器创建卫星图像时出错
【发布时间】:2021-10-05 18:10:04
【问题描述】:

将 MetPy 升级到 1.1,我无法从 THREDDS 服务器生成卫星图像。我隔离了导致我出现问题的部分。

例子:

#!/usr/bin/python3
import metpy
from siphon.catalog import TDSCatalog
cat_e = TDSCatalog('https://thredds.ucar.edu/thredds/catalog/satellite/goes/east/products/CloudAndMoistureImagery/FullDisk/Channel09/current/catalog.xml')
nc_e = cat_e.datasets[0].remote_access(use_xarray=True)
data_e = nc_e.metpy.parse_cf('Sectorized_CMI')

产生以下输出/错误

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/metpy/xarray.py", line 785, in _rebuild_coords
    var = var.metpy.convert_coordinate_units(coord_name, 'meters')
  File "/usr/local/lib/python3.6/dist-packages/metpy/xarray.py", line 190, in convert_coordinate_units
    data=self._data_array[coord].metpy.unit_array.m_as(units)
  File "/usr/local/lib/python3.6/dist-packages/pint/quantity.py", line 386, in m_as
    return self.to(units).magnitude
  File "/usr/local/lib/python3.6/dist-packages/pint/quantity.py", line 591, in to
    magnitude = self._convert_magnitude_not_inplace(other, *contexts, **ctx_kwargs)
  File "/usr/local/lib/python3.6/dist-packages/pint/quantity.py", line 540, in _convert_magnitude_not_inplace
    return self._REGISTRY.convert(self._magnitude, self._units, other)
  File "/usr/local/lib/python3.6/dist-packages/pint/registry.py", line 925, in convert
    return self._convert(value, src, dst, inplace)
  File "/usr/local/lib/python3.6/dist-packages/pint/registry.py", line 1762, in _convert
    return super()._convert(value, src, dst, inplace)
  File "/usr/local/lib/python3.6/dist-packages/pint/registry.py", line 1376, in _convert
    return super()._convert(value, src, dst, inplace)
  File "/usr/local/lib/python3.6/dist-packages/pint/registry.py", line 958, in _convert
    raise DimensionalityError(src, dst, src_dim, dst_dim)
pint.errors.DimensionalityError: Cannot convert from 'microradian' (dimensionless) to 'meter' ([length])

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/home/met_scheduler/scripts/satellite/satellite_metpy11.py", line 8, in <module>
    data_e = nc_e.metpy.parse_cf('Sectorized_CMI')
  File "/usr/local/lib/python3.6/dist-packages/metpy/xarray.py", line 774, in parse_cf
    var = self._rebuild_coords(var, crs)
  File "/usr/local/lib/python3.6/dist-packages/metpy/xarray.py", line 797, in _rebuild_coords
    var = var.assign_coords(coords={coord_name: new_coord_var})
  File "/data/home/met_scheduler/.local/lib/python3.6/site-packages/xarray/core/common.py", line 349, in assign_coords
    data.coords.update(results)
  File "/data/home/met_scheduler/.local/lib/python3.6/site-packages/xarray/core/coordinates.py", line 90, in update
    priority_arg=1, indexes=self.indexes)
  File "/data/home/met_scheduler/.local/lib/python3.6/site-packages/xarray/core/merge.py", line 362, in merge_coords
    expanded = expand_variable_dicts(aligned)
  File "/data/home/met_scheduler/.local/lib/python3.6/site-packages/xarray/core/merge.py", line 222, in expand_variable_dicts
    var = as_variable(var, name=name)
  File "/data/home/met_scheduler/.local/lib/python3.6/site-packages/xarray/core/variable.py", line 96, in as_variable
    "variable %r has invalid type %r" % (name, type(obj)))
TypeError: variable 'coords' has invalid type <class 'dict'>

感谢您对如何解决此问题的任何想法。

【问题讨论】:

    标签: python metpy


    【解决方案1】:

    您能否再次检查您使用 MetPy 安装的 Python 是否正确?我能够在我本地安装的带有 Python 3.9 的 MetPy 1.1.0 上运行您的代码。此外,您的回溯显示正在使用 Python 3.6; MetPy 1.1.0 仅支持 Python >=3.7。您应该无法使用该版本的 Python 安装 MetPy 1.1.0。

    您可以通过在脚本中添加以下内容来确认正在使用的 MetPy 版本:

    print(metpy.__version__)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 2019-05-14
      • 2015-01-27
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      相关资源
      最近更新 更多