Estoy tratando de marcar un par de miles de geo-ubicaciones en el mundo-mapa con matlab. Tengo las latitudes y longitudes de esos lugares. Hay una buena manera de hacer esto? Gracias.

OriginalEl autor Geni | 2012-07-25

3 Comentarios

  1. 8

    Aquí es un ejemplo que no requiere de herramientas.

    Primero debemos crear una función que convierte longitute/lugares de latitud mediante la La proyección de Mercator.

    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

    Creamos algunos lugares:

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

    Siguiente nos carga un mapa de Wikipedia, aplicar la proyección y la superposición de los marcadores:

    % 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

    Parcela Geo-Ubicaciones en el mapa del Mundo con Matlab

    Wow! Eso es genial. Gracias Amro por tan detallada respuesta!

    OriginalEl autor Amro

  2. 2

    Gran manera de graficar el mundo!

    Solo tienes que cambiar los siguientes:

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

    en

    imshow(img, 'InitialMag',100, 'Border','tight'), hold on
    Yo creo que esta no es una respuesta, debe ser una edición a @Amro ‘s respuesta.

    OriginalEl autor zin

  3. 2

    Amro respuesta trabajado para mí, pero tuve que hacer algunos cambios.

    Estoy usando Matlab 7.9 y imshow es parte del Procesamiento de la Imagen caja de herramientas. Con el fin de mostrar el mapa sin necesidad de utilizar el imshow función, que sustituyó a esta línea:

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

    Con este:

    image(img)

    Y funcionó.

    OriginalEl autor Jaime Ivan Cervantes

Dejar respuesta

Please enter your comment!
Please enter your name here