How to plot Earth and drape a mesh with elevation data over it?

4 次查看(过去 30 天)
Hello, I need a simple Earth model, but with correct elevation data. With it I want to check whether visual contact between two points is possible. (i.e. is there a mountain in view or not?) With the help of the documentation I created this code:
Earth = wgs84Ellipsoid;
figure('Renderer','opengl')
ax = axesm('globe','Geoid',Earth,'Grid','off');
axis equal off
view(3)
load topo
geoshow(topo,topolegend,'DisplayType','texturemap')
demcmap(topo)
land = shaperead('landareas','UseGeoCoords',true);
plotm([land.Lat],[land.Lon],'Color','black')
I got the hint with meshm from this example: Drape Geoid Heights Over Topography
load geoid
meshm(geoid,geoidrefvec,size(geoid),topo)
However, adding these two lines seems to be not enough. I do not get errors, but the coloring is weird. Question: How can I drape the elevation data over an ellipsoid? And is there a easy way to check whether a line between two points is intersecting the mesh or not?
Thanks for your help!

采纳的回答

Ni Wi
Ni Wi 2017-11-23
Dear future reader, this is the solution I found:
Earth = wgs84Ellipsoid;
axesm('globe','Grid','on','GlineStyle','-','Geoid',Earth)
view(3)
axis off
load topo
topo = topo / (1e-2); % The elevation can be exaggerated here
meshm(topo,topolegend,size(topo),topo);
demcmap(topo)

更多回答(0 个)

标签

Community Treasure Hunt

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

Start Hunting!

Translated by