欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

arcgis导入netCDF文件的问题

程序员文章站 2022-07-14 10:29:51
...

首先,使用arcgis导入nc文件使用系统工具箱下的make netCDF raster layer工具
arcgis导入netCDF文件的问题

每一项都对应选择即可,x为经度,y为纬度。

但在显示时可能会出现上下翻转的问题,因为可能nc文件中的纬度是从下往上排的,但arcgis分配时是从上往下的顺序,就会出现上下翻转的情况,于是选择用matlab读取文件信息并导出为tif。
(代码为网上代码,非原创,但找不到那篇文章了,找到一定加原文链接(づ●─●)づ)arcgis导入netCDF文件的问题

matlab代码如下:

clc;
clear;
ncFilePath='C:\xxxx\xxxx.nc';%  ncFilePath是变量名,后面是文件地址和文件名,要改

%% 大概了解nc文件内的属性信息  知道数据的变量是什么就可以不用运行
%ncdisp(ncFilePath);%显示nc文件的所有结构,以便大概了解里面的内容
%ncdisp(ncFilePath,'lrad');%显示指定变量的内容,注意一定要是变量variables才可以
%ncdisp(ncFilePath,'/','min');%简单显示结构以及定义
%ncdisp(ncFilePath,'/','full');%全部显示所有结构和定义信息


%% 读取变量值   
lon=ncread(ncFilePath,'lon');%读取经度变量可能l为大写,自己用对应的
lat=ncread(ncFilePath,'lat');%读取纬度变量
lrad=ncread(ncFilePath,'value');%获取nc中所要的的属性值,value要改

%%保存为地理栅格tif格式,以便arcgis读取
data=flipud(lrad');  %data这里用了一个flipud函数,这个函数是进行上下翻转的
R =georasterref('RasterSize', size(data),'Latlim', [double(min(lat)) double(max(lat))], 'Lonlim', [double(min(lon)) double(max(lon))]);%地理栅格数据参考对象
geotiffwrite('C:\xxxx.tif',data,R);%路径要改
disp('done')

代码结果TIF图:​​arcgis导入netCDF文件的问题

另外,最近用arcgis打开nc文件又遇见了新的问题:

按照网上说的属性-netCDF那里调整时间后,显示的图层结果有异常(我的异常是全为0……)

使用matlab提取也受到了数据量的限制:

arcgis导入netCDF文件的问题

最后解决方法是,使用arcgis系统工具箱中的按维度选择,选择想要的时间维度即可正常显示。
​​arcgis导入netCDF文件的问题

相关标签: arcgis