【问题标题】:Using XArray.isel to access data in GRIB2 file from a specific location?使用 XArray.isel 从特定位置访问 GRIB2 文件中的数据?
【发布时间】:2022-01-04 04:13:06
【问题描述】:

我正在尝试访问 GRIB2 文件中特定经度和纬度的数据。我一直在关注本教程 (https://www.youtube.com/watch?v=yLoudFv3hAY) 大约 2:52,但我的 GRIB 文件的格式与示例不同,并且使用不同的变量

import xarray as xr
import pygrib
ds=xr.open_dataset('testdata.grb2', engine='cfgrib', filter_by_keys={'typeOfLevel': 'heightAboveGround', 'topLevel':2})
ds

打印出来:

<xarray.Dataset>
Dimensions:            (latitude: 361, longitude: 720)
Coordinates:
    time               datetime64[ns] ...
    step               timedelta64[ns] ...
    heightAboveGround  float64 ...
  * latitude           (latitude) float64 90.0 89.5 89.0 ... -89.0 -89.5 -90.0
  * longitude          (longitude) float64 0.0 0.5 1.0 1.5 ... 358.5 359.0 359.5
    valid_time         datetime64[ns] ...
Data variables:
    t2m                (latitude, longitude) float32 ...
    sh2                (latitude, longitude) float32 ...
    r2                 (latitude, longitude) float32 ...

然后我尝试使用 imshow 沿纬度和经度 (t2m?) 维度进行索引:

t0_ds = ds.isel(t2m={200,200})

这给出了这个错误:

ValueError: Dimensions {'t2m'} do not exist. Expected one or more of Frozen({'latitude': 361, 'longitude': 720})

显然,我使用 isel 的方式存在错误,但我尝试了许多变体,但找不到有关此特定错误的太多信息

【问题讨论】:

    标签: python python-xarray grib pygrib cfgrib


    【解决方案1】:

    您可以使用以下方法访问与特定纬度/经度最近的数据点:

    lat = #yourlatitude
    lon = #yourlongitude
    
    ds_loc = ds.sel(latitude = lat, longitude = lon, method = 'nearest')
    

    isel 用于按索引访问点,即:

    ds_loc = ds.isel(latitude = 200)
    

    将返回沿第 200 个纬度值的子集。

    【讨论】:

      猜你喜欢
      • 2020-04-25
      • 2017-10-29
      • 1970-01-01
      • 1970-01-01
      • 2019-03-26
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 2011-12-01
      相关资源
      最近更新 更多