Коэффициент масштабирования карты при преобразовании из Mercator в Equirectangular

Допустим, у меня есть карта в проекции Меркатора, и я знаю верхнюю и нижнюю широты:

topLatitude = 80; bottomLatitude = -55;

Я также знаю ширину и высоту карты:

ширина = 800; высота = 500;

Я хочу изменить масштаб карты до Равноугольной проекции, сохранив ту же ширину.

Как я могу рассчитать новую высоту карты?

1 ответ

Решение

Я придумал решение.

Это формула для расчета x и y проецируемой карты Меркатора:

Вот функция для y:

function degreesToRadians(degrees){
    return degrees / 180 * Math.PI;
}

function mercatorLatitudeToY(latitude){
    return Math.log(Math.tan(Math.PI / 4 + degreesToRadians(latitude) / 2));
}

Когда R=1, вы получите радианы. Поэтому я вычисляю y для верхней и нижней широт.

Затем я вычисляю те же радианы, если проекция равноугольная - мне просто нужно преобразовать верхнюю и нижнюю широту в радианы. И последнее - мне просто нужно найти соотношение сторон:

var scale =  (mercatorLatitudeToY(topLatitude) - mercatorLatitudeToY(bottomLatitude))/ (degreesToRadians(topLatitude) - degreesToRadians(bottomLatitude));

Для карты без Антарктиды, соотношение сторон составляет ~1,5

Другие вопросы по тегам