Clear Filters
Clear Filters

Extract data from NetCDF files to text files (For SWAT Model).

10 views (last 30 days)
% new code to extract data from netcdf file to SWAT format text file.
data =[];
Files = dir('*.nc');
for k=1:length(Files)
FilesNames = Files(k).name;
for t=1:2
pr = ncread(FilesNames,'rainfall_amount');
long = ncread(FilesNames,'x');
lat = ncread(FilesNames,'y');
end
for j = 716:746(lat);
for i = 328:368(long);
v = pr(i,j,:);
data2 = (v);
data2(isnan(data2)) = -99.0;
outfile =sprintf('%d_%d_PCP.txt',lat(j),long(i));
fopen all
fid = fopen(outfile,'wt');
data = {data;data2};
fprintf(fid,'%5.1f\n',data2);
end
fclose all
end
end
disp([outfile 'created'])
% original code source:
% http://dficklin.weebly.com/netcdf-to-swat-climate-input-files.html
  4 Comments
Image Analyst
Image Analyst on 23 Dec 2018
Please read the link I gave you. I know you haven't yet read it because you have not attached the two data files. So please read it.
shobhit pipil
shobhit pipil on 23 Dec 2018
Edited: shobhit pipil on 23 Dec 2018
outfiles shows 365 days records instead of 730 days, because single netcsd contains 1 year records per lat long.
one can copy the same NetCDF file in same directory and change year from 1890 to 91 for testing the code for two files. Single file size is 4.5 GB so I have uploaded just one.
Thanks

Sign in to comment.

Accepted Answer

shobhit pipil
shobhit pipil on 24 Dec 2018
Edited: madhan ravi on 24 Dec 2018
Now It works for me:-
% new code to extract data from netcdf file to SWAT format text file.
data =[];
Files = dir('*.nc');
for k=1:length(Files)
FilesNames = Files(k).name;
for t=1:2
pr = ncread(FilesNames,'rainfall_amount');
long = ncread(FilesNames,'x');
lat = ncread(FilesNames,'y');
end
for j = 716:746(lat);
for i = 328:368(long);
outfile =sprintf('%d_%d_PCP.txt',lat(j),long(i));
fopen all;
v = pr(i,j,:);
data2 = (v);
data2(isnan(data2)) = -99.0;
% outfile =sprintf('%d_%d_PCP.txt',lat(j),long(i));
% fopen all;
fid = fopen(outfile,'At');
data = {data;data2};
fprintf(fid,'%5.1f\n',data2);
end
fclose all;
end
end
disp([outfile 'created'])
% original code source:
% http://dficklin.weebly.com/netcdf-to-swat-climate-input-files.html

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!