Sto provando a contrassegnare alcune migliaia di posizioni geografiche sulla mappa del mondo con MATLAB. Ho le latitudini e le longitudini di quelle posizioni. C'è un buon modo per farlo? Grazie.Stampa geo-localizzazioni su Worldmap con Matlab
risposta
Ecco un esempio che non richiede alcuna casella degli strumenti.
Per prima cosa viene creata una funzione che converte posizioni longitute/latitudine utilizzando 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
creiamo alcune località:
% 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'
};
successivo carichiamo una mappa da Wikipedia, applicare la proiezione e sovrapporre i marcatori:
% 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
Ottimo modo per trama il mondo!
Devi solo cambiare la seguente:
imshow(I, 'InitialMag',100, 'Border','tight'), hold on
in
imshow(img, 'InitialMag',100, 'Border','tight'), hold on
Credo che questa non sia una risposta, dovrebbe essere una modifica alla risposta di @Amro. –
risposta di Amro ha funzionato per me, ma ho dovuto fare alcune modifiche.
Sto usando Matlab 7.9 e imshow è parte di Image Processing Toolbox. Al fine di mostrare la mappa senza utilizzare la funzione imshow, ho sostituito questa linea:
imshow(img, 'InitialMag',100, 'Border','tight')
Con questo:
image(img)
e ha funzionato.
- 1. PhantomJS supporta geolocalizzazioni?
- 2. Come tagliare WorldMap con poligono in R?
- 3. API di Wikipedia per geolocalizzazioni
- 4. Stampa e salvataggio come file in MATLAB
- 5. MATLAB tempo di stampa come stringa
- 6. Immagine deblurring su Matlab
- 7. Matlab sceglie il colore casuale per la stampa
- 8. simulazione su MATLAB
- 9. Stampa su un file o stampa su shell in Perl
- 10. MATLAB: stampa una figura in pdf come la figura mostrata nel MATLAB
- 11. Come si stampa una stringa in MATLAB a colori?
- 12. Stampa nella finestra di comando senza 'ans =' in matlab?
- 13. Stampa su uno sfondo di immagine in python
- 14. Stampa Firemonkey su Mac OSX
- 15. Stampa su LPT1 in C#
- 16. Stampa Java - Stampa ingrandita su un numero ridotto di stampanti
- 17. Nascondi parti svg su stampa
- 18. Stampa matrice su un file
- 19. Perché java.util.logging.Logger stampa su stderr?
- 20. matlab "memoria" funzione su mac?
- 21. Python datetime su Matlab datum
- 22. Layout di stampa CSS - Stampa su una singola pagina
- 23. Matlab/Octave con EC2
- 24. MATLAB: trattare con java.lang.String
- 25. Stampa formattata su buffer circolare
- 26. Stampa percorso dell'eseguibile su OSX
- 27. Stampa su carta in rotolo
- 28. Python 2.7: Stampa su file
- 29. Stampa non funzionante su lambda
- 30. Matlab navigare con diverse combinazioni di colori
Wow! Questo è figo. Grazie Amro per una risposta così dettagliata! – Geni