Соедините точки на карте в Matlab с кривизной земли - PullRequest
0 голосов
/ 25 мая 2018

В matlab мне нужна карта с некоторыми точками, и мне нужна линия расстояния, соединяющая эти точки, которая также показывает кривизну Земли.Это возможно?Вот пример кода:

landareas = shaperead('landareas.shp','UseGeoCoords',true);
axesm ('vperspec', 'Frame', 'on', 'Grid', 'off');
point1_lat = 25;
point1_lon = 110;
point2_lat = 45;
point2_lon = 130;
geoshow(landareas,'DefaultFaceColor',[0.9 0.9 0.9],'DefaultEdgeColor',[0.5 0.5 0.5]);
geoshow(point_lat,point_lon,'DisplayType','point','LineWidth',2, 'MarkerEdgeColor',[0.1172 0.5625 1.0000],'Marker','o', 'MarkerSize',12)
geoshow(point2_lat,point2_lon,'DisplayType','point','LineWidth',2, 'MarkerEdgeColor',[0.8594 0.0781 0.2344],'Marker','^', 'MarkerSize',12)

1 Ответ

0 голосов
/ 26 мая 2018

Вы можете использовать функцию track2 из Mapping Toolbox, чтобы получить список координат вдоль линии, а затем построить график с помощью geoshow.

Например,

point1_lat = 25;
point1_lon = 110;
point2_lat = 45;
point2_lon = 130;
[lat,lon] = track2(point1_lat, point1_lon, point2_lat, point2_lon);
landareas = shaperead('landareas.shp','UseGeoCoords',true);
axesm ('vperspec', 'Frame', 'on', 'Grid', 'off', 'Origin', [point1_lat+45, point1_lon]);
geoshow(landareas,'DefaultFaceColor',[0.9 0.9 0.9],'DefaultEdgeColor',[0.5 0.5 0.5]);
geoshow(point1_lat,point1_lon,'DisplayType','point','LineWidth',2, 'MarkerEdgeColor',[0.1172 0.5625 1.0000],'Marker','o', 'MarkerSize',12)
geoshow(point2_lat,point2_lon,'DisplayType','point','LineWidth',2, 'MarkerEdgeColor',[0.8594 0.0781 0.2344],'Marker','^', 'MarkerSize',12)
geoshow(lat,lon,'LineWidth',2,'Marker','none');

, которыйрезультаты в

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...