首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换度量单位GFS precipitation_rate

转换度量单位GFS precipitation_rate
EN

Stack Overflow用户
提问于 2020-10-19 23:23:37
回答 1查看 86关注 0票数 0

我遵循了这里的示例(https://unidata.github.io/python-gallery/examples/Precipitation_Map.html),但在尝试访问单位时,我得到了一个维度错误。我假设这与pint和它解析单元的方式有关,而事实上沉淀是一个速率。任何帮助都将不胜感激

代码语言:javascript
复制
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import metpy
import datetime
import cartopy.crs as ccrs
import cartopy.feature as cfeature
from xarray.backends import NetCDF4DataStore
import xarray as xr
import numpy as np
from metpy.units import masked_array, units
from siphon.catalog import TDSCatalog



best_gfs = TDSCatalog('http://thredds.ucar.edu/thredds/catalog/grib/NCEP/GFS/'
                      'Global_0p25deg/catalog.xml?dataset=grib/NCEP/GFS/Global_0p25deg/Best')
best_gfs.datasets


best_ds = list(best_gfs.datasets.values())[0]
ncss = best_ds.subset()

query = ncss.query()
query.lonlat_box(-66.243114,-25.762908,-28.708933, -2.191886).time_range(datetime.datetime.utcnow(), datetime.datetime.utcnow() + datetime.timedelta(days=10))
query.accept('netcdf4')
query.variables('Precipitation_rate_surface')
data = ncss.get_data(query)
data = xr.open_dataset(NetCDF4DataStore(data))

lon_2d, lat_2d = np.meshgrid(data['lon'], data['lat'])
precip = data['Precipitation_rate_surface']

precip.metpy.units
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-20 01:20:54

这是因为该变量的单位字符串是kg.m-2.s-1,这是一个与UDUnit兼容的字符串,但不能与MetPy用于单元支持的Pint中的默认单元解析器一起工作。

在MetPy 1.0中已修复此问题。您可以使用conda安装MetPy 1.0的第二个候选版本:

代码语言:javascript
复制
conda install -c conda-forge/label/metpy_rc metpy=1.0

或者使用pip:

代码语言:javascript
复制
pip install --pre metpy=1.0

MetPy < 1.0的解决方法是在调用precip.metpy.units之前覆盖单元元数据

代码语言:javascript
复制
precip.attrs['units'] = 'kg m^-2 s^-1'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64430383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档