I have a function that displays the countries of the world on a global plot and I need to know how to plot lines of lat and lon in even increments of 10 degrees onto this global plot without using the geoshow command found in the mapping toolbox.
Prashant Kumar answered .
2025-11-20
R = 6371; % earth radius in km latspacing = 10; lonspacing = 20; % lines of longitude: [lon1,lat1] = meshgrid(-180:lonspacing:180,linspace(-90,90,300)); [x1,y1,z1] = sph2cart(lon1*pi/180,lat1*pi/180,R); plot3(x1,y1,z1,'-','color',0.5*[1 1 1]) hold on % lines of latitude: [lat2,lon2] = meshgrid(-90:latspacing:90,linspace(-180,180,300)); [x2,y2,z2] = sph2cart(lon2*pi/180,lat2*pi/180,R); plot3(x2,y2,z2,'-','color',0.5*[1 1 1]) axis equal tight off

And since you can see all the way through the globe, perhaps you want to put an opaque sphere inside the globe. Do that like this. I'm making the sphere 0.99 times the size of the Earth just to make sure it doesn't overlap the lines of lat and lon:
[X,Y,Z] = sphere(100); surf(X*R*.99,Y*R*.99,Z*R*.99,'facecolor','w','edgecolor','none')

For a little context, I'll also convert national borders to cartesian coordinates in the same way. You'll need the data from my borders function for this part:
C = load('borderdata.mat');
for k = 1:246
[xtmp,ytmp,ztmp] = sph2cart(deg2rad(C.lon{k}),deg2rad(C.lat{k}),R);
plot3(xtmp,ytmp,ztmp,'k')
end
