В Векторе Ориентации вы исследовали концепцию изменения аспекта проекции карты с точки зрения проталкивания Северного полюса в новые местоположения. Другой способ подумать об этом - переопределить систему координат, а затем вычислить проекцию нормального аспекта на основе новой системы. Например, можно переопределить сферическую систему координат так, чтобы домашний город занял источник. Если вы вычислили проекцию карты в нормальном аспекте относительно этой преобразованной системы координат, полученное отображение будет выглядеть как наклонный аспект истинной системы координат широт и долгот.
Это преобразование систем координат может быть полезно независимо от отображения карты. Если вы преобразуете систему координат так, чтобы ваш родной город был новым Северным полюсом, то преобразованные координаты всех других точек предоставят интересную информацию.
Примечание
Типы координатных преобразований, описанные здесь, подходят только для сферического случая. Попытки выполнить их на эллипсоиде дадут неправильные ответы порядка от нескольких до десятков метров.
Когда вы помещаете свой родной город на полюс, сферическое расстояние каждой точки от родного города становится 90 ° минус его преобразованная широта (также известная как колатитуда). Точка антиподы для вашего города станет Южным полюсом, на -90 °. Его расстояние от родного города 90 ° - (-90 °), или 180 °, как и ожидалось. Точки на 90 °, удаленные от вашего родного города, имеют преобразованную широту 0 ° и, таким образом, составляют преобразованный экватор. Преобразованные долготы соответствуют их соответствующим большим азимутам круга от вашего родного города.
rotatem
rotatem
функция использует вектор ориентации, чтобы преобразовать широты и долготы в новую систему координат. Вектор ориентации может быть произведен newpole
или putpole
функций, или может быть задано вручную.
Как пример преобразования системы координат, предположим, вы живете в Мидленде, штат Техас, в (32 ° N, 102 ° W). У вас есть брат в Талсе (36,2 ° N, 96 ° W) и сестра в Новом Орлеане (30 ° N, 90 ° W).
Определите три местоположения:
midl_lat = 32; midl_lon = -102; tuls_lat = 36.2; tuls_lon = -96; newo_lat = 30; newo_lon = -90;
Используйте distance
функция для определения больших круговых расстояний и азимутов Талсы и Нового Орлеана из Мидленда:
[dist2tuls az2tuls] = distance(midl_lat,midl_lon,... tuls_lat,tuls_lon) dist2tuls = 6.5032 az2tuls = 48.1386 [dist2neworl az2neworl] = distance(midl_lat,midl_lon,... newo_lat,newo_lon) dist2neworl = 10.4727 az2neworl = 97.8644
Талса находится на расстоянии около 6,5 степени, Новый Орлеан на расстоянии около 10,5 степени.
Вычислите абсолютное различие в азимуте, факт, который вы будете использовать позже.
azdif = abs(az2tuls-az2neworl) azdif = 49.7258
Сегодня вы чувствуете себя на верхней части мира, поэтому сделайте Мидленд, штат Техас, северным полюсом преобразованной системы координат. Для этого сначала определите источник, необходимую для помещения Мидленда к полюсу, используя newpole
:
origin = newpole(midl_lat,midl_lon) origin = 58 78 0
Отправным источником новой системы координат является (58 ° N, 78 ° E). Сейчас Мидленд находится на новой широте 90 °.
Определите преобразованные координаты Талсы и Нового Орлеана с помощью rotatem
команда. Поскольку его модули по умолчанию для радианов, обязательно включите degrees
ключевое слово:
[tuls_lat1,tuls_lon1] = rotatem(tuls_lat,tuls_lon,... origin,'forward','degrees') tuls_lat1 = 83.4968 tuls_lon1 = -48.1386 [newo_lat1,newo_lon1] = rotatem(newo_lat,newo_lon,... origin,'forward','degrees') newo_lat1 = 79.5273 newo_lon1 = -97.8644
Покажите, что новые колатитуды Талсы и Нового Орлеана равны их расстояниям от Мидленда, вычисленным на шаге 2 выше:
tuls_colat1 = 90-tuls_lat1 tuls_colat1 = 6.5032 newo_colat1 = 90-newo_lat1 newo_colat1 = 10.4727
Напомним, с 4 шага абсолютное различие азимутов двух городов от Мидленда составило 49,7258 °. Проверьте, что это равняется различию в их новых долготах:
tuls_lon1-newo_lon1 ans = 49.7258
Можно отметить небольшие числовые различия в результатах (порядка 10-6), из-за округлой ошибки и тригонометрических функций.
Для получения дополнительной информации см. страницы с описанием для rotatem
, newpole
, putpole
, neworig
, и org2pol
.
В этом примере показано, как преобразовать регулярную сетку данных в новую с перестроенными данными, чтобы соответствовать новой системе координат с помощью neworig
функция. Можно преобразовать системы координат сетки данных, а также векторные данные. Когда регулярные сетки данных манипулируются таким образом, вычисления расстояния и азимута с переменной map становятся операциями строка и столбец.
Загрузка повышения растровых данных и географических камер ссылки объекта. Преобразуйте набор данных в новую систему координат, в которой точка на Шри-Ланке является северным полюсом. Переориентируйте сетку данных при помощи neworig
функция. Обратите внимание, что результат, [Z,lat,lon]
, является геолокированной сеткой данных, а не регулярной сеткой данных, такой как исходные данные.
load topo60c
origin = newpole(7,80);
[Z,lat,lon] = neworig(topo60c,topo60cR,origin);
Отобразите новую карту в нормальном аспекте, как показывает ее вектор ориентации. Обратите внимание, что каждая камера в первой строке новой сетки находится на расстоянии от 0 до 1 степеней от точки нового источника. Каждая камера во второй строке находится на расстоянии от 1 до 2 степеней и так далее. В сложение каждая камера в конкретном столбце имеет такой же большой азимут окружности от нового источника.
axesm miller
lat = linspace(-90,90,90);
lon = linspace(-180,180,180);
surfm(lat,lon,Z);
demcmap(topo60c)
mstruct = getm(gca); mstruct.origin
ans = 1×3
0 0 0