Я пытаюсь обойтись с xarray, но сталкиваюсь с проблемами.
Тем более, что я пытаюсь заставить его работать с нерегулярными решетками широт.
У меня есть файл netCDF спеременная, здесь slp, на сетке lat / lon .Что при загрузке дает мне это:
<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")
Где координата - это еще один 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
Любая помощь в понимании этого будет принята с благодарностью:)
Заранее спасибо!