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]. О выходной области значений сообщают в тех же единицах расстояния как большие полуоси эллипсоида. Если вы не задаете ellipsoid и R ссылочный объект с непустым GeographicCRS свойство, затем mapprofile использует эллипсоид, содержавшийся в Spheroid свойство geocrs объект в GeographicCRS свойство R. В противном случае, mapprofile использует сферу единичного радиуса.

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

Примеры

свернуть все

Загрузите растровые данные о вертикальном изменении и географический объект ссылки ячеек для корейского полуострова. Задайте профиль вертикального изменения. Затем постройте профиль наряду с данными о маркере береговой линии и города. Когда вы выбираете больше чем два waypoints, автоматически сгенерированная фигура отображает результат в 3-D.

load korea5c
plat = [ 43  43  41  38];
plon = [116 120 126 128];
mapprofile(korea5c,korea5cR,plat,plon)
load coastlines
plotm(coastlat,coastlon)
geoshow('worldcities.shp','Marker','.','Color', 'red')

Этот пример показывает относительные размеры гор в северном Китае (верхнем левом) по сравнению с глубинами (нижнего правого) Японского моря.

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

load korea5c
worldmap(korea5c,korea5cR)
meshm(korea5c,korea5cR)
demcmap(korea5c)
[zi,ri,lat,lon] = mapprofile;

Когда вы вызываете mapprofile с помощью выходных аргументов результаты не отображаются на новом рисунке. Вместо этого используйте результаты в дальнейших вычислениях или отобразите результаты сами. В данном примере преобразуйте области значений и вертикальные изменения к километрам и отобразите их на новом рисунке. Установитесь вертикальный коэффициент преувеличения на 50. В противном случае разницы в вертикальном положении были бы почти слишком малы, чтобы видеть.

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

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

Можно вычислить значения вдоль пути независимо от существующей фигуры путем обеспечения обычной сетки данных и векторов из координат 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 topo60c
[valp,rp,latp,lonp] = ...
   mapprofile(topo60c,topo60cR, ...
   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

Загрузите данные о вертикальном изменении и географический объект ссылки ячеек для корейского полуострова. Просмотрите область на географических осях с помощью спутниковой основной карты.

load korea5c
figure
geolimits(korea5cR.LatitudeLimits,korea5cR.LongitudeLimits)
geobasemap('satellite')

Задайте конечные точки для прямолинейного поперечного разреза через область. Вычислите профиль вертикального изменения при помощи mapprofile функция. По умолчанию, mapprofile функционируйте использует билинейную интерполяцию вдоль большой круговой дорожки.

plat = [40.5 30.7];
plon = [121.5 133.5];
[z,rng,lat,lon] = mapprofile(korea5c,korea5cR,plat,plon);

Сохраните основную карту и пределы при помощи hold on. Постройте поперечный разрез на географических осях.

hold on
geoplot(lat,lon,'w','LineWidth',2)

Постройте область значений поперечного разреза и вертикальное изменение на Осях декартовой системы координат.

figure
plot(rng,z,'r')

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

|