З огляду на лінію на земній поверхні, як я будувати лінію, перпендикулярну до неї?


9

З огляду на лінію на земній поверхні, як я будувати лінію, перпендикулярну до неї?

Вибачте, якщо це дуже просте запитання. Я думав, що це буде просто завдання, але це доводить контрінтуїтивність.

Я починаю з синьої лінії на малюнку нижче (див. Посилання - я ще не можу завантажити фігури). Я знайшов перпендикулярну лінію, обчисливши градієнт синьої лінії (m), потім побудувавши ще одну лінію (зелену) з градієнтом -1 / m. Коли я будую лінії в Matlab (використовуючи 'сюжет' та 'вісь рівний'), вони виглядають перпендикулярно, як і очікувалося.

http://imgur.com/7qMkx

Однак коли я експортую ці рядки в Google Планета Земля (за допомогою KML Toolbox), вони більше не виглядають перпендикулярно (див. Посилання нижче; коротша лінія - синя лінія з попереднього малюнка).

http://imgur.com/ncJQ7

Я розумію, що на вигнутих поверхнях відбуваються дивні речі, але я вважав, що лінії повинні виглядати принаймні перпендикулярно локально. Я підозрюю, що це має щось спільне з проекцією в Google Планета Земля - ​​зокрема, той факт, що комірки сітки мають приблизно однакові бічні довжини, проте поздовжній край має довжину = 1 градус, тоді як широтний край має довжину = 0,5 ступінь.

Отже, підсумовуючи:

  • чи мій спосіб пошуку перпендикулярної лінії дійсний на вигнутій поверхні? (тобто побудова лінії з градієнтом -1 / м)
  • на зображенні Google Планета Земля перпендикулярні лінії виглядають так, як очікувалося, чи щось дивно відбувається?

ОНОВЛЕННЯ:

Щоб забезпечити більше контексту: я переглядаю радіолокаційні дані, взяті з літака. Різнобарвна зона - це «качан», де були зафіксовані спостереження. Синя лінія, з якої я почав у поясненні вище, паралельна ширині: це лінія польоту літака (літак рухався приблизно в південно-західному напрямку). Радіолокатор дивиться у напрямку, ортогональному до лінії польоту, зліва. Я намагаюся провести лінію, перпендикулярну до лінії польоту; це має бути напрямок, на який дивиться радіолокатор, і слід акуратно вирізати качану. Як бачите, це не так.

введіть тут опис зображення


2
Насправді, Google зображує кут правильно, тоді як ваш Matlab сюжет не ...
whuber

Дякую за відповідь, джоубер. Чи означає це, що обчислена мною лінія не є перпендикулярною до оригіналу? Або це означає, що те, як я бачу рядки в Matlab, якимось чином неправильне? Я використовував команду "Осі рівні" в Matlab, щоб переконати себе в тому, що лінії перпендикулярні, але я думаю, що це не буде належним чином представляти кривизну землі.
Пол Кітінг

2
Ваше перше тлумачення правильне, Пол. Використання (lon, lat) так, ніби вони декартові координати, спотворюють напрямки настільки сильно, що більшість кутів помітно спотворені. Тому використання декартової формули -1 / м навіть не наблизить вас до прямого кута, за винятком пари щасливих напрямків (або в екваторі). Щоб запропонувати альтернативний метод, це допоможе дізнатись, яку саме "лінію" ви хочете (наприклад, геодезична або рембова лінія), ваше призначення в її побудові та скільки часу це потрібно. (Короткі довжини дозволяють використовувати прості наближення.)
whuber

2
До речі, ви можете багато дізнатися про ці проблеми, прочитавши деякі теми на нашому сайті про конформні прогнози .
whuber

Велике спасибі, юбе. Дуже цікаво. Я описав більше контексту в описі проблеми вище. Мені потрібна довжина порівняно коротка (ширина кача, показана вище, яка становить кілька десятих градусів), тому будь-які пропозиції щодо дійсних наближень були б дуже вдячні. Дякую також за посилання - я перевірю його.
Пол Кітінг

Відповіді:


10

Елегантний принцип забезпечує просту відповідь:

Всі точки на гладкій вигнутій поверхні плоскі в досить великому масштабі.

Це означає, що після афінної зміни координат (зазвичай це стосується просто масштабування однієї з них), ми можемо використовувати формули евклідової геометрії, такі як теорема Піфагора для обчислення відстаней та формула негативного-зворотного нахилу для знаходження перпендикулярів.

Маючи координати широти та довготи на сфері (далеко від полюсів, де довгота стає єдиною), все, що нам потрібно зробити, - це змінити масштаб схід-захід, щоб відобразити зменшувальну довжину на ступінь довготи в міру наближення до полюсів. За допомогою сферичної моделі землі це усадження задається косинусом широти. Це лише зміна співвідношення сторін сюжету, не більше того.

Це працює для регіонів, які простягаються не більше ніж на кілька градусів широти північ-південь і не підходять до жодного полюса.

Тому все, що вам потрібно зробити :

  1. Помножте всі довготи на косинус типової широти.

  2. Обчисліть перпендикулярну лінію.

  3. Скасуйте регулювання координат.

Наприклад, припустимо, що трек літака взяв його з (lon, lat) = (-78, 40) до (-79, 41). Ми можемо взяти типову широту, щоб лежати між 40 і 41, наприклад, 40,5.

Крок 1 Коригувані координати: (-78 * cos (40.5), 40) = (-59.31167, 40) і (-79 * cos (40.5), 41) = (-60.07207, 41).

Крок 2 Питання пропонує зробити це за допомогою методу негативно-зворотного нахилу. Це було б правильно, але воно вийде з ладу в деяких випадках (де ухил нескінченний). Більш загальним і потужним є використання векторної арифметики. Ось як йде розрахунок.

Вектор напрямку для шляху польоту - це переміщення від його початку до кінця,

v =  (-60.07207, 41) - (-59.31167, 40)
  =  (-0.7604, 1.0).

Поворот будь-якого вектора (x, y) під прямим кутом за годинниковою стрілкою створює (y, -x), звідки перпендикулярний напрямок є правою

w = (1.0, 0.7604).

Згідно теореми Піфагора, довжина цього вектора є квадратним коренем суми квадратів його коефіцієнтів,

|w| = sqrt(1^2 + 0.7604^2) = 1.256268

Перенесемо, скажімо, на 0,2 градуса по цьому вектору від початкової точки польоту літака. Старт знаходиться в (-59.31167, 40), а переміщення - 0,2 / | w | разів w, що закінчується в

(-59.31167, 40) + 0.2 / 1.256268 * (1.0, 0.7604) = (-59.15247  40.12106).

Крок 3 Щоб скасувати коригування, розділіть перші координати будь-яких результуючих точок на той же косинус, який використовується на кроці 1:

(-59.15247/cos(40.5), 40.12106) = (-77.79064, 40.12106)

Якщо побудувати ці точки за допомогою співвідношення сторін 1: 1, кут виявиться тупим, а не прямим кутом. Але якщо змінити співвідношення сторін на 1: cos (40,5) (приблизно 4: 3), кут виявиться правильно 90 градусів. Коли ви будуєте точки, використовуючи будь-яку відповідну проекцію, включаючи Меркатор Google, - кут також буде правильним.


2
Це фантастично, юбе. Дуже дякую. Це дуже чітке пояснення, де я помиляюся, і як я можу виправити проблему. Я в кінцевому підсумку використовував функції азимута і перерахунку Матлаба, щоб отримати перпендикулярну лінію, але добре ознайомитися з більш детальним, першоосновним поясненням, як це зробити. Дуже дякую.
Пол Кітінг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.