使用metpy.calc.advection:AttributeError:crs属性时出错不可用

2024-09-22 16:36:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用NetCDF格式的一些大气模型输出。我想计算850百帕风的温度平流。我试着使用metpy函数 https://unidata.github.io/MetPy/latest/api/generated/metpy.calc.advection.html#metpy.calc.advection 同样的。我附加了我的代码的一部分。请帮助解决此错误。所有必需的库都将更新为其最新版本

import xarray as xrimport numpy as npimport matplotlib.pyplot as pltfrom metpy.units import unitsimport cartopy.crs as ccrsimport cartopy.feature as cfeatureimport metpy.calc as mpcalc

temp = xr.open_dataset('ts.nc')u10 = xr.open_dataset('u10.nc')v10 = xr.open_dataset('v10.nc')

lat = temp['lat']lon = temp['lon']lonn, latt = np.meshgrid(lon,lat)

dx, dy = mpcalc.lat_lon_grid_deltas(lon, lat, )

time = np.array(temp.time[0:9])

T1 = temp['ts'][0:9,:,:]

u10_1 = u10['u10'][0:9,:,:]
v10_1 = v10['v10'][0:9,:,:]

T11 = xr.DataArray(data = T1.values, dims = ['time', 'lat', 'lon'], coords=dict(lat=lat, lon = lon, time = time))u10_11 = xr.DataArray(data = u10_1.values, dims = ['time', 'lat', 'lon'], coords=dict(lat=lat, lon = lon, time = time))v10_11 = xr.DataArray(data = v10_1.values, dims = ['time', 'lat', 'lon'], coords=dict(lat=lat, lon = lon, time = time))

advec = mpcalc.advection(T1, [u10_1, v10_1], (dx, dy))

[守则][1]

错误:属性错误:crs属性不可用。

如果需要更多的参考资料,请告诉我


Tags: importtimeas错误npcalctemplon
2条回答

如果数据集中存在CF投影元数据,则MetPy可以通过调用parse_cf()方法自动识别正确的CR:

v10 = xr.open_dataset('v10.nc')
v10 = v10.metpy.parse_cf()

提到的错误(AttributeError:crs属性不可用)本身说明了代码中的问题

此错误是因为数据坐标中没有“cartopy投影”属性。您需要在数据中手动添加投影

T1=T1.metpy.assign_crs(grid_mapping_name='latitude_longitude', earth_radius=6371229.0)

您可以从this列表中选择任何一个投影

相关问题 更多 >