Xarray:如何处理不规则坐标

时间:2019-06-25 17:31:27

标签: python python-3.x geospatial python-xarray

我正在尝试使用xarray,但是我遇到了麻烦。

特别是因为我试图使其与不规则的纬度网格一起工作。

我在 lat / lon 网格上有一个带变量的netCDF文件,这里是slp。加载时会给我以下信息:

<xarray.Dataset>
Dimensions:         (Time: 61375, lat: 81, lon: 81)
Dimensions without coordinates: Time, lat, lon
Data variables:
    sea_level_pres  (Time, lat, lon) float64 ...

到目前为止,一切都很好。现在,我想添加我的不规则纬度网格作为坐标。我尝试了以下方法:

slp["latc"] = (("lat","lon"),coord.XLAT.values.squeeze())
slp["lonc"] = (("lat","lon"),coord.XLONG.values.squeeze())
slp.set_coords("lonc")
slp.set_coords("latc")

coord是另一个netCDF,其中描述了我的不规则网格。现在我得到以下信息:

<xarray.Dataset>
Dimensions:         (Time: 61375, lat: 81, lon: 81)
Coordinates:
    latc            (lat, lon) float32 34.69266 34.73062 ... 54.56264 54.51206
    lonc            (lat, lon) float32 -7.4926453 -7.1955566 ... 21.634521
Dimensions without coordinates: Time, lat, lon
Data variables:
    sea_level_pres  (Time, lat, lon) float64 ...

在我看来,这是处理不规则网格的最便捷方法:具有物理坐标和索引坐标。

但是在这里,我不确定自己做的是否正确,因为当我尝试根据物理纬度和经度进行子集化时,我永远都做不到:

lat_bnd = [35,40]
slp.sel(lat=slice(*lat_bnd))

礼物:

<xarray.Dataset>
Dimensions:         (Time: 61375, lat: 5, lon: 81)
Coordinates:
    latc            (lat, lon) float32 43.30759 43.35192 ... 44.46182 44.41968
    lonc            (lat, lon) float32 -9.37085 -9.030823 ... 18.309692 18.65686
Dimensions without coordinates: Time, lat, lon
Data variables:
    sea_level_pres  (Time, lat, lon) float64 ...

所以我似乎要对索引进行切片,而不是对我的经度和纬度进行分类……而是类似:

slp.sel(latc=slice(*lat_bnd))

引发以下错误:

ValueError: dimensions or multi-index levels ['latc'] do not exist

任何有助于您理解的帮助:)

谢谢!

0 个答案:

没有答案