当前位置:网站首页>Matlab / Arcgis处理nc数据
Matlab / Arcgis处理nc数据
2022-07-31 23:53:00 【PeanutbutterBoh】
nc文件现在比较常见了,处理的方式也有很多比如python、matlab、arcgis还有R等。这篇博客主要写一下用arcgis和matlab联合处理nc的方式,可能有些复杂但是算是比较基础的操作,也能理解nc文件内部的一些原理。
下面是我的一些操作实例,可以参考一下不同数据的处理思路
Matlab / ArcGIS 处理GPM全球月均降水数据
Arcpy / Matlab / Arcgis处理CMIP6数据
matlab将多个nc文件进行合成TIF
1 nc文件的不同类型
目前我见过的、处理过的就两种,一种是栅格类(Raster)的nc文件,这种很好处理因为它的数据点都是等间距投影;一种是要素类(Feature)的nc文件,这种处理比较麻烦,因为它的数据点之间间距不相等(比如上面的CMIP6数据博客)。如何区别这两种数据呢?可以用matlab读取他们的经纬度数据,
clear all; clc
[ncname,ncpath] = uigetfile('*.*','请选择nc文件');
ncdisp([ncpath,ncname])
lat = ncread([ncpath,ncname],'latitude');
lon = ncread([ncpath,ncname],'longitude');
如果该数据的经纬度数据是一维矩阵,那么就是栅格类的;
如果经纬度数据是二维矩阵,那么就是要素类的。
2 arcgis读取nc文件
知道了nc是什么类型之后,在arcgis里(我用的是arcgis pro来展示其实二者都是一样的)找到多维工具Multidimension Tool——NetCDF,可以看到两个工具:创建NetCDF栅格(Make NetCDF Raster Layer)和创建NetCDF要素(Make NetCDF Feature Layer)。选择哪一个就要看你的nc数据是什么类型:栅格类就选Raster、要素类就选Feature。
那如果我不知道它是那种类型呢?那就直接选栅格Raster,能出结果就是栅格,出不了结果会报错就说明是要素,换成要素类工具。
3 栅格类nc处理
3.1 arcgis处理栅格类nc
栅格类的比较好处理,直接打开创建NetCDF栅格(Make NetCDF Raster Layer),然后选择nc文件,variable、x、y一般会自动选择,你也可以切换自己的variable,dimension value一般选择时间time,随后运行即可出现一个栅格图层。然后把这个栅格图层导出即可。
导出结果:
但是这种方法只能导出一个时间点的栅格数据,nc一般都是多维度时间,那如何批量导出呢?
3.2 matlab处理栅格nc
matlab处理这种栅格nc还是比较简单的,直接ncread把变量读取进来,然后想怎么处理怎么处理(求平均、做EOF等等)。
matlab里主要用的一些函数:ncread:主要读取nc文件中的数据,ncdisp:显示nc文件的一些信息
但是matlab处理的时候需要注意几个点:
首先是读取进来之后数据的空间分布问题:(原文在此matlab经验正交分解函数EOF的实现—基于Climate Data Toolbox操作)
当时我的研究区域是南海,可以看到我把海温数据读取进来之后是颠倒的一个状态,变成了一个横向的状态(可以找你研究区域特殊的地点,比如我这个可以看到海南岛是横着的状态),那就需要对你读取进来的数据进行一个处理,可以是转置、也可以用flipud上下翻转等。
其次是关于数据的导出,比如我有一个nc文件,他是20年南海月均海温数据,我现在在matlab里读进来了,求了平均得到20年年均南海海温,那我想把这个数据导出为tif怎么办呢?
思路是这样的:你先在arcgis里读取这个nc并且导出一个tif文件,当作一个参考tif(我们要的是这个tif的地理坐标系),然后在matlab里用geotiffread读取这个参考tif,最后用geotiffwrite即可将20年年均南海海温给保存出去。
有人用matlab自带的georasterref来创建tif的地理坐标系,我没有尝试过我担心这样做会出现偏移之类的,所以上述方法有一点麻烦。
4 要素类nc处理
这种nc不能用matlab处理了,只能用arcgis,如果想批量处理则需要用到python。
详细操作可以看这篇博客,算是实例,可以参考思路:
Arcpy / Matlab / Arcgis处理CMIP6数据
边栏推荐
- [QNX Hypervisor 2.2用户手册]9.15 suppress
- Fixed-length usage of nanopb string type based on RT1052 Aworks (27)
- date命令
- MLP神经网络,GRNN神经网络,SVM神经网络以及深度学习神经网络对比识别人体健康非健康数据
- Shell common script: Nexus batch upload local warehouse script
- Flutter教程之 02 Flutter 桌面程序开发入门教程运行hello world (教程含源码)
- 虚继承的原理
- Handwritten a simple web server (B/S architecture)
- Program processes and threads (concurrency and parallelism of threads) and basic creation and use of threads
- Flink 1.13(八)CDC
猜你喜欢

《ArchSummit:时代的呐喊,技术人听得到》

网易云信圈组上线实时互动频道,「破冰」弱关系社交

NIO编程
Mysql environment installation under Linux (centos)

Recommendation system: Summary of common evaluation indicators [accuracy rate, precision rate, recall rate, hit rate, (normalized depreciation cumulative gain) NDCG, mean reciprocal ranking (MRR), ROC
I don't know what to do with sync issues

Payment module implementation

TFC CTF 2022 WEB Diamand WriteUp

Shell common script: Nexus batch upload local warehouse script
![[Reading Notes -> Data Analysis] 02 Data Analysis Preparation](/img/e7/258daf851746cb043f301437ee3bbe.png)
[Reading Notes -> Data Analysis] 02 Data Analysis Preparation
随机推荐
继承的注意事项
【1161. 最大层内元素和】
继承和友元,静态成员的关系
【MATLAB项目实战】LDPC-BP信道编码
虚继承的原理
leetcode:126. 单词接龙 II
命名实体识别-模型:BERT-MRC
[Reading Notes -> Data Analysis] 02 Data Analysis Preparation
Keil nRF52832下载失败
When can I use PushGateway
【Acwing】The 62nd Weekly Game Solution
How to Design High Availability and High Performance Middleware - Homework
Shell常用脚本:Nexus批量上传本地仓库脚本
逐步手撕轮播图3(保姆级教程)
Flutter教程之 02 Flutter 桌面程序开发入门教程运行hello world (教程含源码)
网易云信圈组上线实时互动频道,「破冰」弱关系社交
一体化步进电机在无人机自动机场的应用
一行代码解决CoreData托管对象属性变更在SwiftUI中无动画效果的问题
硬件设备计算存储及数据交互杂谈
对象缓存服务的思考和实现