проблема со временем в файле HadGEM2-ES NetCDF - PullRequest
0 голосов
/ 16 октября 2018

У меня есть файл:

tasmin_day_HadGEM2-ES_rcp45_r4i1p1_20151201-20251130.nc

, и когда я запускаю код de:

import xarray as xr
import matplotlib.pyplot as plt
path = r'C:\Users\alexandre\Downloads'
df = xr.open_mfdataset(path + r'\tasmin_day_HadGEM2-ES_rcp45_r4i1p1_20151201-20251130.nc')
plt.figure()
df['tasmin'].isel(lat=100, lon=100).plot(label='plot1')
print(df['tasmin'].time.min())
df['tasmin'].isel(lat=100, lon=100).plot(label='plot2')
print(df['tasmin'].time.min())
plt.legend()

, у меня всегда есть разные графикипример:

enter image description here

если я посмотрю даты, из команды печати я смог бы найти:

    <xarray.DataArray 'time' ()>
array('1970-01-01T00:00:00.000000000', dtype='datetime64[ns]')
Coordinates:
    height   float64 ...
<xarray.DataArray 'time' ()>
array('2015-12-01T12:00:00.000000000', dtype='datetime64[ns]')
Coordinates:
    height   float64 ...

Что действительно странно, как данные начинаются на 2015-12-01!

Я ценю любую помощь.Спасибо

1 Ответ

0 голосов
/ 16 октября 2018

После некоторого поиска я нашел ответ по документации xarray :

Как и многие реальные наборы данных, этот набор данных не полностью соответствует соглашениям CF.Неожиданные форматы обычно приводят к сбою автоматического декодирования xarray.Обойти это можно либо установив decode_cf = False в open_dataset, чтобы отключить любое использование соглашений CF, либо просто отключив проблемный парсер.В этом случае мы устанавливаем decode_times = False, потому что ось времени здесь предоставляет атрибут календаря в формате, который xarray не ожидает (целое число 360 вместо строки, такой как «360_day»).

Итак, просто изменителиния:

df = xr.open_mfdataset(path + r'\tasmin_day_HadGEM2-ES_rcp45_r4i1p1_20151201-20251130.nc'

до

df = xr.open_mfdataset(path + r'\tasmin_day_HadGEM2-ES_rcp45_r4i1p1_20151201-20251130.nc', decode_times=False)
...