在表面地图上绘制圆圈Matlab

时间:2013-10-23 23:05:56

标签: matlab mapping

我有一个从Northing(X),Easting(y)和Elevation(z)数据创建的曲面图。我想在特定半径(比如400米)的特定点周围画一个圆圈。圆圈必须显示在曲面图上。下面是我创建表面贴图的代码。任何帮助将不胜感激。

% load the map data
x = elevgrid(:,4); % northing
y = elevgrid(:,5); % easting
z = elevgrid(:,3); % elevation
% Put data onto a grid
[qx,qy] = meshgrid(linspace(min(x),max(x)),linspace(min(y),max(y)));
F = TriScatteredInterp(x,y,z);
qz = F(qx,qy);
% plot in matrix form
surf(qx,qy,qz)

EDIT Here是指向样本数据的文本文件的链接 - 格式为longtitude,latitiude,elevation。

1 个答案:

答案 0 :(得分:0)

你应该可以很容易地使用plot3。有关已发布代码的修改版本,请参阅下面的代码。

我不确定您的样本数据是如何表示的(为了避免将来出现问题,请尝试将您的问题简化为最基本的问题,包括输入)。

clear;clc
% create data
xy = -2.5 + 5*gallery('uniformdata',[200 2],0);
x = xy(:,1);
y = xy(:,2);
z = x.*exp(-x.^2-y.^2);

% Put data onto a grid
[qx,qy] = meshgrid(linspace(min(x),max(x)),linspace(min(y),max(y)));
F = scatteredInterpolant(x,y,z);
qz = F(qx,qy);
% plot in matrix form
mesh(qx,qy,qz)

% Plot circle
hold on
r = 0.6;
xp = 0.4;
yp = -1.2;
t = linspace(0,2*pi);
Xp = r*sin(t)+xp;
Yp = r*cos(t)+yp;
plot3(Xp,Yp,F(Xp,Yp))
hold off

BR Magnus