【问题标题】:Matlab contourf() to plot data on a global mapMatlab contourf() 在全局地图上绘制数据
【发布时间】:2012-06-08 23:03:32
【问题描述】:

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

这里有一些简单的code 可以使用预设数据:

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

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

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

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

【问题讨论】:

    标签: plot maps gis matlab


    【解决方案1】:

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

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

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

    希望这能帮助遇到同样问题的人。

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

    【讨论】:

    • 回答好几个问题,你很快就会获得 50 代表。 :)
    • @GPSmaster 你也被鼓励接受你自己的答案(虽然它不会让你得到你的赏金)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2020-03-09
    • 2016-02-06
    • 1970-01-01
    相关资源
    最近更新 更多