Геодезический калькулятор, пишем на Python


 

Введение и цели

Коротко: в этой статье мы шаг за шагом создадим полноценный геодезический калькулятор на Python без внешних библиотек. Он умеет считать расстояния и азимуты по эллипсоиду WGS84 (алгоритм Винценти), строить прямую геодезическую задачу, конвертировать координаты между широтой/долготой/высотой (LLA) и правой прямоугольной системой (ECEF), переходить к локальным координатам ENU, вычислять площадь сферического полигона, а также выполнять полезные преобразования формата координат (DMS↔DD). Мы разберём математику, архитектуру кода, тесты и типичные ловушки практики.

Требования: Python 3.8+, любые ОС. Сам калькулятор не требует внешних модулей. Все исходники и иллюстрации можно скачать по ссылкам ниже.


Базовые понятия геодезии

Почему эллипсоид? Земля не идеальный шар. Для точного позиционирования используют референсный эллипсоид вращения WGS84. Он задаётся большой полуосью a, сжатием f и малой полуосью b=a·(1−f), а также эксцентриситетом e²=f·(2−f).

Геодезическая линия — кратчайшая на поверхности эллипсоида. Для точных расчётов применим метод Винценти.

Системы координат: LLA (φ,λ,h), ECEF (X,Y,Z) — геоцентрическая, и локальная ENU (East, North, Up).

Параметр Обозначение Значение Ед.
Большая полуось a 6378137.0 м
Сжатие f 1/298.257223563
Малая полуось b = a·(1−f) 6356752.314245 м
Первый эксцентриситет² e² = f·(2−f) 0.006694379990

Геодезическая на эллипсоиде: Винценти

Обратная задача Винценти:

  1. U₁=atan((1−f)·tanφ₁), U₂=atan((1−f)·tanφ₂).
  2. Итерируем λ до сходимости.
  3. Вычисляем σ, α, cos2σₘ; корректируем через u², A(u²), B(u²).
  4. s = b·A·(σ − Δσ), азимуты — из производных формул.

Форматы координат DMS↔DD

DMS↔DD. Реализуем универсальный парсер и форматер с поддержкой °′″, разделителей и N/S/E/W.


Преобразования LLA↔ECEF

LLA↔ECEF. X=(N+h)cosφcosλ, Y=(N+h)cosφsinλ, Z=(N(1−e²)+h)sinφ; обратное — итерация по φ до стабилизации.


Локальная система ENU

ECEF→ENU. Переносим начало в опорную точку и поворачиваем оси по φ₀,λ₀. Получаем (E,N,U) — удобно в инженерной практике.


Площадь полигона на сфере

Площадь на сфере. Суммируем "углы поворота" по рёбрам через atan2. Подходит для оценок, когда эллипсоидная точность не требуется.


Иллюстрации

Сечение эллипсоида WGS84
Рис. 1. Эллипсоид.
Азимуты
Рис. 2. Азимуты.
ECEF/ENU
Рис. 3. Системы координат.

Примеры и сверка результатов

From To Lat,Lon (deg) Lat,Lon (deg) Distance (m) Init Az (°) Final Az (°)
Athens Moscow 37.9838, 23.7275 55.7558, 37.6173 2,288,167.3 26.829 204.648
Athens New York 37.9838, 23.7275 40.7128, -74.0060 7,927,170.8 300.036 100.803
Tokyo Sydney 35.6895, 139.6917 -33.8688, 151.2093 7,816,588.0 157.653 20.913
Quito New York -0.1807, -78.4678 40.7128, -74.0060 4,523,557.2 20.612 197.897
Cape Town Rio de Janeiro -33.9249, 18.4241 -22.9068, -43.1729 6,095,321.9 297.011 92.105
Moscow Tokyo 55.7558, 37.6173 35.6895, 139.6917 7,481,335.6 69.771 276.848
Sydney Rio de Janeiro -33.8688, 151.2093 -22.9068, -43.1729 13,330,649.9 142.472 312.370

Командная строка и сценарии использования

CLI. Подкоманды: distance, direct, dms2dd, dd2dms, lla2ecef, ecef2lla, enu, area. Примеры использования приведены в тексте.


Исходники

 

Тестирование и валидация

Тесты. Проверяем совпадающие точки, почти антиподы, полярные области, взаимные преобразования LLA↔ECEF, ENU, DMS↔DD, площади.


Производительность и точность

Производительность. Реализация без зависимостей быстра для большинства задач; для предельной точности внедряйте Карни.


Расширения и дорожная карта

Расширения. UTM/Гаусс–Крюгер, эллипсоидные площади, датумы и 7-параметрические преобразования, GeoJSON/GPX, батч-режим.


FAQ

FAQ. Почему не сходится Винценти? — антиподы; у нас есть fallback. Какова точность сферической площади? — зависит от размера контура. Почему ENU «крутятся»? — это локальная касательная плоскость.


Выводы

Итог. У нас готов рабочий геодезический калькулятор на чистом Python, пригодный для практики и расширений.


Дополнительные заметки

Численная устойчивость, нормализация углов, контроль сходимости, логирование тяжёлых случаев, профилирование критичных участков и тестирование на наборах «плохих» точек — ключ к надёжному коду.

Для реального времени избегайте лишних аллокаций, кэшируйте константы, прогнозируйте ветвления. Для пакетной обработки применяйте векторизацию и параллелизм, но не забывайте о контроле точности.

 

В калькулятор добавлено:

  • UTM (WGS84) прямое/обратное преобразование
  • Гаусса–Крюгера (3° или 6° зоны; классический «немецкий» режим с префиксом зоны в восточном смещении)
  • Пакетные преобразования CSV
  • Трансформации GeoJSON (Point/LineString/Polygon/Multi*)
  • Импорт/экспорт GPX (вейпойнты)

 

Как работать со скриптом (кликнуть)


Размещено: 28.10.2025

geodesic_calculator3.7z (6.96 Kb), ishodny_cod.txt (27.35 Kb)


Оценка: 3.5, Голосов: 2  

Голосование
Добавить ли гостевую книгу?


 
Календарь
<< Июль 2026 >>
П В С Ч П С В
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
 
Интересно знать

Откройте тайны Вселенной: Путеводитель по телескопам Celestron

Звездное небо во все времена манило человечество своей загадочностью и бесконечной красотой. Рассматривая мерцающие точки в ночной тишине, каждый из нас хотя бы раз мечтал приблизиться к ним, заглянуть за завесу космической тайны и своими глазами увидеть кратеры на Луне, кольца Сатурна или далекие туманности. Сегодня эта мечта легко осуществима...

Настольный набор для руководителя

В эпоху цифровых технологий, когда большинство документов перекочевало в облачные хранилища, а встречи проводятся через Zoom, может показаться, что классический настольный набор для руководителя ушел в прошлое. Однако это не так. Спрос на эти изделия не только не падает, но и растет. Почему? Ответ прост: настольный набор для руководителя...

Игрушка Собачка Ловелас

В мире мягких игрушек редко появляются персонажи, которые одинаково покоряют и детей, и взрослых. Один из таких неожиданных хитов — игрушка Собачка Ловелас. Этот обаятельный музыкант в народном костюме с гармошкой в лапах способен за считанные секунды создать праздничное настроение и вызвать искренний смех у кого угодно. Кто такой Ловелас?...

Готовое КТП по ОБЗР: решение для учителя

Самая неожиданная проблема ОБЗР оказалась вовсе не в сложных темах и не в новых требованиях. Учителя столкнулись с другим: предмет есть, программа есть, а чёткого понимания, как провести весь учебный год — нет. Возникает ощущение, будто курс нужно собирать по частям. Но действительно ли это так? На практике выясняется: всё зависит от...

Психология мотивации: почему ученики теряют интерес к учебе и как его вернуть

Аннотация: Статья посвящена исследованию факторов, влияющих на потерю мотивации у школьников и студентов, а также методам, которые могут быть использованы для восстановления интереса к учебному процессу. Рассматриваются психологические аспекты мотивации, включая внешние и внутренние факторы, а также роль педагогов в поддержании активности...

 
Посещение сайта