Merging Multiple text files
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have multiple text files, each file is data for 1 day with 3 columns, 1 columns for longtitude, 1 columns for latitude and 1 columns for precip value.
It looks like that
108.650 13.950 0.000
108.450 13.383 0.000
105.833 22.150 0.000
106.217 21.300 -99.000
104.283 22.533 0.000
105.717 9.283 0.100
The value of longtitude and latitude is same for all file.
Now, I want to merge all file to 1 netcdf or text file with dimension is 455x455x365 (455 is the number of long and lat, 365 is precip value for each day of a year)
How can I do that?
2 Kommentare
Geoff Hayes
am 21 Mai 2019
minh - do you have 365 files (one for each day of the year)? Does each file have 455 rows? Please clarify.
Akzeptierte Antwort
KSSV
am 21 Mai 2019
Bearbeitet: KSSV
am 21 Mai 2019
txtfiles = dir('*.txt') ;
ncfile = 'myfile.nc' ;
N = length(txtfiles) ;
nx = 455 ; ny = 455 ; % number of lat, lon
for i = 1:N
data = importdata(txtfiles(i).name) ;
lon = data(:,1) ;
lat = data(:,2) ;
p = data(:,3) ;
if i == 1
% Do interpolation
idx = boundary(lon,lat) ;
xi = linspace(min(lon),max(lon),nx) ;
yi = linspace(min(lat),max(lat),ny) ;
[X,Y] = meshgrid(xi,yi) ;
idx = inpolygon(X,Y,lon(idx),lat(idx)) ;
Z = griddata(lon,lat,p,X,Y) ;
Z(~idx) = NaN ;
% Longitude
nccreate(ncfile,'lon','Dimensions',{'lon',1,nx}) ;
ncwrite(ncfile,'lon',xi) ;
ncwriteatt(ncfile,'lon','long_name','longitude');
% Latitude
nccreate(ncfile,'lat','Dimensions',{'lat', 1, ny})
ncwrite(ncfile,'lat',yi)
ncwriteatt(ncfile,'lat','long_name','latitude');
% Precipitation
nccreate(ncfile,'time','Dimensions',{'time',1,Inf}) ;
nccreate(ncfile,'p','Dimensions',{'lon',nx,'lat',ny,'time',Inf})
ncwriteatt(ncfile,'p','long_name','precipitation');
ncwrite(ncfile,'time',i,i) ;
ncwrite(ncfile,'p',Z,[1,1,i])
end
Z = griddata(lon,lat,p,X,Y) ;
Z(~idx) = NaN ;
ncwrite(ncfile,'time',i,i) ;
ncwrite(ncfile,'p',Z,[1,1,i])
end
11 Kommentare
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!