- 积分
- 4096
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-8-16
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2019-1-31 15:14:57
|
显示全部楼层
问题解决了!!!!!!!!!!!!!!!!!!!!!
%%% ******* 说明 ***********
%%% 从处理中国自动站与CMORPH融合的逐时降水量0.1°网格数据 sevp..........grd格式文件中批量提取所需范围的数据,并存放到txt文件中
%%% 程序设计 563471645@qq.com
%%% 2019.01.30
%%% ********************************
clear
clc
for Yea=2017:2017
for Mon=7:7
for Da=6:6%eomday(Yea,Mon)
for Hou=0:0%23
YeaMon0=strcat(sprintf('%04d',Yea),sprintf('%02d',Mon));
YMDH=strcat(YeaMon0,sprintf('%02d',Da),sprintf('%02d',Hou));
Dat_Filename=strcat('j:\Rain_H\',YeaMon0,'\SEVP_CLI_CHN_MERGE_CMP_PRE_HOUR_GRID_0.10-',YMDH,'.grd');%数据源
fid=fopen(Dat_Filename,'r','l','utf-8');
fseek(fid,0,'bof');
data0=fread(fid,700*440,'float');
data=reshape(data0,[700,440]);
data=data';
fclose(fid);
%%%%%%%% 取所需范围的数据 %%%%%%%%%%%%%%%%
sENlat=15;
sENlon=70;
data=data';
lat = 31:-0.1:30;%32.5:-0.1:27.5;%纬度范围(间隔0.1°)
lon =105:0.1:106;%104.5:0.1:110.5;%11;%经度范围(间隔0.1°)
%% 按经纬度范围获取数组
SS = (min(lat)-sENlat)*10+1;%数组北侧;
NN = SS + (max(lat)-min(lat))*10;%数组南侧;
EE = (min(lon)-sENlon)*10+1;%数组西侧;
WW = EE + (max(lon)-min(lon))*10;%数组东侧;
data1=data(EE:WW,SS:NN);
data1=data1';
% rewrite for txt %%输出到txt文件中
fid = fopen('E:\Satalite\Rain_H.txt', 'wt');
%%data1=data1;
[m,n]=size(data1);
for i=m:-1:1
for j=1:1:n
if j==n
fprintf(fid,' %g\n',round(data1(i,j)));
else
fprintf(fid,' %g\t',round(data1(i,j)));
end
end
end
fclose(fid);
End
End
End
End
|
|