# Multiple geoplot lines with one call

43 views (last 30 days)
Jon Martinez on 26 Apr 2021
Answered: Rob Comer on 22 Dec 2021
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?

Rob Comer on 22 Dec 2021
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 on 26 Apr 2021
Edited: Cris LaPierre on 26 Apr 2021
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. R2019b

### Community Treasure Hunt

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

Start Hunting!