Как указать значения размеров при создании файла NetCDF в Python?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как указать значения размеров при создании файла NetCDF в Python?

Сообщение Anonymous »

Я создаю файл NetCDF4, который в настоящее время имеет четыре переменные:

1) Температура поверхности суши (3D-массив — время, широта, долгота)
2) Долгота (1D — координата центра каждого пикселя)

3) Широта (1D — координата центра каждого пикселя)< /p>

4) Время (время получения изображения в часах с 01.01.1900 00:00:00)

В настоящее время я использую для этого следующий код:

Код: Выделить всё

    #==========================WRITE THE NETCDF FILE==========================#

newfile = nc.Dataset(export_filename, 'w', format = 'NETCDF4_CLASSIC')

#==========================SET FILE DIMENSIONS============================#

newfile.createDimension('lat', ny)
newfile.createDimension('lon', nx)
newfile.createDimension('time', len(filenames))

#==========================SET GLOBAL ATTRIBUTES==========================#

newfile.title = ('Title')
newfile.history = "File created on " + datetime.strftime(datetime.today(), "%c")
newfile.Conventions = 'CF-1.6'

#==========================CREATE DATA VARIABLES==========================#

#--------------------------LST VARIABLE-----------------------------------#

LSTs = newfile.createVariable('LST', np.int16, ('time', 'lat', 'lon'), fill_value = -8000)
LSTs.units = 'Degrees C'
LSTs.add_offset = 273.15
LSTs.scale_factor = 0.01
LSTs.standard_name = 'LST'
LSTs.long_name = 'Land Surface Temperature'
LSTs.grid_mapping = 'latitude_longitude'
LSTs.coordinates = 'lon lat'

LSTs[:] = LSTd[:]

#--------------------------LON AND LAT AND TIME--------------------------#

LONGITUDEs = newfile.createVariable('LONGITUDE', np.float64, ('lon',))
LONGITUDEs.units = 'Decimal Degrees East'
LONGITUDEs.standard_name = 'Longitude'
LONGITUDEs.long_name = 'Longitude'
LONGITUDEs[:] = LONd[:]

LATITUDEs = newfile.createVariable('LATITUDE', np.float64, ('lat',))
LATITUDEs.units = 'Decimal Degrees North'
LATITUDEs.standard_name = 'Latitude'
LATITUDEs.long_name = 'Latitude'
LATITUDEs[:] = LATd[:]

TIMEs = newfile.createVariable('TIME', np.int32, ('time',))
TIMEs.units = 'hours since 1900-01-01 00:00:00'
TIMEs.standard_name = 'Time'
TIMEs.long_name = 'Time of Image Acquisition'
TIMEs.axis = 'T'
TIMEs.calendar = 'gregorian'
TIMEs[:] = time[:]

#--------------------------SAVE THE FILE---------------------------------#

newfile.close();
Этот код создает файл netCDF с переменной температуры поверхности земли, имеющей 24 полосы (по одной на каждый час дня). Этот код работает так, как я хотел, хотя есть одна небольшая проблема, которую я хочу решить. Когда я запускаю gdalinfo для переменной LST, я получаю (это сокращенная версия):

Код: Выделить всё

Band 1.....
...
NETCDF_DIM_TIME = 1
...
Я хочу, чтобы это значение 1 было установлено таким же, как переменная «время» (что примерно равно 1081451 часу с 01.01.1900 00:00: 00), который я включил в приведенный выше код. Поэтому я хочу понять, как это можно изменить для каждой полосы в файле?

ОБНОВИТЬ ВОПРОС: Когда я делаю gdalinfo в файле (опять же подмножество):

Код: Выделить всё

NETCDF_DIM_EXTRA={time}
NETCDF_DIM_time_DEF={24,3}
но отсутствует опция «NETCDF_DIM_time_VALUES», и мне нужно установить для нее переменную времени, и она должна работать. КАК ЭТО СДЕЛАТЬ?

В настоящее время он просто настраивается на номер диапазона, но я хочу, чтобы он содержал информацию о часе его работы. приобретение.

ОБНОВЛЕНИЕ 1:

Я пытался уточнить

Код: Выделить всё

LSTs.NETCDF_DIM_Time = time
во время формирования файла netCDF, и это присваивает все значения время от времени NETCDF_DIM_TIME в gdal, так что каждая полоса имеет 24 значения времени, а не только одно.

ОБНОВЛЕНИЕ 2:

При дальнейшем копании я думаю, что это NETCDF_DIM_time_VALUES метаданные, которые необходимо установить в переменную time. Я обновил свой вопрос, чтобы спросить, как это сделать.

Подробнее здесь: https://stackoverflow.com/questions/418 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»