Расчет расстояния по GPS

Работая с программами прокладки маршрутов, использующих координаты GPS возникает необходимость получить расстояние между точками (например, Антор динамически рассчитывает и не хранит расстояние от последней точки до дома при поездке назад, а в отчетах оно нужно).

Для этих целей была подготовлена программа расчета расстояния между двумя координатами GPS.

Порядок действий:

1. Указываем координаты точек (первой и второй).

2. Жмем кнопку «Команда1»

17 Comments

  1. Maxis

    Как обработка никуда не годится из-за плохого интерфейса: правильно «расСтояние», вместо «Команда1» можно было бы написать «Рассчитать», да и для координат можно было написать русские «широта» и «долгота».

    Reply
  2. zekrus

    (1) Maxis, Интересный случай коллега «ДыНя»….! Попробуйте проверить ваше замечание в ворде. На счет работы с обработкой большого количества желающих — сомневаюсь (делал на коленке и слава богу, что на это хватило времени).

    Reply
  3. Kabz

    а сделать тоже самое в запросе вот было бы супер

    Reply
  4. zekrus

    (3) Kabz, Не вопрос, кто оплатит время?

    Reply
  5. cleaner_it

    (2) Действительно. Это всего лишь выражение отношения к этим людям

    Reply
  6. cleaner_it

    (0) Констант слишком много. В этом плане алгоритм (первая ссылка в гугле) вызывает намного большее доверие: http://miniq.ru/article/gps-2-distance-js/

    Reply
  7. cleaner_it

    Блин. Хотел изображение приложить, а сменил аватарку:))

    Reply
  8. zekrus

    (5) cleaner_it, Дикий согласен (это взаимно поверьте).

    Reply
  9. zekrus

    (6) cleaner_it, Попробуйте этим алгоритмом воспользоваться в 1с (может у вас хоть выйдет).

    Reply
  10. zekrus

    (8) (7) cleaner_it, А для чего изображение?

    Reply
  11. Angeros

    Тянет на статью, но не разработку. Лучше всего опишите принцип в виде статьи, а обработку мы и сами напишем…

    Reply
  12. zekrus

    (11) Angeros, Я как то сам решу куда и что писать в код или в статью. Спасибо.

    Reply
  13. Bond

    zekrus, скажите какая точность на маленьких расстояниях? и может знаете как включить в расчет высоту?

    Reply
  14. zekrus

    (13) Bond, Я взял формулу расчета по кривизне радиус задан в формуле, думаю что его и надо менять на вашу высоту. Точность аналогична картам яндекса.

    Reply
  15. Bond

    (14)не скажете, что означают значения 3958.75 и 1609.344? 57.2958 — это я так понял перевод в радианы?

    Reply
  16. zekrus

    (15) Bond, 3958.75 радиус земли. 1609.344 это перевод миль в метры.

    Reply
  17. rom-x

    Фактически вся обработка сводится к одной строчке:

    ПереводГрадусовВРадианы = 0.0174532925;
    РасчитанноеРасстояние = 6378137 * acos( cos( Объект.ШиротаОт * ПереводГрадусовВРадианы) * cos( Объект.ШиротаДо * ПереводГрадусовВРадианы ) * cos( Объект.ДолготаОт * ПереводГрадусовВРадианы — Объект.ДолготаДо * ПереводГрадусовВРадианы) + sin( Объект.ШиротаОт * ПереводГрадусовВРадианы ) * sin( Объект.ШиротаДо * ПереводГрадусовВРадианы ) ) ;
    
    Если Цел(РасчитанноеРасстояние/1000) <> 0  Тогда
    Объект.Расстояние = Формат(РасчитанноеРасстояние/1000, «ЧДЦ=2″) + » км.»;
    Иначе
    Объект.Расстояние = Формат(РасчитанноеРасстояние, «ЧДЦ=2″) + » м.»;
    КонецЕсли;
    
    

    Показать

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *