当前位置:网站首页>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数据
边栏推荐
- /etc/sysconfig/network-scripts configure the network card
- 景区手绘地图的绘制流程
- 10大主流3D建模技术
- [MATLAB project combat] LDPC-BP channel coding
- Unity - by casting and cloning method dynamic control under various UGUI create and display
- /usr/local/bin和/usr/bin的区别
- 数据分析(一)——matplotlib
- 程序进程和线程(线程的并发与并行)以及线程的基本创建和使用
- 如何设计高可用高性能中间件 - 作业
- Difference between first and take(1) operators in NgRx
猜你喜欢
网络安全--通过握手包破解WiFi(详细教程)
Shell common script: Nexus batch upload local warehouse script
一体化步进电机在无人机自动机场的应用
《ArchSummit:时代的呐喊,技术人听得到》
What is customer profile management?
Shell常用脚本:Nexus批量上传本地仓库脚本
Mysql environment installation under Linux (centos)
面试突击69:TCP 可靠吗?为什么?
编译型语言和解释型语言的区别
One line of code to solve CoreData managed object properties change in SwiftUI problem of animation effects
随机推荐
SQL注入 Less46(order by后的注入+rand()布尔盲注)
hboot and recovery, boot.img, system.img
UOS统信系统 - WindTerm使用
Mysql environment installation under Linux (centos)
[Cloud Residency Co-Creation] [HCSD Big Celebrity Live Broadcast] Personally teach the secrets of interviews in big factories
The difference between adding or not adding the ref keyword when a variable of reference type is used as a parameter in a method call in C#
手写一个简单的web服务器(B/S架构)
周总结
lua入门案例实战123DIY
Named Entity Recognition - Model: BERT-MRC
C# Rectangle基本用法和图片切割
新产品如何进行网络推广?
推荐系统:常用评价指标总结【准确率、精确率、召回率、命中率、(归一化折损累计增益)NDCG、平均倒数排名(MRR)、ROC曲线、AUC(ROC曲线下的面积)、P-R曲线、A/B测试】
继承和友元,静态成员的关系
lua入门案例实战1234定义函数与标准函数库功能
Unity - by casting and cloning method dynamic control under various UGUI create and display
日常--Kali开启SSH(详细教程)
10大主流3D建模技术
编译型语言和解释型语言的区别
A high-quality WordPress download site template theme developed abroad