А я не думаю, что кто то имеет намерение доводить это до ума. Наоборот. Пример с приближёнными координатами явно указывает, что имеется намерение получать их извне, а в gama только "доводить". Вопрос только - откуда "извне"?
Здесь тема про опенсорсную программу Gama и обсуждаются ее ошибки, недостатки и связь с другими опенсорсными программами. С кредо все так, но по своей идеологии она полная противоположность: ключи HASP, варезные версии и так далее, и самое неприятное, что их gds файлы даже прочитать нельзя. Возьмите например Mapinfo, Arcgis или даже AutoCAD: дорогой профессиональный софт, но открытые обменные форматы
https://geodesist.ru/threads/sko-pri-linejno-uglovoj-zasechki.86475/page-18#post-993634 - наконец то удачный пример 3D-уравнивания с помощью GNU Gama на данном форуме. ПРЕДУПРЕЖДЕНИЕ: Для удачного 3D-уравнивания высоты ОБЯЗАТЕЛЬНЫ!
Когда и эта дискуссия закончится и вы перейдёте к GNU Gama, а не к общегеодезическим вопросам, тогда буду переносить. ТехТоп, здесь: https://www.google.com/search?q=GNU...69i61j69i60.3843j0j7&sourceid=chrome&ie=UTF-8 есть ответы на многие Ваши вопросы.
Благодаря субботе состряпал XML пример для gama-g3 (по моему разумению его XML схемы). Так как adj="" в грамматике g3 нет, пришлось приближенные геоцентрические координаты взять из ADJUST и поместить в <xyz>. Пока выявил две ошибки в gama-g3: не учитывается <geoid> и нельзя переставлять местами XML элементы в измерениях <angle> <from>POGI</from> <left>BUGRY</left> ... работает <angle> <left>BUGRY</left> <from>POGI</from> ... выдает ошибку XML парсера Надо изучать дальше.
У меня выдаёт ошибку XML-парсера: Код: gnu-gama-qt-1.02_2.09>gama-g3 sablino1910-g3.txt sablino1910-g3.log XML parser error on line 82 of input data (error code -1) ### INTERNAL ERROR IN int DataParser::g3_obs(const char *name) error on reading XML input data Для форматирования XML пользуй https://sourceforge.net/projects/xmlstar/ : Код: xml fo -R sablino1910-g3.txt > sablino1910-g3.fmt.txt
Проблема не в форматировании XML, а в коде самого парсера, заодно еще и в переходе от гонов к радианам. С одной стороны классы, inheritance и тралала, а с другой постоянные магические внутренние пересчеты единиц измерения.
Так может на github.com тебе стоит выложить origin+patch=current. А то замучаешься "огрызками" кидаться. Ещё и запутаешься рано или поздно. PS: Хмм. По патчу: казалось бы мелочи, но как то создаётся ощущение шибкой неряшливости исходника.
Я результатами пока недоволен, исправлены только грубые ошибки, и то не все, и не факт, что правильно.
Любой, кто перековыривал чужой код, расскажет, что через какое то время сам код начинает тебя вести. Так что далеко не уйдёшь. Всё-равно xmlstarlet пользуй. Самому понравится.
Нашел еще одну ошибку в азимутах gama-g3 (в одной функции используются и радианы и гоны одновременно!), решение стало значительно лучше. Остается вопрос с точностью задания приближенных координат: условия отбрасывания измерений очень жесткие и параметрами ковариационной матрицы <xyz> их не изменить. Еще обратил внимание что <distance> это длина 3D хорды и в gama-g3 и в ADJUST, так что классические длины базисов редуцированные на референц-эллиипсоид надо предварительно (пере)редуцировать на хорду, программы этого сами не умеют.
Что значит не умеют? Ты же всё равно код перелопачиваешь. Добавь метод или отдельную функцию и замкни на неё. Или не стоит? Что проще закладывать то в задачу?
А с "хордой" вроде немного "проблем" то? Учитывая, что gama-g3 давно никто не занимается (твой патч без рихтовки сел на 1.15), можешь спокойно лабать, что вздумается. Компонента не закончена, доки нет. По сути брошена. Одной переменной в классе больше, одной меньше, никто не заметит. И главное - доки нет. --- Сообщения объединены, 16 фев 2021, Оригинальное время сообщения: 16 фев 2021 --- По поводу 1.15 можешь сам убедиться: https://github.com/Geo-Linux-Calculations/gnu-gama-g3
Выпущен специальный релиз GeoEasy, как ГУИ-конвертер файлов приборов в формат GNU Gama: https://geodesist.ru/threads/geoeasy-3-0-3.70513/#post-994677
Выкинул для отладки все горизонтальные углы, осталась только длина хорды, ее азимут, координаты исходной точки и примерные координаты второй точки (прямая геодезическая задача). Результат меня не устраивает, пытаюсь понять логику автора gama-g3, ведь в такой постановке прямая геодезическая задача решается последовательными приближениями методом Ньютона.
Пользуй макросы: Код: #define NDEBUG 1 ... #if defined(NDEBUG) std::cout << "Debug Info" << std::endl; #endif для дампа всех значений в консоль. Потом легко отключается или вырезается.
При решении прямой геодезической задачи для 3 неизвестных координат второй точки есть 3 уравнения: 1. азимутальное (линейное, как и на плоскости) 2. расстояние между точками (второго порядка, поэтому и нужно начальное приближение, традиционно задача решается с использованием производной от квадратного корня) 3. условие известной геодезической высоты <h> второй точки (constrained <h>=<height>+<geoid>) На мой взгляд именно уравнение 3. в gama-g3 в данный момент отсутствует, в ADJUST оно конечно есть и в программе и в документе ATBD.
Ребята, расскажите пожалуйста доходчево, как работать с консольной версией программы gama? Вот есть у меня, к примеру, файл HansenX.gkf - как его обработать и получить в этой же папке другой файл с результатами уравнивания?