nc文件转tif格式输出 Matlab代码

%*************************************************************************%
 %目的:将nc文件转换为.tif文件并输出
 %时间:2021039%作者:vivianooooo
%*************************************************************************%
clc
%输入输出路径参数-可修改部分
InPath = 'H:\CHIRPS\';
OutPath = 'H:\CHIPS_TIFF\';
%输出需要的范围-可修改部分
Min_Lon = 80;
Max_Lon = 110;
Min_Lat = 5;
Max_Lat = 35;

InFileList = dir(strcat(InPath,'*.nc'));
for fileidx = 1:length(InFileList)
    filename = InFileList(fileidx).name;
    %filenameWithoutSufix = filename(1:find(filename=='.')-1);  %不带后缀名的文件名
    year = filename(13:16);
    InFile = strcat(InPath,filename);
    %获取nc文件的基本信息
    ncdisp(InFile); %查看文件名和结构
    Lon = ncread(InFile,'longitude');
    Lat = ncread(InFile,'latitude');
    Tim = ncread(InFile,'time');
    %如何找到我们想要从哪个经纬度读数据呢?我们可以把lon和lat载入到工作空间后结合find函数使用。+
    %比如:我们想要读取经度是120290度,纬度是-3030度的数据。可参考如下程序:
    a=find(Lon>=Min_Lon & Lon<=Max_Lon);
    b=find(Lat>=Min_Lat & Lat<=Max_Lat);         % a和b作为经度和纬度的指针
    lon_num=length(a);
    lat_num=length(b);
    tim_num=length(Tim);
    for iday = 1:tim_num
        PRCP = ncread(InFile,'precip',[a(1),b(1),iday],[lon_num,lat_num,1]);  %读取指定范围内1个时间单位的数据
        %PRCP(isnan(PRCP))=-9999;        %将nodata赋值为-9999,便于后期再arcgis中处理
        %PRCP_full =  ncread(InFile,'precip',[1,1,1],[7200,2000,1]);
        %地理参考系的建立
        GeoRef = georasterref('Rastersize',[lat_num,lon_num],'Latlim',[Min_Lat,Max_Lat],'Lonlim',[Min_Lon,Max_Lon]);
        %数据的写出
        tifName = strcat('Chips_',num2str(year,'%4d'), num2str(iday,'%03d'),'.tif');
        PRCP_Tif = strcat(OutPath,tifName);
        geotiffwrite(PRCP_Tif,flip(rot90(PRCP)),GeoRef)
        disp(tifName);
    end
end 
disp('finished')

你可能感兴趣的:(GRACE学习,matlab)