Matlab 对nc文件进行处理

1.介绍nc文件
NetCDF全称为network Common Data Format,中文译法为“网络通用数据格式”;netcdf文件开始的目的是用于存储气象科学中的数据,现在已经成为许多数据采集软件的生成文件的格式。

•从数学上来说,netcdf存储的数据就是一个多自变量的单值函数。用公式来说就是f(x,y,z,…)=value;
•函数的自变量x,y,z等在netcdf中叫做维(dimension) 
•函数值value在netcdf中叫做变量(Variables)

一个Netcdf文件的结构包括以下对象:
•变量(Variables) :变量对应着真实的物理数据。
•维(dimension):一个维对应着函数中的某个自变量,或者说函数图象中的一个坐标轴,在线性代数中就是一个N维向量的一个分量。
•属性(Attribute) :属性对变量值和维的具体物理含义的注释或者说解释。

2. 对nc数据处理的心得
主要是需要将 nc 数据转为带有地理坐标系的 Geotif 文件,可以很方便的用 matlab 或者 python 完成单个或者批处理的转换,随后,利用感兴趣区的shapefile文件对 tif 文件进行裁剪从而达到提取数据的目的,裁剪我还未在matlab中实现过,批量裁剪有多种方法,我使用过Arcgis pro的模型构建器、python的库有GDAL、Arcpy等。更喜欢使用模型构建器,鼠标点点的事哈哈。

 3.实操

先补充一下matlab中矩阵坐标系,如下图,坐标原点在左上角,这对于我们使用permute函数(这函数我认为是第一难)至关重要

clc;clear;
files = ls('temp_ITPCAS-CMFD_V0106_B-01_01yr_010deg_1979-2015.nc');ncdisp(files)
temp = ncread(files,'temp');
lon = ncread(files,'lon');
lat = ncread(files,'lat');data = permute(temp,[2,1,3]);R = georasterref('RasterSize',size(data(:,:,1)),'Latlim',[min(lat) max(lat)],'Lonlim',[min(lon) max(lon)]);
geotiffwrite('test.tif',data(:,:,1),R,'CoordRefSysCode',4326);

 逐行解析:

ncdisp(files)

 查看nc文件的基本信息,会在命令行窗口返回如下结构

A.维度:700行*400列*37页

B.变量有:lon 经度、lat 纬度、 time 时间(实际是37年)、temp 温度(我们需要的,前三个都是维度的说明)

C.可以看到数据是以 经度*纬度*year存储的,但实际中应该是 纬度*经度*year存储,使用pearmute函数!!!

temp = ncread(files,'temp');
lon = ncread(files,'lon');
lat = ncread(files,'lat');data = permute(temp,[2,1,3]);

ncread函数,读取 nc 文件中 的temp变量、lon变量、lat变量,最后利用permute转成纬度*经度*year的形式。

R = georasterref('RasterSize',size(data(:,:,1)),'Latlim',[min(lat) max(lat)],'Lonlim',[min(lon) max(lon)]);
geotiffwrite('test.tif',data(:,:,1),R,'CoordRefSysCode',4326);

只将data(:,:,1),第一年写入了tif,R是参考系的意思。如果要将37年全写成tif,则可加个for循环,读者可自行尝试,会产生37个tif文件。

最后在Arcgis Pro中打开test.tif的效果如下:

最后想裁剪哪里就用一下模型构建器(批量)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2981452.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

springboot停机关闭前保证处理完请求

application.yml配置 server:shutdown: graceful // 处理完请求在关闭服务server:shutdown: immediate // 立刻关闭,默认 jvm关闭自带的回调

fakak详解(2)

Kafka和Flume整合 Kafka与flume整合流程 Kafka整合flume流程图 flume主要是做日志数据(离线或实时)地采集。 图-21 数据处理 图-21显示的是flume采集完毕数据之后,进行的离线处理和实时处理两条业务线,现在再来学习flume和kafka的整合处理。 配置fl…

Python基础学习之去除换行符

strip() 方法 strip() 方法用于去除字符串开头和结尾的空白字符,包括换行符(\n)、制表符(\t)和空格等。如果您想从字符串数据中去掉换行符,无论是单独存在的还是与其他空白字符一起,strip() 方…

【LAMMPS学习】八、基础知识(4.3)TIP3P水模型

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

李沐57_长短期记忆网络LSTM——自学笔记

LSTM 1.忘记门:将值朝着0减少 2.输入门:决定不是忽略掉输入数据 3.输出门:决定是不是使用隐状态 !pip install --upgrade d2l0.17.5 #d2l需要更新首先加载时光机器数据集。 import torch from torch import nn from d2l import torch a…

「React Native」为什么要选择 React Native 作为的跨端方案

文章目录 前言一、常见因素二、举个栗子2.1 项目背景2.2 为什么选择 React Native2.3 项目实施2.4 成果总结 前言 没有完美的跨端技术,只有适合的场景。脱离适用场景去谈跨端技术没有什么意义。 一、常见因素 共享代码库: React Native 允许开发者编写…

LeetCode78:子集

题目描述 给你一个整数数组 nums &#xff0c;数组中的元素 互不相同 。返回该数组所有可能的 子集 &#xff08;幂集&#xff09;。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 代码 class Solution { public:vector<vector<int>> res;vector<…

团队如何异地共享文件?

在当今全球化的办公环境中&#xff0c;团队成员往往分散在不同的地理位置上。为了更好地协同工作&#xff0c;团队之间需要快速、安全地共享文件。本文将介绍一种名为“团队异地共享文件”的解决方案&#xff0c;它能够帮助团队成员在不同地点方便地共享文件&#xff0c;提高工…

代码随想录第四天打卡笔记

链表part2 1&#xff09;两两交换链表中的节点 这道题按照三步走方式&#xff1a; &#xff08;1&#xff09;第一步&#xff0c;设置cur指针指向这两个元素的第一个&#xff08;这里一定要注意保存原结点&#xff01;&#xff09;&#xff0c;断开cur与第一个节点的链接&…

echarts实现云台控制按钮效果,方向按钮

效果图 代码 option {color: [#bfbfbf],tooltip: {show: false},series: [{name: ,type: pie,radius: [40%, 70%],avoidLabelOverlap: true,itemStyle: {// borderRadius: 10,borderColor: #fff,borderWidth: 2},label: {show: true,position: inside,fontSize: 36,color: #f…

CISAW应急服务:网络安全应急响应之路——从经验到认证的体会

随着信息技术的飞速发展&#xff0c;网络安全问题日益凸显。作为一名网络安全从业人员&#xff0c;我深知每一次安全事件给组织甚至国家带来的巨大损失和潜在影响。在多年的实际工作中&#xff0c;我积累了一些网络安全应急服务经验&#xff0c;并参加了信息安全保障人员认证&a…

火绒安全的应用介绍

火绒安全软件是一款集成了杀毒、防御和管控功能的安全软件&#xff0c;旨在为用户提供全面的计算机安全保障。以下是火绒安全软件的一些详细介绍&#xff1a; 系统兼容性强&#xff1a;该软件支持多种操作系统&#xff0c;包括Windows 11、Windows 10、Windows 8、Windows 7、…

深度学习| Attention U-Net(包含Attention Gate代码)

前言&#xff1a;最近在阅读一篇文章&#xff0c;用到了Attention Unet所以特地写了两篇文章&#xff0c;上一篇文章介绍了Attention的基础知识&#xff0c;这篇文化在哪个介绍Attention Unet相关知识以及代码。 Attention U-Net 基础注意力机制软注意力和硬注意力U-Net为什么…

【蓝牙协议栈】【BLE】低功耗蓝牙工作流程(角色\广播\扫描\连接等专业名词介绍)

1. 精讲蓝牙协议栈&#xff08;Bluetooth Stack&#xff09;&#xff1a;SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅&#xff0c;【精讲蓝牙协议栈】和【Android Bluetooth Stack】专栏会持续更新中.....敬请期待&#x…

✯✯✯宁波ISO45001认证:保障员工健康与安全✯✯✯

&#x1f308;&#x1f308;&#x1f308;最近&#xff0c;我们公司&#x1f970;通过了ISO 45001认证&#xff0c;&#x1f920;这让我感到非常&#x1f60e;兴奋和自豪&#xff01;&#x1f939;作为一个在&#x1f3d9;️宁波工作的员工&#xff0c;&#x1f913;我深深地感…

Golang | Leetcode Golang题解之第48题旋转图像

题目&#xff1a; 题解&#xff1a; func rotate(matrix [][]int) {n : len(matrix)// 水平翻转for i : 0; i < n/2; i {matrix[i], matrix[n-1-i] matrix[n-1-i], matrix[i]}// 主对角线翻转for i : 0; i < n; i {for j : 0; j < i; j {matrix[i][j], matrix[j][i]…

动力学重构/微分方程参数拟合 - 基于模型

这一篇文章&#xff0c;主要是给非线性动力学&#xff0c;对微分方程模型参数拟合感兴趣的朋友写的。笼统的来说&#xff0c;这与混沌系统的预测有关&#xff1b;传统的机器学习的模式识别虽然也会谈论预测结果&#xff0c;但他们一般不会涉及连续的预测。这里我们考虑的是&…

解决双击PDF文件出现打印的问题【Adobe DC】

问题描述 电脑安装Adobe Acrobat DC之后&#xff0c;双击PDF文件就会出现打印&#xff0c;而无法直接打开。 右键PDF文件就会发现&#xff0c;第一栏出现的不是用Adobe打开&#xff0c;而是打印。 重装软件多次仍然无法解决。 原因 右键菜单被改写了。双击其实是执行右键菜…

【氧化镓】影响Ga2O3器件沟道载流子迁移率的关键因素

总结 这篇文章对β-Ga2O3 MOSFETs中的通道载流子迁移率进行了深入研究&#xff0c;通过实验测量和理论分析&#xff0c;揭示了影响迁移率的关键因素&#xff0c;特别是库仑散射的影响。研究结果对于理解和改进β-Ga2O3 MOSFETs的性能具有重要意义&#xff0c;为未来的研究和器…

企业微信知识库为什么这么多企业都在用?原因就在这里

在科技迅猛发展的当下&#xff0c;企业信息化建设逐渐成为推动效率提升和核心竞争力增强的关键因素。而企业微信作为一个集团队沟通、项目管理、办公应用于一体的平台&#xff0c;其知识库功能为什么会受到广泛的欢迎和使用&#xff1f;让我们一探究竟。 首先&#xff0c;企业…