在matlab中绘制地图上的数据

时间:2017-02-28 05:33:14

标签: matlab

我正在使用MATLAB R2015a。我已经定义了一个网格,它基本上是一个矩阵,用于存储第一列中网格点的纬度,第二列中网格点的经度。我有一些地震能量数据,用于存储在列向量中的区域其中每个元素对应于相应网格点处的能量。我使用此代码完成了一个曲面图(这里e_lat和e_long分别是网格矩阵的第一列和第二列): -

function [b] = cumulative_plot( beam, e_lat,e_long, t_start, t_end)
%CUMULATIVE_PLOT Plots the cumulative energy of the earthquake
%% Input Arguments
% *beam* - Energy for each time increment (columns) for each grid point (rows)
%
% *e_lat* - Vector containing Latitudes of the grid points
%
% *e_long* - Vector containing Longitudes of the grid points
%
% *t_start* - starting time
%
% *t_end* - ending time
%
% *t_start* and *t_end* define the time window within which the energy is
% to be considered

%% Code

b = [];
b = sum(beam(:,t_start:t_end)')'; % Adding the energy within the time window
b = b./max(b); % Normalising

fn = 'cumulative_energy.txt';
f = fopen(fn,'w');

for i=1:length(e_lat)
    fprintf(f,'%f %f %f \n',e_long(i),e_lat(i),b(i));
end

fclose(f);

energy_surf = fit([e_long,e_lat],b, 'loess');
plot(energy_surf,'style','contour');
hold on;
plot3(73.6400 ,34.5239 ,20,'s','MarkerSize',20,'MarkerEdgeColor','k','MarkerFaceColor','k')
hold on;
plot3(94.709,23.03,20,'s','MarkerSize',20,'MarkerEdgeColor','b','MarkerFaceColor','b')
shading interp
alpha(1)
view(0,90)
box off
colorbar
title(['Cumu Energy(0.05 - 0.2 Hz) at seconds = ' num2str(t_start )],'FontWeight','bold','FontSize',15,'FontName','Times');
xlabel('Long/degree','FontWeight','bold','FontSize',13,'FontName','Times');
ylabel('Lat/degree','FontWeight','bold','FontSize',13,'FontName','Times');

end

这是一个例子(我正在处理的实际数据): -

cumulative_plot(b_corr,e_lat,e_long,1,20);

我想在指定区域的地理地图上绘制此能量数据的等高线图。这可能吗?

为了更好的想法,这就是我现在所拥有的: -

这就是我想要达到的目标(没有紫色圆形标记和其他东西。只是基本能量): -

IMG_20170228_173241_HDR (1).jpg

1 个答案:

答案 0 :(得分:0)

如果您有山地细节的bmp图像,请以RGB格式保存数据,并将其与累积能量标度的数据按强度混合。 Intensity提供alpha混合值。

相关问题