Геодезический калькулятор, пишем на 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  
 
Интересно знать

Венский государственный университет: факультеты, специальности и поступление

Венский государственный университет — крупнейший вуз Австрии, а Технический университет Вены является одним из главных вариантов для будущих инженеров. Венский государственный университет, известный также как Universität Wien, занимает особое место в системе европейского образования. Это один из старейших университетов Европы,...

Как выбрать тему диссертации и правильно организовать научное исследование

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

Как создать доклад с помощью нейросети: возможности современного генератора GPT-5

Еще несколько лет назад подготовка обычного учебного доклада могла занимать целый вечер. Нужно было найти информацию, разобраться в теме, составить план, написать текст, сформулировать выводы и привести документ к требованиям преподавателя. Сегодня значительную часть этой работы можно автоматизировать с помощью искусственного интеллекта. Одним...

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

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

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

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

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