Преобразование широты и долготы в координаты XY - PullRequest
1 голос
/ 11 марта 2020

Я делаю Javascript приложение, которое требует перемещения определенного элемента на карте реального мира в кадрах.

Для каждого кадра у меня есть следующие позиции по широте и долготе для элемента, например, для кадра 0:
- Широта: 49.011213
- Долгота: 8.422885

Для кадр 1:
- широта: 49.01121
- долгота: 8.422887

Кадр (кадр 0) должен быть точкой (0,0), и я хочу, чтобы следующие из них были преобразованы в координаты XY как хорошо.

В основном мне нужен скрипт Javascript, который получает широту и долготу кадра и возвращает позицию (x, y) для этого кадра (по отношению к кадру 0 с позицией (0,0)) .

Я пробовал следующее, но оно не работает:

function convertSphericalToCartesian(latitude, longitude)
{
    // Convert from Degrees to Radians
    let latRad = latitude * (Math.PI)/180; 
    let lonRad = longitude * (Math.PI)/180;

    let earthRadius = 6367; // Radius in km
    let posX = earthRadius * Math.cos(latRad) * Math.cos(lonRad);
    let posY = earthRadius * Math.cos(latRad) * Math.sin(lonRad);
    return {x: posX, y: posY};
}

Знаете ли вы лучшую формулу для этого? Большое спасибо.

1 Ответ

1 голос
/ 11 марта 2020

Любое преобразование, которое вы делаете, приводит к ошибке, так как вы пытаетесь отобразить поверхность сферы на прямоугольные angular координаты. Вы не упомянули, что вы делаете с этой информацией - упоминание «фреймов» заставляет меня думать об анимации или игре, включающей перемещение объектов на карте. Если это так, то ваши расчеты будут тесно связаны с картой, которую вы используете.

В общем, вопрос таков: насколько далеко друг от друга могут быть ваши координаты?

Для небольших расстояний, вплоть до нескольких миль или километров, вы, вероятно, просто прекрасно рассматриваете широту / долготу как координаты x / y. Например, координаты, которые вы дали в своем примере, буквально находятся на расстоянии нескольких футов - не беспокойтесь о сложных вычислениях. И снова, как вы рисуете что-то на данной карте в этих координатах, очень сильно зависит от карты, которую вы используете.

Для больших расстояний кривизна Земли становится важной и проекция карты, над которой вы работаете с будет иметь большое значение в том, как рассчитываются эти координаты. Например, этот вопрос обсуждает вычисления для проекции Меркатора.

...