2013-09-17 5 views
1

Я хочу сохранить карту «среза» из набора данных в новый файл netcdf. Код в вопрос заключается в следующем:Сохраните двумерный массив в R в netcdf

library(ncdf) 
ncfname <- “cru10min30_tmp.nc” 
crutmp <- open.ncdf(ncfname) 

tmp.array <- get.var.ncdf(crutmp,"tmp") 
close.ncdf(crutmp) 
month <- 1 
tmp.slice <- tmp.array[,,month] 

набор данных доступен в http://geography.uoregon.edu/GeogR/data/raster/cru10min30_tmp.nc и этот фрагмент кода был взят из примера дают на http://geography.uoregon.edu/GeogR/topics/raster01.htm. Как сохранить двумерный массив tmp.slice в качестве нового файла netcdf?

Спасибо и дайте мне знать, если вам нужна дополнительная информация, чтобы помочь вам проанализировать проблему.

ответ

1

Сначала вам нужно создать новый файл NetCDF, а затем добавить срез к этому вновь созданному файлу.

Получить значение размеров из исходного файла:

lat <- get.var.ncdf(crutmp,"lat") 
lon <- get.var.ncdf(crutmp,"lon") 

использовать эти массивы, чтобы определять размеры:

Lat <- dim.def.ncdf(name = "lat", units = "m", vals = lat) 
Lon <- dim.def.ncdf(name = "lon", units = "m", vals = lon) 

Определить переменный по этим параметрам:

mv <- -9999 # missing value 
z <- var.def.ncdf(name = "z", units = "m", dim = list(Lat, Lon), prec="double", missval = mv) 

сейчас создать новый файл NetCDF, который содержит переменную z:

newnc <- create.ncdf(filename = "tmp_slice.nc", vars = list(z))   

Поставь значения квант времени (tmp.slice) в переменной г:

put.var.ncdf(nc = newnc, varid = "z", vals = tmp.slice, start = c(1,1), count = c(-1,-1)) 

Закрыть вновь созданный NetCDF файл для записи его на диск:

close.ncdf(newnc) 
Смежные вопросы