2011-10-19 13 views
4

Matlab上の2つの地理空間点(緯度、経度のペア)間の線に矢頭をプロットしようとしています。矢印のない行だけをプロットするには、私は次の使用しています:Matlab上の2つの地理空間点の間の線上に矢頭をプロットする

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

トラック機能はgeoshow機能がこれらの座標間のラインのセットを構築することを可能にする座標のリストを作成します。しかし、私はこれらの行を制御することはできません。彼らは明らかに1つのオブジェクトです。パスの各ポイントの最後に矢頭を追加することはできません。

annotation()関数は矢印注釈をマップの一部として追加しないため、機能しません。つまり、地図を拡大または縮小すると、矢印が移動します。

私はhttp://www.mathworks.com/matlabcentral/fileexchange/278から関数arrow()関数も試しましたが、明らかにマップでは機能しません。

最後に、私はquiverm()関数を調べましたが、2つの異なる座標を指定することはできません。そのアプリケーションは、私が必要とするものと互換性がないようです。

他のアイデアはありますか?

geoshow図を手動ものをプロットするには、非常に多くの

答えて

4

をありがとう、トリックは、座標系を図に緯度/経度データを変換する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

どうもありがとう!そのようなことは問題を解決します。ただし、矢印関数は、最初のズームに比例した矢頭を描きます。例えば、 'axesm(' mercator '、' MapLatLimit '、[28 47]、' MapLonLimit '、[ - 10 37]、... ' Grid '、' on '、' Frame '、' on 'を変更すると、 Axelm( 'mercator'、 'MapLatLimit'、[ - 65 80]、 'MapLonLimit'、[]、...)に設定します。 'グリッド(グリッド)'、 'MeridianLabel'、 'on'、 'ParallelLabel' 'on'、 'frame'、 'on'、 'MeridianLabel'、 'on'、 'ParallelLabel'、 'on') '結果はパスに収まる大きさでも大きすぎます。あなたはそれを修正する方法を知っていますか? –

+0

私はあなたの2番目のアプローチをこれまでと同じように考えましたが、わかるように、矢印が正しい方向に常に一致するとは限りません。 –

+0

@Ricardo素晴らしい私はそれが助けてうれしいです。ヘルプの説明に従って矢印のすべての部分を微調整することができます。がんばろう! –

関連する問題