How do I plot points over a topographic map?

I have plotted a secton of the globe using ETOPO data. I want to plot points onto this surface, but the following "geoshow" command does not work. Does anyone know how to plot like this?
Thanks!
ax = worldmap([20 50],[-130 -65]);
mstruct = gcm;
latlim = [20 50];
lonlim = [-130 -65];
[Z, refvec] = etopo('etopo1_ice_c.flt', 1, latlim, lonlim);
load coast
geoshow(Z, refvec, 'DisplayType', 'surface');
hold on;
%Plot Stations
A = load('Stations.txt');
for ii=1:length(A)
geoshow(A(ii,1),A(ii,2),'Marker','^','MarkerEdgeColor','k','Markersize',4);
hold on;
end

 Accepted Answer

The issue is that when you use display type 'surface' you get a 3D surface. The markers are plotted with Z=0, so they end up hidden. The simplest solution is to use display type 'texturemap'.
geoshow(Z, refvec, 'DisplayType', 'texturemap');
Alternatively, you can give the markers a Z value large enough for them to appear above the surface.
geoshow(40:45, -80:-75, 'DisplayType', 'point', 'Marker', '^', ...
'MarkerEdgeColor','k','Markersize',4, 'Zdata', 10000*ones(6,1))

3 Comments

Thank you, this worked perfectly!
Do you also know how to overlay text?
Thank you!
Try textm or gtextm. With textm, you can specify the location in lat and lon. With gtextm, you click where you want the text to appear.
textm(42, -75, 'Hello World')

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!