Я пытаюсь интерполировать глобальную сетку на более мелкую сетку, но когда я использую ds.interp()
, я не знаю, как указать, что 'lon'
- это обернутая / круговая переменная (не уверен, какой правильный термин) . Ниже я воспроизвел свою проблему с некоторыми случайными данными. Когда я выполняю интерполяцию, вы видите, что края ds_new
становятся значениями NaN. Для верха и низа это нормально (и понятно), однако для измерения 'lon'
он должен соединять значения 0 и 359, а не делать значения NaN по краям (см. График справа).
import numpy as np
import xarray as xr
import matplotlib.pyplot as plt
lon = np.linspace(0, 354.4, 64)
lat = np.linspace(-87.2, 87.2, 32)
data = np.random.rand(32,64)
da = xr.DataArray(data=data, dims=["lat", "lon"], coords=[lat,lon])
ds = da.to_dataset(name='data')
new_lon = np.linspace(0, 359, 360)
new_lat = np.linspace(-89.5, 89.5, 180)
ds_new = ds.interp(lat=new_lat, lon=new_lon, method='linear')
fig, axes = plt.subplots(ncols=2, figsize=(16, 4))
ds.data.plot(ax=axes[0])
ds_new.data.plot(ax=axes[1])
график данных