2015-06-03 7 views
2

Я хочу записать сжатые файлы netCDF4 с помощью пакета raster. ncdf4 и rgdal установлены правильно.Запись сжатых файлов netCDF4 с растром

Ниже, однако, не в состоянии возвратить netCDF4 сжатый файл:

library(raster) 
r <- raster() <- runif(86400) 
r[] <- <- runif(86400) 
writeRaster(r, "test.nc", options=c("COMPRESS=DEFLATE", "FORMAT=NC4")) 

На самом деле он просто возвращает стандартный NetCDF файл:

bash $ > cdo sinfo test.nc 
    File format : netCDF 

не только несжатый, но даже не netCDF4.

В соответствии с документацией GDAL эти параметры должны работать (см. here в разделе «Варианты создания»). Согласно растровому руководству под writeRaster:

опция: Character. Параметры GDAL, специфичные для формата файла. Например, когда записи файла GEOTIFF вы можете использовать: варианты = C ("COMPRESS = NONE", "TFW = YES")

Что может быть не так?

+0

Если вы можете, не используйте 'writeRaster' для записи NetCDF и предпочитайте функции из пакета' ncdf4'. Это позволит вам использовать сжатие (в функции 'ncvar_def'). –

ответ

5

Файлы ncdf не записываются через GDAL, потому что пакет rgdal (по крайней мере, двоичная версия на окнах) не поставляется с драйвером ncdf. Вместо этого writeRaster использует пакет ncdf или (желательно) ncdf4, поэтому вам придется использовать аргументы, предоставленные пакетом ncdf4 (в функции ncvar_def). То есть, вы должны сделать, например, compression=7, что автоматически превратит файл в формат ncdf4. Однако текущая версия raster игнорирует эти аргументы. Я установил, что в разрабатываемой версии на R-Фордж (версия 2.4-7), так что вы можете сделать:

writeRaster(r, "test.nc", datatype='INT2S', force_v4=TRUE, compression=7) 

(force_v4 аргумент передается nc_create).

+0

спасибо. Я думаю, что это должно быть указано в руководстве: я знал, что 'raster' использовал' ncdf4', но в ручной записи 'writeRaster' только GDAL упоминается в' options'. Я попробую версию dev. Еще раз спасибо за ответ и за ** отличный ** пакет. – AF7