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

% 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 Kommentare

What's the problem? Please read this link
Was en error thrown? Did you have an error with ncread()? Or fprintf()? Or these lines
for j = 716:746(lat);
for i = 328:368(long);
Get rid of the (lat) and (long) and the semicolons.
Or is it something else?
shobhit pipil
shobhit pipil am 23 Dez. 2018
Bearbeitet: shobhit pipil am 26 Dez. 2018
Hi,
these lat long creates a spatial subset.
at the end of processing I am just getting one year data. though I am extracting data from two netcdf files and data2 varaiable should hold the two years data (730 days). instead of that extrcted txt files have 365 records for the processed netcdf file. programme still reading both files.
No, I didnt get any error message for mentioned code. Eralier, I was getting negative fid values and preallocation problem that I have fixed it.
thanks
shobhit
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 am 23 Dez. 2018
Bearbeitet: shobhit pipil am 23 Dez. 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

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

shobhit pipil
shobhit pipil am 24 Dez. 2018
Bearbeitet: madhan ravi am 24 Dez. 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

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by