В окне Вектор ориентации (Orientation Vector) была рассмотрена концепция изменения аспекта проекции карты с точки зрения перемещения Северного полюса в новые места. Другой способ подумать об этом - переопределить систему координат, а затем вычислить нормальную проекцию на основе новой системы. Например, можно переопределить сферическую систему координат так, чтобы исходный город занимал начало координат. Если вычислить проекцию карты в нормальном аспекте относительно этой преобразованной системы координат, то результирующее отображение будет выглядеть как наклонный аспект истинной системы координат широт и долгот.
Это преобразование систем координат может быть полезным независимо от отображения карты. Если преобразовать систему координат так, чтобы ваш родной город был новым Северным полюсом, то преобразованные координаты всех остальных точек дадут интересную информацию.
Примечание
Описанные здесь типы преобразований координат подходят только для сферического случая. Попытки выполнить их на эллипсоиде дадут неверные ответы порядка от нескольких до десятков метров.
Когда вы помещаете свой родной город на полюс, сферическое расстояние каждой точки от вашего родного города становится 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 функция. Можно преобразовать системы координат сеток данных, а также векторные данные. Когда обычные сетки данных манипулируются таким образом, вычисления расстояния и азимута с помощью переменной карты становятся операциями строк и столбцов.
Загрузите растровые данные отметки и объект ссылки на географические ячейки. Преобразуйте набор данных в новую систему координат, в которой точка в Шри-Ланке является северным полюсом. Переориентировать сетку данных с помощью 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