使用python从netcdf绘制风向量

问题描述

我目前在大气/气候物理学方面实习。我有来自ERA5(哥白尼)的netcdf数据,我已经在不同的地图,图形等中绘制了这些数据... 我需要用基图或除底图以外的任何其他东西绘制风向,但我无法弄清楚。

我的脚本的这一部分现在看起来像这样:

import xarray as xr
from netCDF4 import Dataset as NetCDFFile 
import matplotlib.pyplot as plt
import numpy as np

import cartopy
import cartopy.feature as cfeat
import cartopy.crs as ccrs

ncw = xr.open_dataset('D:\Stage_IGE_CNRS\ERA5.nc')
nc2 = ncw.sel(time = slice('2016-03-06T06:00:00','2016-03-31T18:00:00'),level = 1000).mean('time')
    
u = nc2['u']
v = nc2['v']
lon = nc2['longitude']
lat = nc2['latitude']

感谢您的帮助。

Thomas V。

解决方法

如果要绘制风矢量,您正在从matplotlib中寻找quiver()(CartoPy仅提供了可感知投影的版本):

import cartopy.crs as ccrs
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(1,1,projection=ccrs.LambertConformal())
ax.quiver(lon,lat,u,v,transform=ccrs.PlateCarree())

如果您想倒钩倒钩,则可以使用barbs()

我们通过ccrs.PlateCarree()是因为您的数据似乎位于lon / lat空间中。这意味着在这种情况下,您的风向是与地球有关。调用quiver / barbs时,cartopy假定您的坐标(即x / y或lon / lat)与矢量分量(即u / v)在同一坐标系中。