Geographic Geographic Geographic Locations on Worldmap with Matlab

I am trying to mark several thousand geolocations on a world map using Matlab. I have the latitudes and longitudes of these places. Is there a good way to do this? Thanks.

+6
source share
3 answers

Here is an example that does not require any tools.

First we create a function that converts longitute / latitude locations using the Mercator prediction .

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 

We create several locations:

 % 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' }; 

Then we load the map from Wikipedia , apply the projection and apply markers:

 % 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

+8
source

Great way to build a world!

You just need to change the following:

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

in

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

Amro's answer worked for me, but I had to make some changes.

I am using Matlab 7.9, and imshow is part of the image processing tool. To show the map without using the imshow function, I replaced this line:

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

With the help of this:

 image(img) 

And it worked.

+2
source

Source: https://habr.com/ru/post/921330/


All Articles