Convert sveral netCDF files to ASCII or CSV
조회 수: 12 (최근 30일)
이전 댓글 표시
HI all, I have 2000 files of netCDF (.nc). These files are for precipitation of my study area. I have the script which included below. I want to make this script to call all netCDF and output them as ASCII. Some netCDF files have attached too.. I really appreciate your help and time.
Thanks, Majid
댓글 수: 10
per isakson
2017년 6월 5일
편집: per isakson
2017년 6월 5일
- What makes you think that this FEX-submission can read and convert your files?
- "ArcSWAT"   is that The Soil and Water Assessment Tool (SWAT)?
- What makes you think that the FEX-submission will write a csv-file that is appropriate for ArcSWAT ?
- NetCDFreader requires that the extension is .nc. Yours is .nc4.
채택된 답변
KSSV
2017년 6월 5일
Dear Majid
Reading nc files is not a deal in MATLAB. It is pretty straight forward and easy. If you would have tried to read the documentation, by this time you could have solved your problem. No files is required to read the ncfiles. Just you need to know only few functions: ncdisp, ncreaad and ncreadatt.
In the below code, I am reading the precipitation data of the six ncfiles which you gave in the attachment. I am reading the begin, end date and time also. The output is taken into cells.
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
Now you can write the above data into what ever format you want.
댓글 수: 5
추가 답변 (2개)
shobhit pipil
2018년 12월 17일
편집: shobhit pipil
2018년 12월 17일
data = [];
Files=dir('*.nc');
for k=1:length(Files)
FileNames=Files(k).name
pr=ncread(FileNames,'rainfall_amount');%name of netCDF file; 'pr' is the precip variable in the netCDF file
long=ncread(FileNames,'x'); %'longitude' is the longitude variable in the netCDF file
lat=ncread(FileNames,'y'); %'latitude' is the latitude variable in the netCDF file
for j= 716:746(lat); %1:length(lat);
for i= 328:368(long); %1:length(long);
v=pr(i,j,:); %read through all lat,longs in netCDF
outfile=sprintf('%d_%d_PCP.txt',lat(j),long(i));%name of outputfile; format is 'LATITUDE_LONGITUDE_PCP.txt'
fid=fopen(outfile,'w+');
data2=(v);
data2(isnan(data2)) = -99.0 ; %cleanup in case the data is a NaN
data = {data;data2};
end
end
end
%fprintf(fid, '18900101\n');%#write the climate data starting date to header of outfile. Change '20200101' to the starting date of your dataset. For example, Jan. 1, 1950 is 19500101
fprintf(fid,'%5.1f\n',data); %formatting the data for SWAT specifications
fclose(fid);
disp([outfile 'created'])%display created file
fclose all
댓글 수: 1
shobhit pipil
2018년 12월 17일
Would anybody please reply to me. I am trying to extract the NetCDF pricipitation data into SWAT format. The current script is not able to write data from NetCDF to txt file from each iteration. Please help.
javeed hamad
2022년 3월 27일
HI every one!
I want to extract GHI (Global horizontal irradiation) data from NC file which include almost 3500 files for my study area, can someone please guide which script should use to extract multiple files simultaneously.
Thanks a lot, Javeed
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 NetCDF에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!