Предположим, что два файла netCDF (в моем случае nc4), каждая из которых имеет одну переменную с тремя измерениями: широта, долгота и время (год). Они имеют разные временные интервалы (например, 1700–2005 и 2005–2100 годы - они перекрываются в 2005 году). Как я могу объединить их, чтобы получить один файл nc4, охватывающий 1700-2100?
Простая попытка оператора NCO ncrcat file1.cn4 file2.nc4 result.nc4
дает файл размером [1700-2005, 1700-1795]. При запуске строки предупреждает: nco_cln_clc_dff<><> failed to initialize UDUnits2 library
. Согласно этому сообщению, мне не о чем беспокоиться.
Я также использовал добавление, как описано в руководстве NCO _3 _ strong >. Я получаю результирующий промежуток времени [2005-2310,2005-2100] и предупреждение: ncrcat: WARNING Intra-file non-monotonicity. Record coordinate “time” does not monotonically decrease between input file file2.nc4 record indices: 94,95 output file1.nc4 record indices 400,401 ...
(индексы здесь менее важны, так как я получаю предупреждение для каждого из них)
Обратите внимание, что я мог объединить без проблемы с промежутком времени с CDO в Linux: cdo mergetime file1.cn4 file2.nc4 result.nc4
(или cdo -z zip_3 mergetime file1.cn4 file2.nc4 result.nc4
, чтобы получить степень сжатия 3). Также обратите внимание, что мне пришлось использовать export SKIP_SAME_TIME=1
перед вызовом cdo mergetime
, чтобы иметь дело с перекрывающимся 2005 годом (будет только первое вхождение).
С R я пробовал следующее:
library(ncdf4)
library(ncdf.tools)
ncFile1 <- nc_open("C://file1.nc4")
nc1 <-ncvar_get(ncFile1)
ncFile2 <- nc_open("C://file2.nc4")
nc2 <-ncvar_get(ncFile2)
transNcdfMerge(c(nc1, nc2), target.name = "my_test.nc4")
Я дал ему поработать почти 2 часа, а затем остановил бег. Поскольку мне нужно проделать это с сотнями файлов nc4, я не могу ждать так долго. Во время работы не кричал ни одной ошибки, но я не уверен, правильный ли код.
Я использую Windows 7, 64-разрядную версию, 8 ГБ оперативной памяти. А для R - «R версия 3.3.0 (2016-05-03)»
Обновление: печать некоторых метаданных двух файлов с помощью R
1) file1.nc4
ncdf4::print(file1.nc4)
1 variables (excluding dimension variables):
float prop_crop[lon,lat,time] (Chunking: [720,360,1]) (Compression: shuffle,level 3)
units: percent
_FillValue: -9999
long_name: Proportion of landcover in crops
missing_value: -9999
3 dimensions:
lat Size:360
units: degrees_north
long_name: Latitude
standard_name: latitude
lon Size:720
units: degrees_east
long_name: Longitude
standard_name: longitude
time Size:306 *** is unlimited ***
long_name: Time
standard_name: time
calendar: proleptic_gregorian
units: years since 1700-01-01 00:00:00
2) file2.nc4
ncdf4::print(file2.nc4)
1 variables (excluding dimension variables):
float prop_crop[lon,lat,time] (Chunking: [720,360,1]) (Compression: shuffle,level 3)
units: percent
_FillValue: -9999
long_name: Proportion of landcover in crops
missing_value: -9999
3 dimensions:
lat Size:360
units: degrees_north
long_name: Latitude
standard_name: latitude
lon Size:720
units: degrees_east
long_name: Longitude
standard_name: longitude
time Size:96 *** is unlimited ***
units: years since 2005-01-01 00:00:00
long_name: Time
standard_name: time
calendar: proleptic_gregorian
Надеюсь, это поможет