Мне нужна помощь. У меня есть следующие 2 точки на карте: точка A lat1 / long1 и точка B lat2 / long2 на карте Google. У меня есть расстояние, прибытие, время, радиан и скорость.
С этими данными, как я могу получить расчетную долготу широты (формат карты Google) до следующей точки в 10 минут, 20, 30 и 40 минут?, Имея начальную и конечную точки.
Точка А
LAT1 = 37,78472
lon1 = -122,39913
Точка B
LAT2 = 37,78240
lon2 = -121,23208
bearingradians = 270
расстояние = 102 км
время прибытия = 50 минут
скорость = 122 км / ч
пример:
http://hmarina.sytes.net/mapagoogle.jpg
Что мне нужно, чтобы вы вычислили баллы nexts, я собираюсь использовать PHP или с чего мне начать
Спасибо
Есть несколько способов рассчитать это. Некоторые из них довольно сложные.
Вы могли бы использовать Формула Винсенти, который часто используется для расчета пеленга и расстояния.
Формула нуждается в Long / Lat начальной точки, подшипника и расстояния.
Я сомневаюсь, что вы хотите переопределить этот алгоритм, поэтому здесь вы идете: Реализация формулы Винсенти в PHP
Другое решение может заключаться в использовании векторов для расчета точек назначения по большому кругу с учетом расстояния и пеленга от начальной точки. Этот подход может быть немного проще, чем работать со сферической тригонометрией. http://www.movable-type.co.uk/scripts/latlong-vectors.html а также https://stackoverflow.com/a/1739066/1163786
Другой способ — рассчитать промежуточные точки на большом круге.
http://williams.best.vwh.net/avform.htm#Intermediate
Давайте использовать Винсенти здесь и пересчитаем вашу конечную точку, учитывая начальную точку, направление и расстояние:
lat1=37.78472
; lon1=-122.39913
;approx. 89
102 km
Результат: Широта: 37°47′42″N
37.79506902
Долгота: 121°14′28″W
-121.24119021
Это довольно близко к вашей точке B.
Теперь вы хотите определить будущую позицию (lang / lat), рассчитав расстояние, которое вы пройдете, исходя из вашей текущей скорости и вашего известного временного интервала.
Другими словами, ваша следующая точка находится в 10 минутах от начальной точки с учетом скорости 122 км / ч и 89 подшипников.
Рассчитать новое расстояние: 122 km/h = 2033.33 m/min
итак, через 10 минут: 20333.33 m = 20,333 km approx
,
Вы новые данные для формулы:
lat1=37.78472
; lon1=-122.39913
;approx. 89
20,333 km
И повторно запустите Vincenty с этими значениями, чтобы получить Lat / Long …
Это может быть полезно:
У тебя есть: speed = 122Km/h
=> Вы можете рассчитать 10 минут ходьбы (n _km
)
Вы можете рассчитать расстояние с расстоянием 2 пункта
sqrt((lat1 - lat2)^2 + (lng1-lng2)^2);
у вас есть расстояние и lat1
как рассчитать lat2
: