Xarray: как бороться с нерегулярными координатами - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь обойтись с 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

Любая помощь в понимании этого будет принята с благодарностью:)

Заранее спасибо!

...