Merge netCDF files to have sequence of daily precipitation of several weather stations
    3 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi all, I have netCDF files of Tropical Rainfall Measuring Mission (TRMM). Each day has its own netCDF file. In hence, I ended up by 2000 files for the period (1998 to ~2015). I have array of (nx,ny)=(1440, 400), each intersect of nx with ny is consider a satellite weather station, as shown below.

KSSV helped me to code the following script, but unfortunately didn't work.
files = dir('*.nc4') ;
nfiles = length(files) ;
P = cell(nfiles,1) ; % precipitation of all files
date = cell(nfiles,2) ;
time = cell(nfiles,2) ;
for i = 1:nfiles
    %%Read dat
    date{i,1} = ncreadatt(files(i).name,'/','HDF5_GLOBAL.BeginDate')  ;
    date{i,2} = ncreadatt(files(i).name,'/','HDF5_GLOBAL.EndDate')  ;
    %%Read time
    time{i,1} = ncreadatt(files(i).name,'/','HDF5_GLOBAL.BeginTime')  ;
    time{i,2} = ncreadatt(files(i).name,'/','HDF5_GLOBAL.EndTime')  ;
    %%REad precipitation
    P{i} = ncread(files(i).name,'precipitation') ;
end
%%Write all the above data into nc-file
ncfile = 'merged.nc' ;
[nx,ny] = size(P{1}) ;
%
nccreate(ncfile,'time','Dimensions',{'time',1,Inf},'DeflateLevel',8) ;
%
nccreate(ncfile,'precipitation','Dimensions',{'lat',nx,'lon',ny,'time'},'DeflateLevel',8) ;
ncwriteatt(ncfile,'precipitation','units','mm');
ncwriteatt(ncfile,'precipitation','long_name','Daily accumulated precipitation (combined microwave-IR) estimate with gauge calibration over land');
ncwriteatt(ncfile,'precipitation','coordinates','lat lon');
ncwriteatt(ncfile,'precipitation','FillValue','-9999.9004');
ncwriteatt(ncfile,'precipitation','origname','precipitation');
ncwriteatt(ncfile,'precipitation','fullnamepath','/precipitation');
for i = 1:nfiles
    ncwrite(ncfile,'precipitation',P{i},[1,1,i]) ;
end
ncwriteatt(ncfile,'/','HDF5_GLOBAL.BeginDate',date{1,1}) ;
ncwriteatt(ncfile,'/','HDF5_GLOBAL.BeginTime',time{1,1}) ;
ncwriteatt(ncfile,'/','HDF5_GLOBAL.EndDate',date{nfiles,2}) ;
ncwriteatt(ncfile,'/','HDF5_GLOBAL.EndTime',time{1,2}) ;
ncwriteatt(ncfile,'/','creation_date',datestr(now));
ncdisp(ncfile)
I appreciate your help and time1
Majid
0 comentarios
Respuestas (0)
Ver también
Categorías
				Más información sobre NetCDF en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
