matlab实现对全球不规则投影数据的投影转换

前几个专栏我们讨论了几个不规则的投影转换问题,有需要的可以阅读以下文章:

matlab实现对极地投影数据的投影转换_matlab极地投影-CSDN博客

联合matlab和Arcgis进行netcdf格式的雪覆盖数据的重新投影栅格-CSDN博客

这次遇到的问题是一个墨卡托投影的数据,需要转成标准的WGS经纬度。

使用的数据是HYCOM输出的全球海洋分层温度数据,下载地址:

HYCOM + NCODA Global 1/12° Analysis (GLBa0.08/expt_90.8)

这个数据有一个问题,就是使用的是墨卡托投影,即在南北极变形特别大。见下图:

在读取数据的过程中,我发现其中的经度明显不正常,即有些超过360。

仔细研究后发现,是因为经度需要进行取模处理,即 modulo        = '360 degrees'

ncdisp显示的变量列表:

Source:
           C:\Users\Hello World!!\DESKTOP\projection\archv.2010_296_00_3zt.nc4
Format:
           netcdf4_classic
Global Attributes:
           _NCProperties = 'version=1|netcdflibversion=4.4.1.1|hdf5libversion=1.8.20'
           Conventions   = 'CF-1.0'
           title         = 'HYCOM GLBa0.08'
           institution   = 'Naval Research Laboratory'
           source        = 'HYCOM archive file'
           experiment    = '90.8'
           history       = 'archv2ncdf3z'
Dimensions:
           MT    = 1     (UNLIMITED)
           Y     = 3298
           X     = 4500
           Depth = 33
Variables:
    MT         
           Size:       1x1
           Dimensions: MT
           Datatype:   double
           Attributes:
                       long_name = 'time'
                       units     = 'days since 1900-12-31 00:00:00'
                       calendar  = 'standard'
                       axis      = 'T'
    Date       
           Size:       1x1
           Dimensions: MT
           Datatype:   double
           Attributes:
                       long_name      = 'date'
                       units          = 'day as %Y%m%d.%f'
                       C_format       = '%13.4f'
                       FORTRAN_format = '(f13.4)'
    Depth      
           Size:       33x1
           Dimensions: Depth
           Datatype:   single
           Attributes:
                       standard_name = 'depth'
                       units         = 'm'
                       positive      = 'down'
                       axis          = 'Z'
    Y          
           Size:       3298x1
           Dimensions: Y
           Datatype:   int32
           Attributes:
                       point_spacing = 'even'
                       axis          = 'Y'
    X          
           Size:       4500x1
           Dimensions: X
           Datatype:   int32
           Attributes:
                       point_spacing = 'even'
                       axis          = 'X'
    Latitude   
           Size:       4500x3298
           Dimensions: X,Y
           Datatype:   single
           Attributes:
                       standard_name = 'latitude'
                       units         = 'degrees_north'
    Longitude  
           Size:       4500x3298
           Dimensions: X,Y
           Datatype:   single
           Attributes:
                       standard_name = 'longitude'
                       units         = 'degrees_east'
                       modulo        = '360 degrees'

    temperature
           Size:       4500x3298x33x1
           Dimensions: X,Y,Depth,MT
           Datatype:   single
           Attributes:
                       coordinates   = 'Longitude Latitude Date'
                       standard_name = 'sea_water_potential_temperature'
                       units         = 'degC'
                       _FillValue    = 1.267650600228229e+30
                       valid_range   = [-7.69922      34.2409]
                       long_name     = '  temp [90.8H]'

因此采用以下的代码进行运算,大于360的,对360度取模,并进行重采样处理,得到规则的经纬度格网。

matlab代码:

file = 'archv.2010_296_00_3zt.nc4';
ncdisp(file)
x = ncread(file,'Longitude');
for i = 1:4500
    for j = 1:3298
        if(x(i,j)>360)
            x(i,j) = mod(x(i,j),360);
        end
    end
end
y = ncread(file,'Latitude');
z = ncread(file,'temperature');
O.lon = x;O.lat = y;O.rg = z(:,:,2);
rg_plot(O)

lonx = reshape(x,4500*3298,1);
laty = reshape(y,4500*3298,1);
rgz  = reshape(O.rg,4500*3298,1);

lon = 0.5:1:359.5;
lat = -89.5:1:89.5;
[lon,lat] = meshgrid(lon,lat);
%% 内插处理
fxy = scatteredInterpolant(double(lonx),double(laty),rgz,'natural');
sla = fxy(lon,lat);
figure
imagesc(sla(:,:,4500))

imagesc(O.rg)

结果图

♥欢迎点赞收藏♥

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【机器学习】基于粒子群算法优化的BP神经网络分类预测(PSO-BP)

目录 1.原理与思路2.设计与实现3.结果预测4.代码获取 1.原理与思路 【智能算法应用】智能算法优化BP神经网络思路【智能算法】粒子群算法(PSO)原理及实现 2.设计与实现 数据集: 多输入多输出:样本特征24,标签类别4…

【web算法】列车车厢重排问题

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

大数据开发--02.环境准备

一.准备三台linux虚拟机 1.分别取名node1,node2,node3 2.配置静态ip 这里以node1为例,配置静态ip地址,其他node2.node3一样 配置完成之后别忘记 systemctl restart network 3.在各自的/etc/hosts文件中编辑三个Ip地址 三台都要配置, 4.然…

【PostGresql】------ pg多表数据多个条件汇总 使用 union 方法示例代码

1. 示例代码如下: SELECT"ID","DT_DATE","CNAME","RMAN_NAME","DEP_NAME","DEP_ID","INVEST_MAN_NAME","TYPE_NAME","INVEST_LEVEL_NAME","POSITION_NAME",…

第1关:创建数据库

任务描述 创建一个名为mydata的数据库。 相关知识 MySQL创建数据库的语法如下: 其中,database_name是要创建的数据库的名称。 开始你的任务吧,祝你成功! #请在此处添加实现代码 ########## Begin ########## CREATE DATABASE …

asp.net在线租车平台

说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net架构和sql server数据库 功能模块: asp.net在线租车平台 用户功能有首页 行业新闻用户注册车辆查询租车介绍访问后台 后台管理员可以进行用户管理 管…

ubuntu20.04安装Pycharm

下载pycharm安装包 https://www.jetbrains.com/pycharm/download/#sectionlinux 使用社区版点击download 下载好的pycharm如图所示,右键解压: 打开终端,输入cd命令,进入刚刚解压文件夹下的bin文件夹,命令行是cd 文…

19.WEB渗透测试--抓包技术(下)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:18.WEB渗透测试--抓包技术(上)-CSDN博客 Burp含义和内容参考&…

CCDP.01.使用NotePad++辅助部署OpenStack的说明

前言 对于象OpenStack(OS)这样的复杂分布式系统(云计算平台),一次部署通过是需要相当的Linux基础、网络基础、分布式系统基础、云计算基础的。这里类比在开发大型复杂系统常常采用的“防御式编程”方法论,探…

写一个简单的 C++ 日志库 - cllogger(3)- CRT

通过上一篇 《写一个简单的 C 日志库 - cllogger(2)- 日期时间》我们已经掌握了如何通过 std::chrono 提供的日期时间工具转换时间参数为指定格式的字符串。 现在我们可以把各个参数信息拼装为 Entry 实例,交给 OutputMessage() void cllog…

视频无水印批量下载软件|抖音视频提取工具

视频无水印批量下载软件 在当今社交媒体充斥着大量优质视频内容的时代,很多用户都希望能够轻松下载自己喜爱的视频进行收藏或分享。为了满足用户的需求,我们特别推出了一款专业的视频无水印批量下载软件,让您可以方便快捷地获取喜爱的视频内容…

最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载

最新梨花带雨网页音乐播放器二开优化修复美化版全开源版本源码下载 梨花带雨播放器基于thinkphp6开发的XPlayerHTML5网页播放器前台控制面板,支持多音乐平台音乐解析。二开内容:修复播放器接口问题,把接口本地化,但是集成外链播放器接口就不本地化了,我花钱找人写的理解下…

[C语言]——内存函数

目录 一.memcpy使用和模拟实现(内存拷贝) 二.memmove 使用和模拟实现 三.memset 函数的使用(内存设置) 四.memcmp 函数的使用 C语言中规定: memcpy拷贝的就是不重叠的内存memmove拷贝的就是重叠的内存但是在VS202…

C++总结

数据类型 基本的内置类型 修饰符类型 C 允许在 char、int 和 double 数据类型前放置修饰符。 修饰符是用于改变变量类型的行为的关键字,它更能满足各种情境的需求。 类型限定符 函数 以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的&am…

使用 Dify 和 AWS Bedrock 玩转 Anthropic Claude 3

本篇文章,聊聊怎么比较稳定的使用 Anthropic Claude 3,以及基于目前表现非常好的模型,来做一些有趣的 AI Native 小工具。 写在前面 在实际体验了半个多月,月初上线的 Anthropic Claude Pro 后,发现 Claude 3 系列模…

C语言中的联合和枚举(未完)

1、联合体 联合体类型的声明 像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。因为所有变量公用…

在任何 Mac 上恢复永久删除照片的 5 种简单方法

Mac 为业余和专业摄影师提供了很多东西,从令人印象深刻的硬件到广泛的照片管理和编辑应用程序。它还提供了多种恢复丢失照片的方法,我们在本文中介绍了其中的五种方法,以帮助您避免潜在的灾难性情况。 Mac 上删除的照片去了哪里?…

如何快速搭建一个完整的vue2+element-ui的项目-二

技术细节-继续配置 提示:你以为这样就完了吗,其实还有很多东西需要我们自己手写的 例如: element-ui的配置样式重置配置src使用的配置elinst配置axios异步请求的二次封转配置语言国际化配置(这个看需求,我这里就不用配置了)vuex的配置mixins的配置开发环…

【Linux第三课-基础开发工具的使用】yum、vim、gcc/g++编译器、gdb、Make/Makefile编写、进度条程序、git命令行简单操作

目录 yum - 软件包管理器快速认识yum快速使用yumyum搜索yum安装yum卸载 yum的周边 - yum的整个生态问题 vim快速介绍vimvim的模式命令模式插入模式低行模式 常见模式 -- 命令、低行命令模式 -- 光标的移动命令模式 -- 复制粘贴、剪贴、删除命令模式 -- 小写/大写替换模式命令模…

TCP协议 及 重要机制

目录 1.TCP 协议报文格式 1.1.端口号 1.2 首部长度 和 选项 1.3 保留位 1.4 检验和 1.5 32位序号和确认序号 2. TCP的重要机制 2.1 确认应答 2.2 超时重传 2.3 连接管理 2.3.1 三次握手 2.3.2 四次挥手 2.4 滑动窗口 2.5 流量控制 2.6 拥塞控制 2.7 延时应答 2…