mapprofile

Интерполяция между путевыми точками на регулярной сетке данных

Синтаксис

[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 строит график значений между путевыми точками на отображаемой регулярной сетке данных. mapprofile использует текущий объект, если это обычная сетка данных или первая регулярная сетка данных, найденная на текущей системе координат. Сетка zdata используется для профиля. Данные о цвете используются в отсутствие zdata. Результат отображается на новом рисунке.

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

[zi,ri,lat,lon] = mapprofile(Z,R,lat,lon) принимает как вход регулярные векторы сетки данных и путевой точки. Отображаемая сетка не требуется. Наборы путевых точек могут быть разделены NaNs на линейные последовательности. Выходы областей значений измеряются с первой точки пути в последовательности. 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' для больших дорожек круга между путевыми точками и 'rh' для ветряных линий. Допустимые методы интерполяции внутри матрицы 'bilinear' для линейной интерполяции, 'bicubic' для кубической интерполяции и 'nearest' для интерполяции по ближайшему соседу. Если опущено, 'gc' и 'bilinear' приняты.

Примеры

свернуть все

Загрузка повышения растровых данных и географических камер ссылки объекта для Корейского полуострова. Задайте профиль повышения. Затем постройте график профиля вместе с данными о береговой линии и маркере города. При выборе более двух путевых точек автоматически сгенерированная рисунок отображает результат в 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')

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

Во-первых повышение загрузка растровых данных и географических камер ссылки объекта для Корейского полуострова. Создайте объект осей с соответствующими пределами и отобразите данные как поверхность. Затем в интерактивном режиме выберите путевые точки по вызову mapprofile без входных параметров. Выберите две путевые точки, одну в левом верхнем углу и одну в правом нижнем углу, щелкнув мышью. Нажмите 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)'

Получаемый профиль зависит от выбранных мест пересечения.

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

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

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

См. также

|