Подтвердить что ты не робот

Как преобразовать расстояние от градусов к метрам?

Я использую OpenLayers с обычной картой меркатора, и я пытаюсь выбрать ограничивающий прямоугольник, найдя сетку точек в latlong. Bbox выражается в latlon, например.

48.1388,-15.3616,55.2057,-3.9359

Я могу определить расстояние в градусах (например, x: 2.5, y: 2.4) и выработать точки оттуда. Но я хотел бы выразить это расстояние в метрах (например, 50000), чтобы связать его с мышлением пользователя (люди понимают счетчики, а не градусы). Как я могу преобразовать это расстояние? Я знаю, как перепрограммировать точку, но не расстояние.

Спасибо за любые подсказки! Mulone

4b9b3361

Ответ 1

Используйте формулу haversine formula, чтобы получить расстояние между двумя точками lat/long. Это предполагает, что земля является сферой (которая в большинстве случаев "достаточно хороша" ).

Реализация Javascript (бесстыдно украденная из здесь) выглядит следующим образом:

var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad(); 
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) * 
        Math.sin(dLon/2) * Math.sin(dLon/2); 
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
var d = R * c;

Ответ 2

Одна минута широты с севера на юг = 1 Морская миля = 6075 футов Таким образом, один градус = 60 минут = 60 * 6075 футов В метре есть 3,28 фута, поэтому Одна градус = 60 * 6075/3,28 метра = 111 128 м.

В качестве альтернативы, одна минута Широта = 1 852 Метра Таким образом, один градус = 60 * 1852 метра = 111 120 м.

Я не уверен, что более точно...

Для одной степени долготы сделайте то же самое, но умножите на Косинус (Широта), так как линии долготы сближаются, когда вы двигаетесь на север.

Ответ 3

Трансформация между градусами и метрами изменяется по поверхности Земли.

Предполагая сферическую Землю, градусы широты = расстояние * 360/(2 * PI * 6400000)

Обратите внимание, что долгота будет меняться в зависимости от широты:

Степени долготы = расстояние * 360 */(2 * PI * cos (широта))

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