简体   繁体   English

在Matlab中在地图上绘制数据

[英]Plotting data on a map in matlab

I am using MATLAB R2015a. 我正在使用MATLAB R2015a。 I have defined a grid which is basically a matrix that stores the latitudes of the grid points in the first column and the longitudes of the grid points in the second column I have some data for energy of an earthquake for a region stored in a column vector where each element corresponds to the energy at the corresponding grid point. 我定义了一个网格,该网格基本上是一个矩阵,用于存储第一列中网格点的纬度和第二列中网格点的经度。对于列向量中存储的区域,我有一些地震能量数据其中每个元素对应于相应网格点处的能量。 I have done a surface plot using this code (here e_lat and e_long are the first and second columns of the grid matrix respectively):- 我已经使用此代码完成了表面绘图(此处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

This is an example (the actual data that I am processing):- 这是一个示例(我正在处理的实际数据):

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

I want to make a contour plot of this energy data on a geographic map of the region specified. 我想在指定区域的地理地图上绘制此能量数据的轮廓图。 Is this possible? 这可能吗?

To give a better idea, this is what I have right now :- 为了给一个更好的主意,这就是我现在所拥有的:

And this is kind of what I want to achieve (without the purple circular markers and other things. Just the base energy) :- 这就是我想要实现的目标(没有紫色的圆形标记和其他东西。只是基本能量):-

IMG_20170228_173241_HDR(1).jpg

If you have the bmp image of the mountain details, save the data in RGB format, and mix it with the data of the cumulative energy scale by its intensity. 如果您具有山脉细节的bmp图像,则将数据保存为RGB格式,并按强度将其与累积能量规模的数据混合。 Intensity provide the alpha blending value. 强度提供Alpha混合值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM