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