0

我正在用 Matlab 制作我自己的 Shakemap(到目前为止,Shamemap)。Shakemap 是地图中地面震动强度的表示(谷歌搜索更多信息)。我希望它与 USGS 的相似,他们使用喷射颜色图绘制强度,并控制阴影以表示测高数据。到目前为止,我还没有弄清楚他们是如何做到这一点的。

我有一组坐标与位置的高程(来自 NASA 的 SRTM),在同一组坐标中我有一些地面震动的参数。

[经纬度 SRTM]

[lat long GroundShaking]

我可以分别对它们进行轮廓化,但是如果我将它们放在同一个图中,就像一个覆盖另一个一样。

我怎样才能把它们放在同一个图中?我曾考虑为每个位置分配一个新值,以便新值同时考虑这两种度量;具有相同 GroundShaking 参数的位置应该是相同的颜色,但如果一个更高,那么那个应该更暗。不幸的是,我不知道如何实现这一点。我也考虑过手动设置 alpha 功能,但我不能让它仅适用于 Ground Shaking 数据。有什么建议么 ?

MWE:

x=0:0.01:1;
y=0:0.01:1;
[xx,yy]=meshgrid(x,y);
asd1=zeros(length(x),length(y));
ads2=asd1;
for i=1:length(x)
    for j=1:length(y)
        asd1(i,j)=x(i)*y(j);
        asd2(i,j)=x(i)*x(i)+y(j)*y(j);
    end
end
c1=griddata(x,y,asd1,xx,yy, 'linear');
c2=griddata(x,y,asd2,xx,yy, 'linear');
contourf(asd1)
contourf(asd2)
alpha(0.5)

(MWE与地图无关,因为数据量很大)

4

1 回答 1

0

您需要添加 ahold on以便第一个图不会被覆盖。这几乎可以工作。

colormap gray
map1=colormap
colormap jet
map2=colormap

M=[map1;map2];
asd2=asd2*(max(asd1(:))-min(asd1(:)))/(max(asd2(:))-min(asd2(:)));
asd2=asd2-max(asd2(:));

colormap(M)
caxis([min(asd2(:)) max(asd1(:))])
figure(1)
contourf(asd1)
figure(2)
contourf(asd2)
于 2014-06-01T22:19:43.860 回答