Skip to content

Библиотека геодезических функций

License

Notifications You must be signed in to change notification settings

fetisov/geodesy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

geodesy - Библиотека геодезических функций

Назначение библиотеки

Библиотека позволяет осуществить преобразования между

  • Геодезическими координатами,
  • Геоцентрическими координатами,
  • Топоцентрическими координатами,
  • Координатами в проекции Гаусса-Крюгера.

Понятия геодезической и геоцентрической систем координат определяются в [1, 2]. Под топоцентрической системой понимается прямоугольная система координат с началом отсчёта в точке на местности [1]. Бибилиотекой используются топоцентрические координаты E, N, U, отложенные по осям с направлением на восток, на север и по нормали к поверхности земного эллипсоида, соответственно [3]. Параметры проекции Гаусса-Крюгера, метод прямого и обратного проектирования точки с геодезическими координатами на эллипсоиде СК-42, а также принятые на территории РФ правила разделения проекции на зоны приводятся в [1-3].

Состав библиотеки

Библиотека включает один транслируемый файл geodesy.c, содержащий функции преобразования координат, и заголовочный файл к нему geodesy.h, написанные в стандарте C99 языка Си.

Файл testbench.c содержит код для проверки точности и производительности реализованных функций преобразования координат и не предназначен для включения в компилируемый проект. Сборка и запуск программы проверки в ОС linux осуществляется скриптом testbench.sh.

Текущая версия библиотеки реализует следующие функции преобразования:

СК1 СК2 Имя функции Пояснение
Геодезическая Геоцентрическая geodetic2ecef Перевод геодезических коодринат (ШДВ) в геоцентрические (XYZ)
Геодезическая Топоцентрическая geodetic2enu Перевод геодезических координат (ШДВ) в топоцентрические (ENU)
Геодезическая Пр. Гаусса-Крюгера geodetic2gk Перевод из геодезической СК в проекцию Гаусса-Крюгера
Геоцентрическая Геодезическая ecef2geodetic Перевод геоцентрических коодринат (XYZ) в геодезические (ШДВ)
Геоцентрическая Геоцентрическая ecef2ecef Смена эллипсоида в геоцентрической системе координат
Геоцентрическая Топоцентрическая ecef2enu Перевод геоцентрических коодринат (XYZ) в топоцентрические (ENU)
Топоцентрическая Геоцентрическая enu2ecef Перевод топоцентрических координат (ENU) в геоцентрические (XYZ)
Топоцентрическая Геодезическая enu2geodetic Перевод топоцентрических (ENU) координат в геодезические (ШДВ)
Пр. Гаусса-Крюгера Геодезическая gk2geodetic Перевод из проекции Гаусса-Крюгера в геодезическую СК

Функции geodetic2ecef, ecef2geodetic, ecef2enu, enu2ecef, geodetic2enu, enu2geodetic принимают на вход параметры земного эллипсоида. Известные параметры земных эллипсоидов СК-42, WGS-84, ПЗ-90 и ПЗ-90.11 хранят определённые модулем структуры sk42, wgs84, pz90 и pz9011, соответственно.

Функция ecef2ecef реализует преобразование геоцентрических координат между разными эллипсоидами. Она принимает на вход одну из предопределённых структур: wgs84_to_pz9011, pz9011_to_wgs84, pz9011_to_pz90, pz90_to_pz9011, sk42_to_pz9011 и pz9011_to_sk42.

Контроль точности

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

Тестируем ecef2geodetic, эллипсоид WGS-84...
Максимальная ошибка Ш: 0.000000000049 градусов [OK]
Максимальная ошибка Д: 0.000000000050 градусов [OK]
Максимальная ошибка В: 0.000000001863 метров   [OK]
Тестируем geodetic2ecef, эллипсоид WGS-84...
Максимальная ошибка X: 0.000006800517 метров   [OK]
Максимальная ошибка Y: 0.000006216578 метров   [OK]
Максимальная ошибка Z: 0.000006238814 метров   [OK]
Тестируем ecef2enu, эллипсоид WGS-84...  
Максимальная ошибка E: 0.000000000990 метров   [OK]
Максимальная ошибка N: 0.000000002794 метров   [OK]
Максимальная ошибка U: 0.000000003725 метров   [OK]
Тестируем enu2ecef, эллипсоид WGS-84...
Максимальная ошибка X: 0.000000003725 метров   [OK]
Максимальная ошибка Y: 0.000000002794 метров   [OK]
Максимальная ошибка Z: 0.000000003260 метров   [OK]
Тестируем geodetic2enu, эллипсоид WGS-84...
Максимальная ошибка E: 0.000005596317 метров   [OK]
Максимальная ошибка N: 0.000008897390 метров   [OK]
Максимальная ошибка U: 0.000006267801 метров   [OK]
Тестируем enu2geodetic, эллипсоид WGS-84...
Максимальная ошибка Ш: 0.000000000049 градусов [OK]
Максимальная ошибка Д: 0.000000000050 градусов [OK]
Максимальная ошибка В: 0.000000006519 метров   [OK]
Тестируем geodetic2gk...
Максимальная ошибка X: 0.000280709006 метров   [OK]
Максимальная ошибка Y: 0.000933352858 метров   [OK]
Тестируем gk2geodetic...
Максимальная ошибка Ш: 0.000000004100 градусов [OK]
Максимальная ошибка Д: 0.000000009586 градусов [OK]
Тестируем ecef2ecef (точка 1 из 1)...
Ошибка wgs84->pz9011:  0.000504408386 метров   [OK]
Ошибка pz9011->wgs84:  0.000504404228 метров   [OK]
Ошибка pz9011->pz90:   0.000694675020 метров   [OK]
Ошибка pz90->pz9011:   0.000695193184 метров   [OK]
Ошибка pz9011->sk42:   0.001096022475 метров   [OK]
Ошибка sk42->pz9011:   0.000917185626 метров   [OK]

При тестировании используются результаты геодезических вычислений в среде matlab, программе PHOTOMOD GeoCalculator. Более подробная информация о методике тестирования приводится в виде комментариев в файле testbench.c.

В заключение

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

  • Ограничение кода стандартом языка Си не выше С99.
  • Соблюдение принятых программных сокращений (enu, ecef, gk и др.).
  • Заместо объявления структурных типов приветствуется передача данных параметрами функций (прочее может вводиться в обёртках).
  • Циклы в реализации численных методов должны иметь ограничение на число итераций.
  • Точность вычислений по-возможности должна проверяться в testbench.c.

Литература

  1. ГОСТ 22268-76. Геодезия. Термины и определения.
  2. ГОСТ 32453-2017. Глобальная навигационная спутниковая система. Системы координат.
  3. Крылов В. И. Координатно-временные преобразования в геодезии: учебное пособие –М.: Изд-во МИИГАиК, 2014. –90 с.

About

Библиотека геодезических функций

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published