mapprofile

Интерполируйте между waypoints на обычной сетке данных

Синтаксис

[zi,ri,lat,lon] = mapprofile
[zi,ri,lat,lon] = mapprofile(Z,R,lat,lon)
[zi,ri,lat,lon] = mapprofile(Z,R,lat,lon,units)
[zi,ri,lat,lon] = mapprofile(Z,R,lat,lon,ellipsoid)
[zi,ri,lat,lon] = mapprofile(___,'trackmethod','interpmethod')

Описание

mapprofile строит профиль значений между waypoints на отображенной обычной сетке данных. mapprofile использует текущий объект, если это - обычная сетка данных или первая обычная сетка данных, найденная на текущей системе координат. zdata сетки используется для профиля. Цветные данные используются в отсутствие zdata. Результат отображен в новой фигуре.

[zi,ri,lat,lon] = mapprofile возвращает значения профиля, не отображая их. Вывод zi содержит интерполированные значения вдоль больших кругов между waypoints. ri является вектором связанных расстояний сначала waypoint в модулях степеней дуги вдоль поверхности. lat и lon являются соответствующими широтами и долготами.

[zi,ri,lat,lon] = mapprofile(Z,R,lat,lon) принимает как вход обычную сетку данных и waypoint векторы. Никакая отображенная сетка не требуется. Наборы waypoints могут быть разделены NaNs в последовательности строки. Выходные области значений измеряются сначала waypoint в последовательности. R может быть географическим растровым объектом ссылки, вектором ссылки или матрицей ссылки.

Если R является географическим растровым объектом ссылки, его свойство RasterSize должно быть сопоставимо с size(Z).

Если R является вектором ссылки, это должно быть 1 3 с элементами:

[cells/degree northern_latitude_limit western_longitude_limit]

Если R является матрицей ссылки, это должно быть 3 2 и преобразовать растровые индексы строки и столбца к или от географических координат согласно:

[lon lat] = [row col 1] * R

Если R является матрицей ссылки, он должен задать (невращательный, нескошенный) отношение, в котором каждый столбец сетки данных падает вдоль меридиана и каждой строки падения вдоль параллели.

[zi,ri,lat,lon] = mapprofile(Z,R,lat,lon,units) задает модули выходных областей значений вдоль профиля. Допустимые модульные входные параметры области значений являются любым значением расстояния, распознанным unitsratio. Поверхностные расстояния вычисляются с помощью радиуса по умолчанию земли. Если не использовано, 'degrees' приняты.

[zi,ri,lat,lon] = mapprofile(Z,R,lat,lon,ellipsoid) использует предоставленное определение эллипсоида в вычислении области значений вдоль профиля. ellipsoid является referenceSphere, referenceEllipsoid, или объект oblateSpheroid или вектор формы [semimajor_axis eccentricity]. О выходной области значений сообщают в тех же единицах расстояния как полуглавные оси эллипсоида. Если не использовано, вектор области значений для сферы.

[zi,ri,lat,lon] = mapprofile(___,'trackmethod','interpmethod') управляйте используемыми методами интерполяции. Допустимыми методами дорожки является 'gc' для больших круговых дорожек между waypoints и 'rh' для локсодром. Действительными методами для интерполяции в матрице является 'bilinear' для линейной интерполяции, 'bicubic' для кубичной интерполяции и 'nearest' для самой близкой соседней интерполяции. Если не использовано, 'gc' и 'bilinear' приняты.

Примеры

Пример 1

Создайте карту оси для корейского полуострова. Задайте профиль повышения через демонстрационные корейские цифровые данные о повышении и постройте их, объединенный с маркерами береговой линии и города:

load korea
h = worldmap(map, refvec); % The figure has no map content.
plat = [ 43  43  41  38];
plon = [116 120 126 128];
mapprofile(map, refvec, plat, plon)
load coastlines
plotm(coastlat,coastlon)
geoshow('worldcities.shp', 'Marker', '.', 'Color', 'red')

Когда вы выбираете больше чем два waypoints, автоматически сгенерированная фигура отображает результат в трех измерениях. Следующий пример показывает относительные размеры гор в северном Китае по сравнению с глубинами Японского моря. Вызов mapprofile без входных параметров позволяет вам в интерактивном режиме выбрать waypoints на фигуре, использующей мышь. Каждое нажатие кнопки выбирает новый waypoint и хранит значения профиля, но точки не отображены на фигуре. Нажмите Enter после того, как вы выберете конечный пункт:

axes(h);
meshm(map, refvec, size(map))
demcmap(map)
[zi,ri,lat,lon] = mapprofile;

Добавление выходных аргументов подавляет отображение результатов в новой фигуре. Можно затем использовать результаты в дальнейших вычислениях или отобразить результаты сами. Здесь профиль от верхнего левого угла до нижнего правого угла вычисляется из waypoints, в интерактивном режиме выбрал карту (ваш профиль не будет идентичен тому, что показывают ниже). Пример преобразовывает области значений и повышения к километрам и отображает их в новой фигуре, устанавливая вертикальный фактор преувеличения на 20. Без вертикального преувеличения изменения в повышении были бы почти слишком небольшими, чтобы видеть.

figure
plot(deg2km(ri),zi/1000)
daspect([ 1 1/20 1 ]);
xlabel 'Range (km)'
ylabel 'Elevation (km)'

Естественно, профиль, который вы получаете, зависит от местоположений поперечного разреза, которые вы выбираете.

Пример 2

Можно вычислить значения вдоль пути независимо от существующей фигуры путем обеспечения обычной сетки данных и векторов координат waypoint. Дополнительные аргументы позволяют управление модулями области значений вывод и методы интерполяции между waypoints и элементами сетки данных.

Покажите, какая земля и океанские области лежат под большой круговой дорожкой от Франкфурта до Сиэтла:

cities = shaperead('worldcities.shp', 'UseGeoCoords', true);
Seattle = strcmp('Seattle', {cities(:).Name});
Frankfurt = strcmp('Frankfurt', {cities(:).Name});
lat = [cities(Seattle).Lat cities(Frankfurt).Lat]
lon = [cities(Seattle).Lon cities(Frankfurt).Lon]
load topo
[valp,rp,latp,lonp] = ...
   mapprofile(double(topo),topolegend, ...
   lat,lon,'km','gc','nearest');
figure
worldmap([40 80],[-135 20])
land = shaperead('landareas.shp', 'UseGeoCoords', true);
faceColors = makesymbolspec('Polygon',...
   {'INDEX', [1 numel(land)], 'FaceColor', ...
   polcmap(numel(land))});
geoshow(land,'SymbolSpec',faceColors)
plotm(latp,lonp,'r')
plotm(lat,lon,'ro')
axis off

Смотрите также

|