我正在使用来自DWD ()的数据集,并希望按纬度和经度选择数据。到目前为止,进口是可行的。所以这里没问题。现在我想按纬度和经度选择数据。当我使用x和y时,当我尝试用sel选择数据时,它会工作。
但不是长懒腰的。我试过了所有我能找到的答案,比如:
ds.sel(latitude=50, longitude=14, method='nearest')但我知道这个错误
ValueError:维度或多索引级别“纬度”、“经度”不存在
这是我的密码:
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
import xarray as xr
ds = xr.open_dataset(
'cosmo-d2_germany_rotated-lat-lon_single-level_2019061721_012_ASWDIFD_S.grib2',
engine='cfgrib',
backend_kwargs={'filter_by_keys': {'stepUnits': 1}}
)
print(ds)输出:
<xarray.Dataset>
Dimensions: (x: 651, y: 716)
Coordinates:
time datetime64[ns] ...
step timedelta64[ns] ...
surface int32 ...
latitude (y, x) float64 ...
longitude (y, x) float64 ...
valid_time datetime64[ns] ...
Dimensions without coordinates: x, y
Data variables:
ASWDIFD_S (y, x) float32 ...
Attributes:
GRIB_edition: 2
GRIB_centre: edzw
GRIB_centreDescription: Offenbach
GRIB_subCentre: 255
Conventions: CF-1.7
institution: Offenbach
history: 2019-07-22T13:35:33 GRIB to CDM+CF via cfgrib-发布于 2019-07-23 06:42:48
在您的文件中,latitude和longitude不是维度,而是包含坐标数据的辅助2D变量。在xarray术语中,它们被称为非维坐标,您不能对它们进行切分。另见使用多维坐标。
发布于 2019-08-08 11:41:58
如果你把数据重新整理到python内部的一个规则网格中,这样你就可以把纬度和经度作为一维矢量,你就必须建立一个网格,然后在那个网格上插入数据。
此外,您还需要检查https://www.ecmwf.int/sites/default/files/elibrary/2018/18727-cfgrib-easy-and-efficient-grib-file-access-xarray.pdf以查看访问xarray中的grib文件的方法。如果您不想为此目的使用xarray,pygrib是另一种选择。
发布于 2019-11-08 09:10:36
我无法测试解决方案,因为我没有安装cfgrib引擎,但您是否可以尝试使用
numpy.find_nearest(lonarray, lonvalue)要根据以下soln:在numpy数组中找到最近的值在您的点附近查找lon和lat索引
然后直接在x,y坐标上使用索引选择点?
http://xarray.pydata.org/en/stable/indexing.html
https://stackoverflow.com/questions/57145557
复制相似问题