Regridding Python xarray координаты - PullRequest
0 голосов
/ 30 января 2020

У меня есть несколько фиктивных данных с разрешением 0,2 и 1 градус. Я хотел бы сделать выборку foo в том же масштабе, что и foo1. Есть ли простой способ усреднить и пересчитать мои координаты широты и долготы как-нибудь?

import pandas as pd
import xarray as xr
import matplotlib.pyplot as plt

#Set at 0.2 degree grids ish
freq=20
lats=240
lons=1020
time=pd.date_range('2000-01',periods=freq,freq='Y')
data=np.random.rand(freq,lats,lons)
lat=np.linspace(-19.5,19.5,lats)
lon=np.linspace(120,290,lons)
foo = xr.DataArray(data, coords=[time, lat,lon], dims=['time', 'lat','lon'])
foo.sel(time='2005',method='nearest').plot()
plt.show()


#Set at 1 degree grids
freq1=20
lats1=40 #Factor of 6 difference
lons1=170
time1=pd.date_range('2000-01',periods=freq1,freq='Y')
data1=np.random.rand(freq1,lats1,lons1)
lat1=np.linspace(-19.5,19.5,lats1)
lon1=np.linspace(120,290,lons1)
foo1 = xr.DataArray(data1, coords=[time1, lat1,lon1], dims=['time', 'lat','lon'])


foo1.sel(time='2005',method='nearest').plot()
plt.show()

Ответы [ 2 ]

2 голосов
/ 01 февраля 2020

Xarray может линейно интерполировать широты и долготы, как если бы они были декартовыми координатами (как в вашем примере выше), но это не то же самое, что и географическая привязка. Для этого вы, вероятно, хотите проверить xesmf .

0 голосов
/ 31 января 2020

Я решил, что самый простой способ - это использовать сетку foo1.

Таким образом:

foo2=foo.interp(lat=lat1).interp(lon=lon1)
foo2.sel(time='2005',method='nearest').plot()

Должен создать точную карту сетки с субдискретизацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...