在python中绘制grib文件时是否有可能限制坐标?

问题描述 投票:0回答:1

我想根据模型创建天气图。为此,德国气象局以GRIB2格式提供其预报数据。

使用xarray,我像这样读取grib文件:

ds = od('path/to/grib', backend_kwargs={'filter_by_keys': {'typeOfLevel': 'heightAboveGround', 'level': 2}})

此后,我想绘制此数据:

fig = plt.figure(figsize=(10,10))
ax = plt.axes(projection=ccrs.Robinson())
ax.coastlines(resolution='10m')
ax.gridlines()

states_provinces = cfeature.NaturalEarthFeature(
    category='cultural',
    name='admin_0_boundary_lines_land',
    scale='10m',
    facecolor='none')
provinces_provinces = cfeature.NaturalEarthFeature(
    category='cultural',
    name='admin_1_states_provinces_lines',
    scale='10m',
    facecolor='none')


ax.add_feature(cfeature.COASTLINE)
ax.add_feature(states_provinces, edgecolor='gray', zorder=1)
ax.add_feature(provinces_provinces, edgecolor='gray', zorder=1)

plot = ds.t2m.plot(cmap=plt.cm.coolwarm, transform=ccrs.PlateCarree())

但是这些GRIB文件适用于整个欧洲。我只想举例说明德国的数据及其背景地图?因此,如何限制坐标(纬度,经度),以便绘制的地图仅显示例如德国?

python matplotlib python-xarray cartopy grib
1个回答
0
投票

您可以做的是使用where函数屏蔽数据:

ds = ds.where(np.logical_and(ds.latitude > lat_bounds_min, ds.latitude < lat_bounds_max))
ds = ds.where(np.logical_and(ds.longitude > lon_bounds_min, ds.longitude < lon_bounds_max))

要仅获取德国,您需要shapefile来检查坐标是否在德国多边形中。但是,如果您需要这样的解决方案,这还不是很清楚。

© www.soinside.com 2019 - 2024. All rights reserved.