2013-08-08 1 views
0

Я пытаюсь преобразовать из netCDF4 в scipy.io netcdf, поскольку веб-страница, на которой идет программа, не имеет модуля netCDF4.Преобразование из netCDF4 в scipy.io netcdf

Программа прекрасно работает в извлечении значений netCDF4 из файла для температур в degK дает мне такие ценности, как:

[[ 258.77999878 258.77999878 258.77999878 ..., 258.77999878 
258.77999878 258.77999878] 
[ 259.29998779 259.54998779 259.82000732 ..., 258.3500061 
258.70001221 258.97000122] 
[ 264.1000061 264.47000122 264.82000732 ..., 262.40002441 
263.04998779 263.6000061 ]]. 

Однако при использовании scipy.io NetCDF и тот же файл, используемый в netCDF4. Программа работает она должна снова дать значения температуры в degK но значения выходят как:

[[-25403 -25403 -25403 ..., -25403 -25403 -25403] 
[-25351 -25326 -25299 ..., -25446 -25411 -25384] 
[-24871 -24834 -24799 ..., -25041 -24976 -24921]]. 

мне было просто интересно, если кто-то сталкивался с этой проблемой раньше, и как вы ее решить, так что scipy.io NetCDF программа даст те же самые значения.

ответ

1

Прежде всего, вам нужно отличить, что вы читаете файл netCDF-3 или netCDF-4. Модуль scipy.io.netcdf может читать только netCDF-3, поэтому, если это файл netCDF-4, вам не повезло. Не то, чтобы разница в том, что файлы netCDF-4 используют HDF-5 в качестве хранилища файлов. Тем не менее, похоже, что он читал в что-то из вашего файла, поэтому вполне вероятно, что у вас есть файл netCDF-3.

Если это так, вам нужно будет искать атрибуты «шкала» и «смещение» на вашей переменной температуры и применять их непосредственно при использовании scipy.io.netcdf. Модуль netCDF-4-python автоматически ищет эти атрибуты и применяет их «за кулисами» для вас, поэтому ваши данные выглядят нормально при прохождении через этот модуль.

Cheers,

Шон

+0

OP, вероятно, может также использовать 'netCDF.Dataset ('file.nc', 'W', формат = 'NETCDF3_CLASSIC')' при работе на местном уровне, а затем файл будет b правильно читается scipy.io. – naught101