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