当前位置:网站首页>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数据
边栏推荐
- C# Rectangle基本用法和图片切割
- 一体化步进电机在无人机自动机场的应用
- Unity - LineRenderer show a line
- 2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7。施展魔法之后,A和B通过该边到达彼此的代价都是7。 求,允许施展一次魔法
- MLP神经网络,GRNN神经网络,SVM神经网络以及深度学习神经网络对比识别人体健康非健康数据
- 虚继承的原理
- thymeleaf iterates the map collection
- PHP三元(三目)运算符
- 《ArchSummit:时代的呐喊,技术人听得到》
- NIO programming
猜你喜欢

网络安全--通过握手包破解WiFi(详细教程)

Payment module implementation

UOS - WindTerm use

【MATLAB项目实战】LDPC-BP信道编码

A high-quality WordPress download site template theme developed abroad

Design of Fire and Anti-theft System Based on Single Chip GSM

如何设计高可用高性能中间件 - 作业

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

一文带你了解 Grafana 最新开源项目 Mimir 的前世今生

Shell common scripts: Nexus batch upload local warehouse enhanced version script (strongly recommended)
随机推荐
继承和友元,静态成员的关系
【云驻共创】【HCSD大咖直播】亲授大厂面试秘诀
Google Earth Engine——Error: Image.clipToBoundsAndScale, argument ‘input‘: Invalid type的错误解决
《ArchSummit:时代的呐喊,技术人听得到》
面试题:实现死锁
SQL27 View user details of different age groups
@JsonFormat(pattern=“yyyy-MM-dd“)时间差问题
面试突击69:TCP 可靠吗?为什么?
推荐系统:常用评价指标总结【准确率、精确率、召回率、命中率、(归一化折损累计增益)NDCG、平均倒数排名(MRR)、ROC曲线、AUC(ROC曲线下的面积)、P-R曲线、A/B测试】
lua入门案例实战123DIY
2022年CSP-J1 CSP-S1 第1轮初赛 报名指南
vim的基本使用概念
Shell常用脚本:Nexus批量上传本地仓库增强版脚本(强烈推荐)
[1161. The maximum sum of elements in the layer]
[MATLAB project combat] LDPC-BP channel coding
[QNX Hypervisor 2.2 User Manual]9.16 system
Interview Blitz 69: Is TCP Reliable?Why?
VOT2021 game introduction
Fixed-length usage of nanopb string type based on RT1052 Aworks (27)
Payment module implementation