NetCDF文件提取网格框
34视图(30天)
显示旧的评论
我新Matlab编程(通常使用IDL)但我一直负责在特定gridsquares从netcdf提取气象数据文件。我看着ncread文件的结构,但我的问题是,netcdf在193 x 130 y网格不匹配任何全球网格。现我寻找的是:在十进制度纬度28.046经度86.902。我怎么找到这是netcdf文件?
的一个例子的一个netcdf文件(test.nc)可以在这里找到:
https://drive.google.com/folderview?id=0B-amO6HuYM_yfjhFT3djOXF5dmhwaWc5b3Q4cXZoVkhMVFdJeU8xZ20tZXVpcXZTdzlVTEU&usp=sharing
谢谢
0评论
答案(4)
乍得格林
2015年1月23日
我认为这个问题是纬度/经度网格不定期——他们在
旋转
坐标。如果你有工具箱的映射,这是第一个“切片”
助教
:
意大利= 28.046;
loni = 86.902;
助教= ncread (“test.nc”,“助教”);
rlat = ncread (“test.nc”,“rlat”);
rlon = ncread (“test.nc”,“rlon”);
起源= newpole (80、-123);
[rlati, rloni] = rotatem(拉提、loni起源、“前进”,“度”);
tas1 =挤压(助教(:,:1));
interp2 (rlat、rlon tas1、rlati rloni)
ans =
261.41
4评论
穆罕默德Abouali
2015年1月26日
如果你想使用rlon / rlat乍得说在这里你需要改变你的目的地形成86.902,28.046还旋转版本,似乎你正在做的事情。
但如果你不想这样做的旋转版本存储在纬度/经度坐标变量,并且可以使用我提供的代码(interp2行不通non-rotated版本)。
原来是使用ConstructPolyInterpolant2D更快的执行时间序列插值,并non-rotated版本。我设计了这个函数特别是对于这类应用程序,你有相同的源和目标网格,但你想插入一个时间序列或你想插入很多不同的领域。如果你只有几个插值函数可能不合适,但如果你有快366插值,因为它显示了它的工作原理。
穆罕默德Elshamy
2017年3月3日
谢谢你的这些信息。有办法reproject整个领域。我已经找到了纬度和经度但矩阵向量所以interp2不接受他们。
2的评论
乍得格林
2017年3月5日
一个常见的问题,
interp2
和地理数据的顺序。的问题是否网格是由
[latgrid, longrid] = meshgrid(纬度、经度);
或
[longrid, latgrid] = meshgrid(经度、纬度);
不同的数据集建立网格以不同的方式,所以你可能需要做的事
子= interp2 (latgrid, longrid, z,意大利loni);
或
子= interp2 (loni longrid, latgrid, z,意大利);
阿施施Uthama
2015年1月23日
编辑:阿施施Uthama
2015年1月23日
我这么远. .然后意识到不存在精确匹配的纬度/经度。因此,从概念上讲,你想做什么?选择你所需的纬度/经度点最接近?(最近的欧几里得距离吗?还是有另一个指标来衡量两个背阔肌/经度之间的“距离”?)
我曾经疯狂的如下:
% %检查
ncFile =“test.nc”;
ncdisp (ncFile);
% %读不均匀(?)纬度和经度
alllat = ncread (ncFile,“纬度”);
alllon = ncread (ncFile,“朗”);
% %的索引所需的纬度/经度
lat = 28.046;
朗= 86.902;
% %寻找精确匹配
latInd =找到(alllat = = lat)
lonInd =找到(alllon = =经度)
% %寻找最接近的匹配(用平均绝对差)
madlatlon = abs (alllat-lat) + abs (alllon-lon);
[~,closestInd] = min (madlatlon (:));%注意——这是一个线性指数
closestLat = alllat (closestInd)
closestLon = alllon (closestInd)
% %读到的值:
[rlonInd, rlatInd] = ind2sub(大小(alllat), closestInd);%转换为x, y指数
%这个纬度/经度阅读所有的时间
助教= ncread (ncFile,“助教”[rlonInd rlatInd 1],[1 1正]);
助教=挤压(助教);%使数据单维度
情节(助教);标题([“助教”num2str (closestLat)“纬度”,num2str (closestLon)“朗”]);