как извлечь дату из файла netcdf?

У меня есть большая коллекция файлов netcdf, которые мне нужно обрезать с определенной широтой и долготой и переписать как новый файл.

У меня возникли проблемы: при написании этого нового файла netcdf я хочу назвать его соответствующей датой и временем, например yyyymmddhhmm.nc, но я не знаю, как извлечь дату файла. Ниже приведены некоторые сведения о файле:

processing_level: National Aeronautics and Space Administration (NASA) L2
date_created: 2020-01-01T14:10:01.2Z
cdm_data_type: Image
time_coverage_start: 2020-01-01T14:00:21.7Z
time_coverage_end: 2020-01-01T14:09:52.5Z
timeline_id: ABI Mode 6
production_data_source: Realtime
id: e9ac2711-c550-4b8a-9c27-babcd1fc49f6
dimensions(sizes): lon(5777), lat(5777)
variables(dimensions): |S1 crs(), float64 lat(lat), float64 lon(lon), int16 CMI(lat, lon)

person RodX    schedule 19.01.2021    source источник
comment
привет, я как бы предполагаю, что вы на самом деле не хотите использовать дату создания, поскольку она вряд ли будет совпадать с датой, на которую ссылаются данные (и конкретная дата создания может использоваться для многих разных файлов , скажем, например, данные были повторно обработаны). Разве вместо этого вам не нужна дата из временной переменной данных, которая была бы уникальной?   -  person Adrian Tompkins    schedule 01.02.2021
comment
В этом конкретном случае это одно и то же время, рассматриваемый файл представляет собой изображение GOES-16, он начинает сбор данных в 14:00 по всемирному координированному времени, заканчивается в 14:09, а файл создается в 14:10.   -  person RodX    schedule 02.02.2021
comment
Я бы по-прежнему всегда использовал время из измерения, к которому относятся данные, а не время создания файла. Они такие же для файлов, которые вы проверили, но если файлы позже будут повторно обработаны или временной интервал близок к середине ночи, это может привести к бесконечной путанице. (по опыту ;-))   -  person Adrian Tompkins    schedule 02.02.2021


Ответы (2)


Вы должны решить эту проблему с помощью xarray, если время файла правильно отформатировано. Попробуйте следующее:

import xarray as xr
ds = xr.open_dataset("infile.nc)
ds.time.values
person Robert Wilson    schedule 20.01.2021
comment
Получил это AttributeError: 'Dataset' object has no attribute 'time': / - person RodX; 20.01.2021
comment
Странный. Я предполагаю, что файл был создан НАСА, и в этом случае время должно появиться. Не уверен, можно ли предоставить дополнительную помощь без дополнительной информации о данных - person Robert Wilson; 20.01.2021
comment
на самом деле, просматривая документацию xarray, я понял ваш ответ и нашел решение - person RodX; 20.01.2021

Итак, спасибо Роберту за помощь, вот как мне удалось это решить:

import xarray as xr
ds = xr.open_dataset(infile.nc)
date = ds.attrs['date_created']

Или, используя netCDF4:

import netCDF4
ds = netCDF4.Dataset(infile.nc, 'r')
date = ds.__dict__['date_created']
person RodX    schedule 20.01.2021