2012-07-25 27 views

答えて

8

ここに、ツールボックスを必要としない例があります。

まず、Mercator projectionを使用して経度/緯度の位置を変換する関数を作成します。

function [x,y] = mercatorProjection(lon, lat, width, height) 
    x = mod((lon+180)*width/360, width) ; 
    y = height/2 - log(tan((lat+90)*pi/360))*width/(2*pi); 
end 

我々はいくつかの場所を作成:私たちは、Wikipediaからマップをロード投影を適用し、マーカーをオーバーレイ

% GPS positions (latitude,longitude) of some markers 
data = [ 
    -22.976730, - 43.195080 ; 
    55.756950, 37.614975 ; 
    33.605381, - 7.631940 ; 
    35.670479, 139.740921 ; 
    51.506325, - 0.127144 ; 
    40.714550, - 74.007124 ; 
    -33.869629, 151.206955 ; 
    -26.204944, 28.040035 ; 
    37.777125, -122.419644 ; 
    30.083740, 31.255360 ; 
     6.439180, 3.423480 
]; 
labels = { 
    'Rio de Janeiro' 
    'Moscow' 
    'Casablanca' 
    'Tokyo' 
    'London' 
    'New York' 
    'Sydney' 
    'Johannesburg' 
    'San Francisco' 
    'Cairo' 
    'Lagos' 
}; 

次へ:

% world map in Mercator projection 
fname = 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Mercator-projection.jpg/773px-Mercator-projection.jpg'; 
img = imread(fname); 
[imgH,imgW,~] = size(img); 

% Mercator projection 
[x,y] = mercatorProjection(data(:,2), data(:,1), imgW, imgH); 

% plot markers on map 
imshow(img, 'InitialMag',100, 'Border','tight'), hold on 
plot(x,y, 'bo', 'MarkerSize',10, 'LineWidth',3) 
text(x, y, labels, 'Color','w', 'VerticalAlign','bottom', 'HorizontalAlign','right') 
hold off 

output

+0

うわー!カッコいい。そのような詳細な答えをアムロにありがとう! – Geni

2

をグレートする方法に世界をプロット!

は、あなただけの次を変更する必要があります。

imshow(img, 'InitialMag',100, 'Border','tight'), hold on 

imshow(I, 'InitialMag',100, 'Border','tight'), hold on 

+2

私はこれが答えではないと信じています。それは@Amroの答えに対する編集でなければなりません。 –

2

アムロの答えは私のために働いたが、私はいくつかの変更をしなければなりませんでした。

私はMatlab 7.9とを使用しています。imshowはImage Processing Toolboxの一部です。このいずれかで

​​

関数imshow機能を使用せずに地図を表示するためには、私は、この行に置き換え

image(img) 

をそして、それは働きました。

関連する問題