当前位置: 首页 > news >正文

高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图

1.引言

在研究全球海平面变化的问题中,卫星测高获得总的海平面变化,而海平面变化包含质量变化和比容变化。因此测高数据和海洋物理分析数据对于海平面研究至关重要。

测高数据下载网址:

Global Ocean Gridded L 4 Sea Surface Heights And Derived Variables Reprocessed 1993 Ongoing | Copernicus Marine Service

Home (altimetry.fr)

海洋温度和盐度下载网址:

Met Office Hadley Centre observations datasets

下面介绍的温度和盐度数据的分辨率为0.083°,下载地址:

Global Ocean Physics Reanalysis | Copernicus Marine Service

2.数据简介

GLORYS12V1产品是CMEMS全球海洋涡旋解析(水平分辨率1/12°,垂直50个层次)重分析,覆盖高度计数据(从1993年起)。该产品主要基于当前实时全球预报CMEMS系统。模型组件是以NEMO平台为基础,表面由ECMWF ERA-Interim然后是近年来的ERA5重分析驱动。观测数据通过降维卡尔曼滤波器同化。沿轨高度计数据(海平面异常)、卫星海表温度、海冰浓度以及原位温度和盐度垂直剖面被联合同化。此外,3D-VAR方案为温度和盐度的缓慢演变的大尺度偏差提供校正。该产品包括从顶到底的温度、盐度、洋流、海平面、混合层深度和冰参数的日均和月均文件。全球海洋输出文件以标准正则网格显示,水平分辨率为1/12°(约8公里),垂直方向上有50个标准层次。下图展示了数据信息,数据分为每日数据和每月数据,时间跨度为1993年至2023年(最晚访问时间:2024-3-6),其中_my_是1993.1-2021.6,而_myint_是2021.7-至今。

3.数据读取

下面以墨西哥湾区域为例,绘制某温度和盐度数据随深度的空间分布:

address_i = 'E:\Ocean_physical\raw\';
GFA = dir(fullfile(address_i,'*nc'));
k = length(GFA);

% ncdisp([address,GFA(1).name])
% % load U V velocity
lon = ncread([address_i,GFA(1).name],'longitude');
lat = ncread([address_i,GFA(1).name],'latitude');
[lon,lat] = meshgrid(lon,lat);[m1,n1] = size(lon);
depth = ncread([address_i,GFA(1).name],'depth');

A1 = zeros(m1*n1,k+2);
A1(:,1) = reshape(lon,m1*n1,1);
A1(:,2) = reshape(lat,m1*n1,1);
% ind_ = find(A1(:,1)>=110&A1(:,1)<=160&A1(:,2)>=-30&A1(:,2)<=0);
 ind_ = find(A1(:,1)>=-100&A1(:,1)<=-70&A1(:,2)>=0&A1(:,2)<=30);
    
for ii = 1:2
    %% read variables
    % sea_water_potential_temperature
    thetao = ncread([address_i,GFA(ii).name],'thetao');
    % sea_water_salinity
    so = ncread([address_i,GFA(ii).name],'so');
    % eastward_sea_water_velocity
    uo = ncread([address_i,GFA(ii).name],'uo');
    % northward_sea_water_velocity 
    vo = ncread([address_i,GFA(ii).name],'vo');
    % time
    time = ncread([address_i,GFA(ii).name],'time');
    dt = datetime(1950,1,1) + hours(time);
    [y,m,d] = ymd(dt);
    tt(:,1) = time_transfer([y,m,d],1);
   %% region mask
    for jj = 1:length(depth)
        B1 = reshape(thetao(:,:,jj)',m1*n1,1);
        aus_region1 = B1(ind_,:); 
        aus_thetao(:,:,jj) = reshape(aus_region1,361,361);
       %%
        B2 = reshape(so(:,:,jj)',m1*n1,1);
        aus_region2 = B2(ind_,:); 
        aus_so(:,:,jj) = reshape(aus_region2,361,361);
       %%
        B3 = reshape(uo(:,:,jj)',m1*n1,1);
        aus_region3 = B3(ind_,:); 
        aus_uo(:,:,jj) = reshape(aus_region3,361,361);
       %%
        B4 = reshape(vo(:,:,jj)',m1*n1,1);
        aus_region4 = B4(ind_,:); 
        aus_vo(:,:,jj) = reshape(aus_region4,361,361);
    end
    address_o1 = 'E:\Ocean_physical\output\australia\thetao\';
    save([address_o1,'thetao_',num2str(y),'_',num2str(m),'.mat'],'aus_thetao')
    address_o2 = 'E:\Ocean_physical\output\australia\so\';
    save([address_o2,'thetao_',num2str(y),'_',num2str(m),'.mat'],'aus_so')
    address_o3 = 'E:\Ocean_physical\output\australia\uo\';
    save([address_o3,'thetao_',num2str(y),'_',num2str(m),'.mat'],'aus_uo')    
    address_o4 = 'E:\Ocean_physical\output\australia\vo\';
    save([address_o4,'thetao_',num2str(y),'_',num2str(m),'.mat'],'aus_vo')    
    disp(ii)
    clear thetao aus_thetao aus_so aus_uo aus_vo

end

for i = 1:50
    subplot(5,10,i)
    imagesc(flipud(aus_so(:,:,i)))
end

for i = 1:50
    subplot(5,10,i)
    imagesc(flipud(aus_thetao(:,:,i)))
end

如果需要计算比容海平面,请参考这篇博文。计算由于海洋温度和盐度变化产生的比容海平面变化-CSDN博客

♥欢迎点赞收藏♥

相关文章:

高分辨率全球海洋温度和盐度再分析数据Global Ocean Physics Reanalysis(0.083°),并利用matlab读取绘图

1.引言 在研究全球海平面变化的问题中&#xff0c;卫星测高获得总的海平面变化&#xff0c;而海平面变化包含质量变化和比容变化。因此测高数据和海洋物理分析数据对于海平面研究至关重要。 测高数据下载网址&#xff1a; Global Ocean Gridded L 4 Sea Surface Heights And …...

微信小程序修改placeholder样式

微信小程序有既定的修改placeholder的标签 一、placeholder-style直接修改样式 <input type"text" placeholder"请输入" placeholder-style"color:#e2e2e2;"></input>二、placeholder-class设置样式类 <input type"text&…...

爬虫案例1

通过get请求直接获取电影信息 目标页面: https://spa6.scrape.center/在network中可以看到是通过Ajax发送的请求&#xff0c;这个请求在postman中也可以直接请求成功&#xff0c;这只是一个用来练习爬虫的&#xff0c;没有达到js逆向的过程&#xff0c;需要通过分析js 代码来获…...

修改表结构

目录 修改表结构 创建数据表插入数据 修改已有列 修改 member 表的 name 列的定义 为表增加列 增加一个 address 列&#xff0c;这个列上不设置默认值 增加一个 sex 列&#xff0c;这个列上设置默认值 删除表中的列 删除 sex 列 Oracle从入门到总裁:​​​​​​https…...

Rust 语言中的 into() 方法

在 Rust 中&#xff0c;into() 方法通常用于将一个类型的值转换为另一个类型&#xff0c;这通常涉及到资源的所有权转移。into() 方法通常定义在实现了 Into<T> trait 的类型上&#xff0c;该 trait 允许一个类型被“转换”为另一个类型。 into() 方法的一个常见用途是在…...

MinIO权限提升漏洞CVE-2024-24747详细解决办法

漏洞名称&#xff1a; MinIO权限提升漏洞(CVE-2024-24747) 漏洞简介 2024年2月2日&#xff0c;深瞳漏洞实验室监测到一则MinIO 存在权限提升漏洞的信息&#xff0c;漏洞编号&#xff1a;CVE-2024-24747&#xff0c;漏洞威胁等级&#xff1a;高危。 该漏洞是由于用户创建的访…...

“我快无聊死了”用英语怎么说?柯桥英语口语学习,成人零基础学外语

每日一句 Im bored to death. 我快无聊死了。 单词解析&#xff1a; bored / bɔːd / adj.无聊的&#xff0c;厌倦的 bored to d15857575376eath&#xff1a;指非常无聊或厌烦&#xff0c;达到了极点的程度。 "bored" 和 "boring" 都与无聊相关&#…...

JS ATM练习案例(复习循环知识)

需求&#xff1a;用户可以选择存钱、取钱、查看余额和退出功能。 分析&#xff1a;1循环时反复出现提示框&#xff0c;所以提示框写到循环里面。 2.退出的条件是4&#xff0c;所以是4就会结束循环 3.提前准备一个金额预存储 4取钱为减法操作&#xff0c;存钱为加法操作&#xf…...

Android 二维码相关(一)

Android 二维码相关(一) 本篇文章主要记录下android下使用zxing来创建二维码. 1: 导入依赖 api "com.google.zxing:core:3.5.1"2: 创建二维码 创建QRCodeWriter对象 QRCodeWriter qrCodeWriter new QRCodeWriter(); 将文本内容转换成BitMatrix BitMatrix encode …...

利用tree命令自动保存文件层级结构

tree命令的使用 为了将上图左侧的文件目录&#xff0c;生成上图右侧中的文件夹结构列表&#xff0c;保存在txt中&#xff0c;使用了如下cmd命令&#xff1a; C:\armadillo-12.8.0>tree .>list.txt以上tree命令分为3部分&#xff1a; tree 命令. 在当前目录>list.tx…...

C++初阶:内存管理

目录 1. C/C中各种资源的内存分布1.1 C/C程序内存区域划分1.2 各资源的内存分布情况&#xff08;练习&#xff09; 2. C中的动态内存管理方式2.1 new/delete开辟内置类型空间2.2 new/delete开辟销毁自定义类型空间 3. operator new 与 operator delete函数4. new与delete的实现…...

vue和react的diff算法源码

Vue.js 中的虚拟 DOM Diff 算法是其性能优化的关键之一。 Vue.js 的 Diff 算法主要基于 Snabbdom&#xff0c;以下是 Vue.js 中虚拟 DOM Diff 算法的简化版伪代码&#xff0c;以便说明其基本思想&#xff1a; function patch(oldVnode, vnode) {// 如果 oldVnode 不存在&…...

Coordinate Attention(CVPR 2021)

paper&#xff1a;Coordinate Attention for Efficient Mobile Network Design official implementation&#xff1a;GitHub - houqb/CoordAttention: Code for our CVPR2021 paper coordinate attention 背景 注意力机制&#xff0c;已经被广泛用于提高深度神经网络的性能&…...

计算机网络-第4章 网络层(2)

主要内容&#xff1a;网络层提供的两种服务&#xff1a;虚电路和数据报&#xff08;前者不用&#xff09;、ip协议、网际控制报文协议ICMP、路由选择协议&#xff08;内部网关和外部网关&#xff09;、IPv6,IP多播&#xff0c;虚拟专用网、网络地址转换NAT&#xff0c;多协议标…...

重学SpringBoot3-WebMvcAutoConfiguration类

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-WebMvcAutoConfiguration类 是什么什么用生效条件作用 自定义配置的三种方式自定义配置举例1. 自定义 DispatcherServlet 配置2. 静态资源配置3. 自定义…...

探索数据结构:深入了解顺序表的奥秘

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 什么是顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元…...

苍穹外卖学习-----2024/03/010---redis,店铺营业状态设置

1.Redis入门 2.在Java中操作Redis 3.店铺营业状态设置 BUG!!! 今天在启动项目时&#xff0c;用到了Redis缓存数据库&#xff0c;但是却出现了报错信息&#xff1a; ERR Client sent AUTH, but no password is set。Caused by: io.lettuce.core.RedisCommandExecutionException…...

RUST 每日一省:发布到crates.io

github是开源代码分享的地方&#xff0c;rust的开源项目除了github&#xff0c;我们还可以将其发布到 crates.io 上&#xff0c;然后其它用户就可以使用cargo进行安装使用了。其实步骤很简单&#xff0c;只有三条命令了&#xff0c;我们一次来看一下。 1、cargo package 首先&a…...

String类及其常用方法

文章目录 1.String类的特性与使用1.1 String类的特性1.2 String对象的创建方式1.3 String 的使用&#xff08;不同的拼接操作&#xff09; 2.String常用方法2.1 String的常用方法一2.2 String常用方法二2.3 String常用方法三 1.String类的特性与使用 1.1 String类的特性 Stri…...

1094. 拼车

说在前面 &#x1f388;不知道大家对于算法的学习是一个怎样的心态呢&#xff1f;为了面试还是因为兴趣&#xff1f;不管是出于什么原因&#xff0c;算法学习需要持续保持。 题目描述 车上最初有 capacity 个空座位。车 只能 向一个方向行驶&#xff08;也就是说&#xff0c;不…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

【C++进阶篇】智能指针

C内存管理终极指南&#xff1a;智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)

目录 &#x1f50d; 若用递归计算每一项&#xff0c;会发生什么&#xff1f; Horners Rule&#xff08;霍纳法则&#xff09; 第一步&#xff1a;我们从最原始的泰勒公式出发 第二步&#xff1a;从形式上重新观察展开式 &#x1f31f; 第三步&#xff1a;引出霍纳法则&…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...

Pandas 可视化集成:数据科学家的高效绘图指南

为什么选择 Pandas 进行数据可视化&#xff1f; 在数据科学和分析领域&#xff0c;可视化是理解数据、发现模式和传达见解的关键步骤。Python 生态系统提供了多种可视化工具&#xff0c;如 Matplotlib、Seaborn、Plotly 等&#xff0c;但 Pandas 内置的可视化功能因其与数据结…...

自定义线程池1.2

自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本&#xff0c;将线程池中的线程数量交给使用者决定&#xff0c;并且将线程的创建延迟到任务提交的时候&#xff0c;在本文中我们将对这个版本进行如下的优化&#xff1a; 在新建线程时交给线程一个任务。让线程在某种情况下…...