对文件夹下的NC文件批量处理成TIF

一个文件夹下有多个nc文件

将所有nc文件批量处理并以nc文件夹命名,每个文件夹存放nc文件中所有时间步的tif文件

使用matlab进行操作代码

% 定义NetCDF文件路径
ncDir = 'E:\Data\newEnvironment\rain';
% 获取目录中所有的.nc文件
ncFiles = dir(fullfile(ncDir, '*.nc'));
% 循环处理每个文件
for k = 1:length(ncFiles)
    ncFilename = fullfile(ncDir, ncFiles(k).name);
    %去除.nc
    newncname = ncFiles(k).name(1:end-3);
     disp(newncname)

    % 定义输出TIF文件的目录
    tifDir = 'E:\Data\newEnvironment\rainDay';
    %拼接输出TIF文件夹
    newtifDir=fullfile(tifDir, newncname);

    % 检查输出目录是否存在,不存在则创建
    if ~exist(newtifDir, 'dir')
        mkdir(newtifDir);
    end

    % 读取经度和纬度数据
    lon = ncread(ncFilename, 'longitude');
    lat = ncread(ncFilename, 'latitude');
    
    % 创建地理参考对象
        R = georasterref('RasterSize', [length(lat), length(lon)], ...
                         'LatitudeLimits', [min(lat), max(lat)], ...
                         'LongitudeLimits', [min(lon), max(lon)], ...
                         'ColumnsStartFrom', 'north', ...
                         'RowsStartFrom', 'west');
    
    % 获取时间长度
    timeLen = ncread(ncFilename, 'time');
    
    % 遍历每个时间步
    for z = 1:length(timeLen)
        % 读取数据
        data = ncread(ncFilename, 'tp', [1, 1, z], [length(lon), length(lat), 1]);
        
        % 替换缺失值
        data(data == -32768) = NaN;
%         
        % 调整数据矩阵以匹配地理参考对象
        data = permute(single(data), [2, 1]);

        
        % 定义输出的TIFF文件名
        ncTimeName=str2num(newncname)
        tifFilename = fullfile(newtifDir, sprintf('%d_%02d.tif', ncTimeName, z));
       
        % 保存为TIFF文件
        geotiffwrite(tifFilename, data, R, 'CoordRefSysCode', 'EPSG:4326');
        
        fprintf('已转换并保存文件:%s\n', tifFilename);
    end
 end

fprintf('所有时间步的数据已成功转换为TIFF格式。\n');

原代码与灵感起源于BILBIL某播主,但找不到链接了,没挂上。不好意思

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值