Multiple geoplot lines with one call

조회 수: 42 (최근 30일)
Jon Martinez
Jon Martinez 2021년 4월 26일
답변: Rob Comer 2021년 12월 22일
I'm trying to plot multiple lines with geoplot but I think I'm missing something with the geoplot notation. Supposing I want to plot only two lines:
from = [48 2]; % Longitude, Latitude
toA = [52 13]; % Longitude, Latitude
toB = [41.7 12.5]; % Longitude, Latitude
I can use:
geoplot([from(1) toA(1)],[from(2) toA(2)],[from(1) toB(1)],[from(2) toB(2)]);
which already seems quite complicated. What if I want to plot more lines? I would expect something like
lonFrom = [48; 48; 48]; % Longitude From
latFrom = [2; 2; 2]; % Latitude From
lonTo = [52; 41.7; 40]; % Longitude To
latTo = [13; 12.5; -3.5]; % Latitude To
geoplot([lonFrom lonTo],[latFrom latTo]) % ERROR
to work, but it doesn't. Apparently geoplot only works line by line meaning with vectors for longitude and latitude and no matrices. Is this true? Do I have to explicitly give longitude and latitude coordinates for every single line?
geoplot([lonFrom(1) lonTo(1)],[latFrom(1) latTo(1)],...
[lonFrom(2) lonTo(2)],[latFrom(2) latTo(2)],...
[lonFrom(3) lonTo(3)],[latFrom(3) latTo(3)]); % Works but impractical for multiple lines
It would be a nightmare to plot 5, 10 or 100 lines. A loop would somewhat do the trick, but I would like to have all the lines in one handle. Am I missing something? Shouldn't geoplot be able to accept and interpret matrices as input?

답변 (2개)

Rob Comer
Rob Comer 2021년 12월 22일
You can use plot() to plot matrices in a geographic axes
Any easy workaround is to (a) create a GeographicAxes object and (b) add lines to it using the plot function instead of the geoplot function.
But first a quick correction: It looks like you want to connect each of 3 points to a common point at (lat=2, lon=48). However, plot creates a line for each column in the input matrices, not each row, so I think you have your inputs transposed. Starting again, and forming 2x3 matrices LAT and LON, we have:
lonFrom = [48 48 48]; % Longitude From
latFrom = [2 2 2]; % Latitude From
lonTo = [52 41.7 40]; % Longitude To
latTo = [13 12.5 -3.5]; % Latitude To
LON = [lonFrom; lonTo];
LAT = [latFrom; latTo];
For reference, here are the lines in an ordinary axis using plot:
figure
plot(LON,LAT)
Finally, create a GeographicAxes in advance using geoaxes, then pass it to plot as the first input:
figure
gx = geoaxes;
plot(gx,LAT,LON)
Note: Latitude comes before longitude when plotting into a GeographicAxes, whether using geoplot or plot (or line, geoscatter, scatter, or text).

Cris LaPierre
Cris LaPierre 2021년 4월 26일
편집: Cris LaPierre 2021년 4월 26일
Use the documentation to determine what valid input arguments are. Your observation is correct - geoplot currently only supports vectors as inputs for lat and lon.

카테고리

Help CenterFile Exchange에서 Geographic Plots에 대해 자세히 알아보기

태그

제품


릴리스

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by