3

我一直在使用 Matlab 2011b 和 contourf/contourfm 在北美地图上绘制 2D 数据。我从 mathworks 网站上的 contourfm 帮助页面开始,如果您使用名为“geoid”的默认数据和参考向量“geoidrefvec”,它会非常有用。

以下是一些适用于预设数据的简单代码

figure
axesm('MapProjection','lambert','maplo',[-175 -45],'mapla',[10 75]);
framem; gridm; axis off; tightmap

load geoid
%geoidrefvec=[1 90 0];

load 'TECvars.mat'
%contourfm(ITEC, geoidrefvec, -120:20:100, 'LineStyle', 'none');
contourfm(geoid, geoidrefvec, -120:20:100, 'LineStyle', 'none');

coast = load('coast');
geoshow(coast.lat, coast.long, 'Color', 'black')
whitebg('w')
title(sprintf('Total Electron Content Units x 10^1^6 m^-^2'),'Fontsize',14,'Color','black')
%axis([-3    -1   0    1.0]);
contourcbar

当我尝试使用我的数据时,问题就出现了。我很确定参考向量决定了数据应该在地球上绘制的位置,但我找不到任何关于该向量如何工作或如何创建一个以处理不同数据的文档。

这是一个包含我的数据的 .mat 文件。ITEC 是要绘制的值矩阵。关于网格相对于地球的位置信息可以在称为 RT 的单元阵列中找到,但基本思想是。ITEC(1,1) 指的是 Lat=11 Long=-180,ITEC(58,39) 指的是 Lat = 72.5 Long = -53,数据间隔均匀。

有谁知道参考向量如何定义数据在地图上的放置位置?或者也许还有另一种方法可以做到这一点?提前致谢!

4

1 回答 1

2

好的。所以我想通了。我意识到,鉴于向量中只有三个维度,纬度数据之间的度数必须与经度数据之间的度数相同。也就是说,每个水平数据点之间的间距必须与每个垂直点之间的间距相同。比如1度。

参考向量中的第一个值是每个数据点之间的距离(以度为单位)(我认为......这在我的情况下有效),向量中的两个第二个值分别是最小纬度和最小经度。

在我的情况下,数据在每个方向上的间距相等,但垂直和水平的间距不同。我只是将数据插值到 1x1 网格密度,并将向量中的第一个值设置为 1。

希望这会帮助有同样问题的人。

不过快速提问,既然我回答了自己的问题,我会得到赏金吗?我不想失去 50 个“有价值”的声望点哈哈

于 2012-06-13T00:31:19.653 回答