Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > Узнать расстояние между координатами на карте |
Автор: Cache 12.3.2010, 15:09 |
Здравствуйте! Делаю проект на PHP и api яндекс карт Можно ли в PHP вычислить расстояние (например в метрах) между двумя точками на карте точки для примера: 37.63 55.75 и 37.61 55.75 между ними чуть больше 1 км. |
Автор: ksnk 12.3.2010, 17:06 |
А какие проблемы? Немного тригонометрии, гугла и магии ;) Радиус земли можно поискать в Гугле, остальное - в учебнике тригонометрии, магия - для демонстрации результата... |
Автор: skyboy 12.3.2010, 17:46 |
Cache, а в АПИ нет никакого метода? можно и посчитать, но для эллипсоида это сложнее, чем для шара. кроме того, что Земля - не идеальный эллипсоид. |
Автор: solenko 12.3.2010, 17:56 |
Ну не тригонометрии, а сферический геометрии... Но гугл, естественно, http://www.google.com.ua/search?rlz=1C1GGLS_ukUA359UA359&aq=f&sourceid=chrome&ie=UTF-8&q=расстояние+между+двумя+точками+земной+поверхности |
Автор: Cache 12.3.2010, 18:30 |
skyboy, в API есть функция только для JS расстояния, между которыми нужно будет искать длину пути, у меня совсем небольшие - около 100км., что по земным меркам не особо внушительно) поэтому и сфера должна подойти сейчас попробую написать скрипт, после - выложу исходник |
Автор: Cache 12.3.2010, 18:56 | ||
мм, вот например: S = 111,2×arccos(sin φ1 × sin φ2 + cos φ1 × cos φ2 × cos (L2-L1)), где S - расстояние, км; φ1 и L1 - широта и долгота точки 1 (для северной широты и восточной долготы со знаком плюс, для южной широты и западной долготы со знаком минус), градусы; φ2 и L2 - широта и долгота точки 2, градусы; константа 111,2 - средняя длина дуги в один градус на поверхности Земли, км. http://mk.semico.ru/dr_info19.htm тогда все просто:
выдает - 2.44km но яндекс по тем же координатам выдает - 2.09 км. из-за чего такая погрешность? действительно из-за формы планеты? *UPDATE* попробовал еще 2 раза с другими координатами - погрешность стала гораздо ниже - на 25км - 200м в принципе меня такая ситуация устраивает, но если возможно что-то точнее - буду рад если поделитесь) всем спасибо! |
Автор: wOOx 12.3.2010, 19:07 |
ну я бы вообще считал для плоскости мне кажется, холмистость местности может повлиять на точность результата сильнее, чем форма планеты ![]() |
Автор: solenko 12.3.2010, 19:08 |
Погрешность вызвана тем, что в одном градусе очень разное количество километров в зависимости от широты. Сравните, сколько километов между меридианами на экваторе и на полюсе ) Добавлено через 3 минуты и 40 секунд ну, приведенный код и считает для плоскости |
Автор: ReDComraD 7.6.2010, 08:28 |
ksnk - Спасибо Тебе большое, действительно формула Твоя дает очень точный результат и не надо API гугла загружать для высчита расстояния. |