2011-10-19 3 views
4

J'essaie de tracer des flèches sur les lignes entre deux points géospatiaux (latitude, paires de longitude) sur Matlab sans succès. Pour tracer seulement les lignes sans les pointes de flèches, je me sers de ce qui suit:Tracer une flèche sur la ligne entre deux points géospatiaux sur Matlab

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

La fonction piste construit une liste de coordonnées qui permet à la fonction de geoshow de construire un ensemble de lignes entre ces coordonnées. Cependant, je n'ai aucun contrôle sur ces lignes. Ils sont, apparemment, un objet. Je ne peux donc pas ajouter de pointes de flèches à la fin de chaque point du chemin.

La fonction annotation() ne fonctionne pas car elle n'ajoute pas l'annotation de la flèche dans la carte. C'est-à-dire, si un zoom dans ou hors de la carte, par exemple, la flèche se déplace.

J'ai également essayé la fonction flèche() de http://www.mathworks.com/matlabcentral/fileexchange/278 mais apparemment cela ne fonctionne pas avec les cartes.

Enfin, j'ai regardé dans la fonction quiverm() mais cela ne me permet pas de spécifier deux coordonnées différentes. Son application semble incompatible avec ce dont j'ai besoin.

D'autres idées?

Merci beaucoup,

Répondre

4

Pour tracer des choses manuellement à un chiffre geoshow, l'astuce consiste à utiliser mfwdtran pour convertir les données lat/long à la figure système de coordonnées. Ensuite, vous pouvez utiliser arrow comme d'habitude. Voici un exemple sur la construction de l'exemple de 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

Par ailleurs, vous pouvez également spécifier une propriété Marker dans vos appels à geoshow. Par exemple:

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

enter image description here

+0

Merci beaucoup! Ce genre de résout le problème. Cependant, la fonction flèche dessine une pointe de flèche proportionnelle au zoom initial. Par exemple, si je change 'axism ('mercator', 'MapLatLimit', [28 47], 'MapLonLimit', [- 10 37], ... 'Grille', 'activé', 'Cadre', 'activé' ',' MeridianLabel ',' on ',' ParallelLabel ',' on ') 'à' axism (' mercator ',' MapLatLimit ', [- 65 80],' MapLonLimit ', [], ... ' Grille ',' on ',' Frame ',' on ',' MeridianLabel ',' on ',' ParallelLabel ',' on ') 'le résultat sont des pointes de flèches trop grandes même pour s'adapter au chemin. Savez-vous comment résoudre ce problème? –

+0

J'ai d'abord considéré votre deuxième approche, mais, comme vous pouvez le constater, les flèches ne correspondent pas toujours à la bonne direction. –

+0

@ Ricardo Super Je suis content que cela a aidé. Vous pouvez modifier toutes les parties de la flèche en fonction de la description dans l'aide. Bonne chance! –

Questions connexes