2011-10-19 78 views
4

我想绘制Matlab上两个地理空间点(经度,纬度对)之间的线上的箭头,但没有成功。要绘制只是没有箭头的线,我使用了以下内容:在Matlab上的两个地理空间点之间的线上绘制箭头

path = loadGPSPoints(); 
[lttrk,lntrk] = track(path);  
geoshow(lttrk,lntrk,'DisplayType','line','color','r'); 

的跟踪功能建立坐标列表,允许geoshow功能,打造一个集这些坐标之间的线路。但是,我无法控制这些线条。他们显然是一个对象。所以我不能将箭头添加到路径中每个点的末尾。

注释()函数不起作用,因为它不会将箭头注释添加为地图的一部分。也就是说,如果放大或缩小地图,例如箭头就会移位。

我也尝试了http://www.mathworks.com/matlabcentral/fileexchange/278的函数arrow()函数,但它显然不适用于地图。

最后,我看着颤抖()函数,但它不允许我指定两个不同的坐标。它的应用似乎与我所需要的不兼容。

还有其他想法吗?

非常感谢你,

回答

4

要手工绘制的东西到geoshow图中,诀窍是使用mfwdtran的纬度/经度数据转换为数字坐标系。那么你可以像平常一样使用arrow。下面是一个例子,从http://www.mathworks.com/help/toolbox/map/ref/track.html建设中的范例:

load coast 
axesm('mercator','MapLatLimit',[28 47],'MapLonLimit',[-10 37],... 
    'Grid','on','Frame','on','MeridianLabel','on','ParallelLabel','on') 
geoshow(lat,long,'DisplayType','line','color','b') 
waypoints = [36,-5; 36,-2; 38,5; 38,11; 35,13; 33,30; 31.5,32]; 
[X, Y] = mfwdtran(waypoints(:,1),waypoints(:,2)); 
arrow([X(1:(end-1)) Y(1:(end-1))], [X(2:end) Y(2:end)]) 

enter image description here

顺便问一下,你也可以在你的电话到geoshow指定Marker属性。例如:

geoshow(waypoints(:,1),waypoints(:,2),'DisplayType','line','Marker','>','color','r') 

enter image description here

+0

非常感谢!这样可以解决问题。但是,箭头功能绘制与初始缩放成比例的箭头。例如,如果我将'axes'('mercator','MapLatLimit',[28 47],'MapLonLimit',[ - 10 37],... 'Grid','on','Frame','on ','MeridianLabel','on','ParallelLabel','on')'到'axesm'('mercator','MapLatLimit',[ - 65 80],'MapLonLimit',[],... 'Grid '','上','框架','上','MeridianLabel','上','ParallelLabel','上'),结果是箭头太大,甚至不适合路径。你知道如何解决这个问题吗? –

+0

我之前也考虑过你的第二种方法,但正如你所看到的,箭头并不总是与正确的方向相匹配。 –

+0

@ Ricardo很好,我很高兴它有帮助。您可以根据帮助中的说明调整箭头的所有部分。祝你好运! –

相关问题