python - 使用metpy和siphon获取数据时找不到NetCDF属性
问题描述
我正在尝试绘制一些通过 Unidata siphon 包访问的 NetCDF 格式的气象数据。
我已经导入了 MetPy 文档建议的相关库
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
from netCDF4 import num2date
import numpy as np
import xarray as xr
from siphon.catalog import TDSCatalog
from datetime import datetime
import metpy.calc as mpcalc
from metpy.units import units
我已经按照 Siphon docs 构建了一个数据查询
best_gfs = TDSCatalog('http://thredds.ucar.edu/thredds/catalog/grib/NCEP/GFS/Global_0p25deg/catalog.xml?dataset=grib/NCEP/GFS/Global_0p25deg/Best')
best_ds = best_gfs.datasets[0]
ncss = best_ds.subset()
query = ncss.query()
query.lonlat_box(north=55, south=20, east=-60, west=-90).time(datetime.utcnow())
query.accept('netcdf4')
query.variables('Vertical_velocity_pressure_isobaric','Relative_humidity_isobaric','Temperature_isobaric','u-component_of_wind_isobaric','v-component_of_wind_isobaric','Geopotential_height_isobaric')
data = ncss.get_data(query)
不幸的是,当我尝试使用 Metpy 文档中的代码解析数据集时
data = data.metpy.parse_cf()
我收到一个错误:“AttributeError:NetCDF:找不到属性”
在尝试解决这个问题时,我遇到了另一个似乎有同样问题的 SO 帖子 ,但是那里建议的解决方案——将我的metpy 更新到最新版本——对我不起作用。我使用 Conda 更新了metpy,但遇到了与更新之前相同的问题。关于如何解决这个问题的任何其他想法?
解决方案
现在 Siphon 中的以下代码
data = ncss.get_data(query)
将从中返回一个Dataset
对象netcdf4-python
。您需要一个额外的步骤将其交给 xarray,这将使 MetPyparse_cf
可用:
from xarray.backends import NetCDF4DataStore
ds = xr.open_dataset(NetCDF4DataStore(data))
data = ds.metpy.parse_cf()
推荐阅读
- highcharts - Highcharts柱形图未在Edge中呈现
- kubernetes - Terraform EKS 在节点组上指定 node-role.kubernetes.io 标签
- excel - 在动态用户表单复选框上做一个事件
- java - 通过java从SQL SERVER生成脚本
- javascript - Deezer JavaScript SDK 播放器在登录时在重定向页面上登录失败
- angular - ngfor 循环中的函数和条件不断执行
- powershell - 根据powershell中的列对txt文件进行排序
- java - 杀死Java进程并重新启动
- c++ - 基础构造函数根据输入调用派生构造函数 - 在运行时选择对象子类型
- html - 为什么不使用 href="./other" 附加路径段?