按纬度和经度选择数据

2024-06-28 19:50:51 发布

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

我使用的是来自DWD(Deutscher Wetterdienst)的数据集,希望通过经纬度选择数据。到目前为止,导入有效。所以没问题。现在我要按经纬度选择数据。当我使用x和y时,当我试图用sel选择数据时,它是有效的

但不是拉特和朗。我试了所有我能找到的答案,比如:

ds.sel(latitude=50, longitude=14, method='nearest')

但我发现了错误

ValueError: dimensions or multi-index levels ['latitude', 'longitude'] do not exist

这是我的准则:

^{pr2}$

输出:

<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-

Tags: 数据timecfdimensions经纬度nsfloat64latitude
3条回答

在您的文件latitudelongitude不是维度,而是包含坐标数据的辅助二维变量。用xarray的说法,它们被称为non-dimension coordinates,你不能对它们进行切片。另请参见Working with Multidimensional Coordinates。在

如果在python中将数据重新生成一个规则网格,这样就可以将纬度和经度作为1D向量,那么就必须创建一个网格,然后在该网格上插值数据。在

您还需要检查https://www.ecmwf.int/sites/default/files/elibrary/2018/18727-cfgrib-easy-and-efficient-grib-file-access-xarray.pdf以查看在xarray中访问grib文件的方法。如果您不想为此使用xarray,pygrib是另一个选择。在

我无法测试解决方案,因为我没有安装cfgrib引擎,但你能试着用一下吗

numpy.find_nearest(lonarray, lonvalue)

要根据此解决方案查找点附近的lon和lat索引: Find nearest value in numpy array

然后用索引直接在x,y坐标上选择点?在

http://xarray.pydata.org/en/stable/indexing.html

相关问题 更多 >