MATLAB读取nc文件_如何转换mp3文件格式

MATLAB读取nc文件_如何转换mp3文件格式因为课题处理30年的降雨和蒸发的遥感资料(.NC格式),而想要在Arcgis中处理要求的是raster格式的,所以需要批量转化为tif文件,所以在此分享自己改编之后的代码,可以简洁明了的实现这个过程:版本:MATLAB_2018bclc;clear;%%批读取NC文件的准备工作datadir=’G:\Global_P_ET\MSWEP_V2.2\’;%指定批量数据所在的文件夹…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

因为课题处理30年的降雨和蒸发的遥感资料(.NC格式),而想要在Arcgis中处理要求的是raster格式的,所以需要批量转化为tif文件,所以在此分享自己改编之后的代码,可以简洁明了的实现这个过程:

我所参考和借鉴的文章的链接如下:
《 MATLAB读取.nc文件》
《matlab批量处理nc文件》
《Matlab读取气象驱动数据.nc格式的数据》
感谢他们的分享

版本:MATLAB_2018b

clc;
clear;

%% 批读取NC文件的准备工作
datadir = 'G:\Global_P_ET\MSWEP_V2.2\'; %指定批量数据所在的文件夹
filelist = dir([datadir,'*.nc']);       %列出所有满足指定类型的文件
% a = filelist(1).name;                 %查看要读取的文件的编号
% b = filelist(2).name;
k=length(filelist);

for i = 1:k  %依次读取并处理
    
    %% 批量读取NC文件
    ncFilePath = ['G:\Global_P_ET\MSWEP_V2.2\',filelist(i).name]; %设定NC路径
    num = filelist(i).name(1:6); %读取数据编号,以便于保存时以此编号储存tif
      
    %% 读取变量值
    lon=ncread(ncFilePath,'lon');          %读取经度信息(范围、精度)
    lat=ncread(ncFilePath,'lat');          %读取维度信息
    time=ncread(ncFilePath,'time');        %读取时间序列
    pre=ncread(ncFilePath,'precipitation');%获取降雨变量数据
    sum_pre=sum(pre,3);                    %此处我是为了求月总降水,所以他人可以不管
   
    %% 展示数据内部结构等信息
    % pcolor(lat,lon,sum_pre);
    % shading flat;                        %移除网格线,否则图上一片黑什么都没有
    % [x,y]=meshgrid(lon,lat);             %根据经纬度信息产生格网,3600列(经度),1800列(纬度)
    % phandle=pcolor(x,y,sum_pre');        %显示一个矩阵,其中x,y,sum_pre的行列数必须一致
    % shading flat;
    % colorbar
    % imwrite(sum_pre','...................................','tif')
    
    %% 存为tif格式
    data=flipud(sum_pre');                 %很重要,这是镜像反转,否则最后的图像的南北朝向是错的
    R = georasterref('RasterSize', size(data),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);
    geotiffwrite(['G:\Global_P_ET\P\',num,'.tif'],data,R);
    disp([num,'done'])
    
end
disp('finish!')

Jetbrains全家桶1年46,售后保障稳定

如果仔细看了上述代码,应该会发现在最后一块中用了flipud函数,这一步镜像反转的作用还可通过下例而知(以下是处理AVHRR蒸发数据):

clc;
clear;
datadir = 'G:\Global_P_ET\ET\AVHRR_Zhang\';%specify the location of folder of batch data
filelist = dir([datadir,'*.nc']);      %specify the type of batch data
k = length(filelist);

for i = 1:k
    ncFilePath = ['G:\Global_P_ET\ET\AVHRR_Zhang\',filelist(i).name];
    num = filelist(i).name(19:22);      %record the serial number
    lon = ncread(ncFilePath,'LON')';    %read value of longitude
    lat = ncread(ncFilePath,'LAT')';    %read value of latitude
    
    evapotranspiration = ncread(ncFilePath,'monthly_ET'); %read variable's value of precipitation
    
    for mon=1:12
        data = flipud(permute(evapotranspiration(mon,:,:),[3 2 1]));   %since we did dimensionality reduction, the flipud function here is important to do vertical reversal 
        R = georasterref('RasterSize', size(data),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]); 
        if mon<10                          %文件命名,yyyymmdd格式,所以要加0
            geotiffwrite(['G:\Global_P_ET\ET_1\', num ,'0',num2str(mon) ,'.tif'],data,R);
            disp([num,'0',num2str(mon),'done'])
        else
            geotiffwrite(['G:\Global_P_ET\ET_1\', num ,num2str(mon) ,'.tif'],data,R);
            disp([num,num2str(mon),'done']) 
        end        
    end
end
disp('finish!')

二者代码的区别及要点如下:

1.在读入文件时可以预先用NASA提供的Panoply读一下NC文件看看各个变量的名字、大小写以及维度,比如第二个代码中变成了二维的’LON’、‘LAT’和’monthly_ET’。如果没有Panoply也可以用以下代码:

% 显示结构
ncdisp(ncFilePath);%显示nc文件的所有结构,以便大概了解里面的内容
ncdisp(ncFilePath,'evap');%显示指定变量的内容,注意一定要是变量variables才可以
ncdisp(ncFilePath,'/','min');%简单显示结构以及定义
ncdisp(ncFilePath,'/','full');%全部显示所有结构和定义信息


% 读取变量值
ncid = netcdf.open(ncFilePath,'NOWRITE'); %打开nc文件返回索引ID
[ndims,nvars,ngglobalatts,unlimdimid] = netcdf.inq(ncid);%获取维数,变量数,全局属性数量,
[varname,xtype,dimids,natts] = netcdf.inqVar(ncid,0); %根据变量索引号获取变量的名称
--------------------- 
作者:忠言睿长 
来源:CSDN 
原文:https://blog.csdn.net/liyanzhong/article/details/51884735 

2.注意数据的维度以及在降维时的旋转问题,这也是为什么要用flipud函数进行矩阵上下翻转的原因,蒸发数据还好,如果是错的看图一下就能分辨出来,降雨数据就要小心再小心!!!

3.在输出命名时,进行判定加 ‘0’ ,这样就能使最后的图像按着yyyymmdd的顺序排下来,包括之后的读取栅格平均值都很有必要!

希望能帮到你!

后记:

写博客的初衷是分享经验,同时是算是自己对思路和代码的整理,方便日后处理数据,应该可以帮到很多人。
我已免费分享我的心得,如果看官还有其他问题的,那么:知识付费,我的时间和经验正好可以解决你的问题。
咨询问题请添加QQ:819369354

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203605.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • android倒计时功能的实现(CountDownTimer)[通俗易懂]

    android倒计时功能的实现(CountDownTimer)[通俗易懂]在逛论坛的时候,看到一个网友提问,说到了CountDownTimer这个类,从名字上面大家就可以看出来,记录下载时间。将后台线程的创建和Handler队列封装成一个方便的类调用。    查看了一下官方文档,这个类及其简单,只有四个方法,上面都涉及到了onTick,onFinsh、cancel和start。其中前面两个是抽象方法,所以要重写一下。         下面是官方给的一个小例子:ne

    2026年1月16日
    3
  • mysql连接不上navicat_mysql安装版步骤

    mysql连接不上navicat_mysql安装版步骤问题:解决方法:命令行登录mysql后执行如下命令alteruser’root’@’localhost’identifiedwithmysql_native_passwordby’密码’;使用我们给的密码进行navicat连接测试:…

    2022年10月14日
    4
  • intellij idea最新版安装步骤_学生用idea用哪个版本好

    intellij idea最新版安装步骤_学生用idea用哪个版本好1、首先在官网上面下载idea网址:https://www.jetbrains.com/idea/2、选择下载DownLoad3、下载可能需要注册,不需要理会,等待下载界面出来就行了4、双击下载好的ideaIU-2018.3.4.exe文件,选择next5、自定义设置安装目录6、按照下面的勾选就行了7、点击install,等待安装成功就行了…

    2022年10月2日
    4
  • 安卓中preferenceFragment的使用

    安卓中preferenceFragment的使用文章目录 PreferenceFr 是什么 Preferences 页面 string 页面 gt 我们来写 UI 界面接着我们来写一个 MainActivity 页面最后我们来写 FragmentPerf 页面 PreferenceFr 是什么 publicabstra 以一个列表来展示首选项对象

    2025年9月16日
    3
  • 摄影后期人像高端摄影后期PS修图技巧[通俗易懂]

    摄影后期人像高端摄影后期PS修图技巧[通俗易懂]先自我介绍一下,叶子,职业修图师,从事数码后期行业12余载,擅长人像后期处理,婚纱照商业化修图,热爱摄影,喜欢旅行,总是用照片讲述故事。本文会从什么是**『皮肤质感』**,要修成这样的效果需要什么前置条件以及在过程中我们需要注意哪些核心要点为基准详细展开,意在让大家彻底明白怎样才能做出商业修图的皮肤效果。全文3504字,阅读时间约9分钟,如果觉得不愿意全看的话,可以直接拉到最后看结论。不…

    2022年6月15日
    37
  • 垂直同步、三重缓冲、freesync

    垂直同步、三重缓冲、freesync一、垂直同步60Hz显示器,开启垂直同步后,就会锁60了;作用:1、解决画面撕裂现象,不会出现缓冲没画完被复写的情况;2、解决错帧现象;游戏更流畅;3、强制每帧间隔完全一样,这样因为帧生成时间不平滑导致的不流畅也会解决弊端:鼠标反馈,移动鼠标,电脑收到消息把移动鼠标输出给显卡,显卡收到后把鼠标移动画面输出给显示器,所有请求不会被延后,延迟只是电路延迟。但开启垂直同步,显卡绘制完后缓冲后,显示器还没有显示器完前缓冲,显卡等着,鼠标移动指令和显卡一起等着,直到显示…

    2022年6月9日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号