Как интерполировать обернутую / круговую сетку с помощью xarray? - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь интерполировать глобальную сетку на более мелкую сетку, но когда я использую 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])

график данных

1 Ответ

0 голосов
/ 12 июля 2020

В настоящее время нет способа сообщить xarray, что координата является периодом c, но в нашей дорожной карте есть поддержка этого.

К сожалению, сначала требуется значительный рефакторинг, чтобы позволить координатным переменным обернуть любые индексы, а не только pandas индексы. Планируется, что это произойдет в ближайшие 6 месяцев или около того, и вы можете отслеживать прогресс этих усилий на странице проекта .

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