ERA 处理成ascii

本文介绍了一种使用MATLAB从ERA数据文件中提取特定经纬度范围内降水总量(tp)的方法,并将其转换为文本格式进行存储的过程。该过程涉及定义地理边界、读取数据文件、筛选所需数据、求和并转换单位等步骤。

ERA的数据格式是我最喜欢的,读取速度够快。私人记录备忘,非教程。

clear all
lat_max = 46;
lat_min = 32;
lon_max = 80;
lon_min = 60;
save_path = 'F:\AAA\interim\vic\';
Vname = 'tp';


files = dir('*.nc');
days = length(files);
%---------------------提取lat lon 范围 -----------------*
lon =  ncread( files(1).name,'longitude');
lat =  ncread( files(1).name,'latitude');
p_lat = find(lat>lat_min & lat<lat_max);  % set lat lon limit
p_lon = find(lon>lon_min & lon<lon_max); 

for day = 1:days
    p(:,:,:,day) = ncread( files(day).name ,Vname,[min(p_lon) min(p_lat) 1 ],[length(p_lon) length(p_lat) inf ]); 
    disp(day)
end;

    for lati = 1:length(p_lat)        % 限制范围,重新排序,所以从1开始      
    for loni = 1:length(p_lon)
        
        lat_p = lat( lati+min(p_lat)-1);  % 注意返回值的顺序 用来写文本名字
        lon_p = lon( loni+min(p_lon)-1);
        p_p = p(loni,lati,:,:);
        path = [save_path , 'data_' , num2str(lat_p,'%.4f') ,'_', num2str(lon_p,'%.4f') ];
        p_p = squeeze( double(p_p) );  % to mm ;
        p_p = reshape(p_p,2,[]);
        p_p(p_p==-9999)= 0;   % fill none value to 0
        p_p = sum(p_p);  % 求和
        p_p =reshape(p_p,[],1);
        p_p = p_p*1000  % to mm
                    
        dlmwrite( path ,p_p,'delimiter','\t','precision', '%.4f');
    end
    end

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hydromonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值