powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Картография и навигация [закрыт для гостей] / Прямая и обратная геодезические задачи на эллипсоиде (с#)
9 сообщений из 9, страница 1 из 1
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140336
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программировал по Б.Б.Серапинасу ГЕОДЕЗИЧЕСКИЕ ОСНОВЫ КАРТ Геодезические координаты Лекция 4
и Ю.Н.Гавриленко Основы сфероидической геодезии.
Обратная задача -- удалось освоить версию рассчитанную на до 30 километров.
Шо оно насчитает при пересечение экватора или гринвичского меридиана, или 180 меридиана -- не проверял. И так все надоело.
На 25 - 30 километрах и азимуте 45 есть нарушение по обещаемой точности -- ошибка около 0.04 секунды.
geoTask_.zip
...
Рейтинг: 0 / 0
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140337
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исходники библиотеки обработки аргументов командной строки лежат тут: https://resql.ru/forum/topic.php?fid=71&tid=2187212

compileA.exe.cmd -- это компилируется сборка.
test.a.exe.cmd -- это примеры выполнения приложения.
tst -- каталог с тестами, которые выполнял.
docs -- Серапинас и Гавриленко.
точки которые были использованы для тестирования в разных формах: градусы минуты секунды, радианы и просто градусы.
05°09'23.8326" # 0.09 -> 5.156620156177 05°40'20.2158" # 0.099 -> 5.672282171795 05°43'46.4806" # 0.1 -> 5.729577951308 05°47'12.7454" # 0.101 -> 5.786873730821 06°18'09.1287" # 0.11 -> 6.302535746439
Получения прямого и обратного азимутов у этих научных деятелей мне было не понятно от слова вообще.
Допиливал методом научного втыка
...
Рейтинг: 0 / 0
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140338
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот это интуитивно очевидно и всем понятное указание заняло у меня две недели жизни.
Когда отнимать, когда прибавлять и шо интересно куда?
А у меня получилось, что
иногда надо отнимать-прибавлять от прямого азимута, а не от обратного (а2)
Код: C#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
         else if ( Math.Sign(P) <  0.0  && Math.Sign(Q) < 0.0) {  //south west
           if (debug>1)
               Console.Error.WriteLine("\nfinal::invGeoTR P/Q: {0}/{1}"
                             , Math.Sign(P), Math.Sign(Q));

           A1 = Math.Atan(P/Q) - a/2.0 - Math.PI;  /// <<<<<<<<<<<<<<<<<<<                !!!!
           A2 = Math.Atan(P/Q) + a/2.0 ;
         }
         else if ( Math.Sign(P) >  0.0  && Math.Sign(Q) < 0.0) {  // south ost
           if (debug>1)
               Console.Error.WriteLine("\nfinal::invGeoTR P/Q: {0}/{1}"
                             , Math.Sign(P), Math.Sign(Q));

           A1 = Math.Atan(P/Q) - a/2.0  +Math.PI;
           A2 = Math.Atan(P/Q) + a/2.0 ;
         }
         else {     // это будем удалять
           if (debug>1)
              Console.Error.WriteLine("final::invGeoTR stay in your position");
           A1 = 0.0;
           A2 = 0.0;
         }
Snap2.png
...
Изменено: 12.03.2025, 17:48 - tchingiz
Рейтинг: 0 / 0
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140339
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1
Snap4.png
...
Рейтинг: 0 / 0
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140341
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ааа, я еще самовольно удалил умножение на ро два штриха в формулах гдето было.
Какие то две недели поисков (лет пять назад) позволили обнаружить, что ро два штриха -- количество секунд в радиане.
По формулам приходилось складывать радианы и секунды в приращении не масштабируя -- (2 парсека и 3 миллиметра ) получалась хрень на выходе.
Когда отмаштабировал (приращение делил на ро два штриха) начало получаться нормально.
Короче, умножение на это ро два штриха похе удалил совсем.
...
Рейтинг: 0 / 0
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140388
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пару тестов тут проверял
https://planetcalc.ru/722/
...
Рейтинг: 0 / 0
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140446
Протобуранец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Промежуточные точки - это хорошо.
...
Рейтинг: 0 / 0
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140447
Протобуранец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Хороший набор калькуляторов. Сразу кинулся искать калькулятор сумерек, но не нашел. Зато нашел грамотное определение сумерек.
Цитата 
[игнорируется]
Первый этап называется гражданскими сумерками. Это время, когда еще достаточно светло, чтобы работать вне помещения без искусственного освещения. Концу гражданских сумерек соответствует зенитный угол в 96 градусов, после чего начинаются навигационные сумерки.

Навигационные сумерки — это время, когда на воде все еще заметна линия горизонта. Концу навигационных сумерек соответствует зенитный угол в 102 градуса, после чего начинаются астрономические сумерки.

Астрономические сумерки — это время, когда Солнце все еще является источником света и мешает видимости самых слабых звезд. Для обычного наблюдателя это время неотличимо от ночи. Концу астрономических сумерек соответствует момент, когда Солнце полностью прекращает быть источником света, и это зенитный угол в 108 градусов.
Зенитный угол - это угол от вертикали. На картинке - номер два. Всегда сомневался, что мой навигатор считает сумерки правильно. Сильно подозреваю, что он считает по углу номер один, потому что так проще. Но самому сделать вычисления руки не доходили, а калькулятора сумерек с хорошей документацией не нашел. В общем, живу и не знаю, правильные у меня данные в телефоне, или нет. Но с наблюдениями совпадает.
pasted_image.png
...
Рейтинг: 0 / 0
Прямая и обратная геодезические задачи на эллипсоиде (с#)
    #40140487
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посчитал отклонения по расстоянию и азимуту (devS, devA) для парного применения обеих функций
это код
Код: C#
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.
#pragma warning disable 642

using System.Collections.Generic;
using System.Text;
using System.IO;
using System;
 partial class Program    {
   static   geoA p= new geo();

   static void deviation ( double B1, double L1, double S, double A12
              , out double devS, out double devA, bool vFlag = false ){
     double B2, L2,   A21 ;
     double S_, A12_, A21_;
     p.dirGeoT(math.dgr2rdn(B1), math.dgr2rdn(L1), S, math.dgr2rdn(A12)
                 , out B2, out L2,   out A21);
     p.invGeoT(B2, L2, math.dgr2rdn(B1), math.dgr2rdn(L1), out S_, out A21_, out A12_);
     if (vFlag ) {
       Console.Error.WriteLine("deviation: B2/L2//B1/L1: {0}/{1}//{2}/{3} degree"
              ,  math.rdn2dgr(B2), math.rdn2dgr(L2), B1, L1);
       Console.Error.WriteLine("deviation: S/A21/A12/A12_: {0}/{1}/{2}/{3}"
              , S, math.rdn2dgr(A21_), A12, math.rdn2dgr(A12_));
     }

     devS = S-S_;
     devA = math.rdn2dgr(math.dgr2rdn(A12) - A12_);
   }
}
На картинке таблица из Серапинаса с ошибками, которые теоретически получаются при этих методах.
В моей реализации, на 100к тестах (случайное координата, случайное расстояние до 80км или до 30км, случайный азимут)
получились такие отклонения:
80 км
# maximum deviation: distance(meters)/azimut (degree): 0.8043/0.0005182
# average deviation: distance(meters)/azimut (degree): 0.0500/0.0000392
30 км
# maximum deviation: distance(meters)/azimut (degree): 0.0439/0.0000747
# average deviation: distance(meters)/azimut (degree): 0.0027/0.0000056

1) У Серапинаса ошибка в секундах
0.02 секунды это 0.0000056 градуса
2) Про 30 км есть отдельная оговорка, дескать этими формулами считают до 30 км
Snap1.png
...
Изменено: 01.04.2025, 20:28 - tchingiz
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Картография и навигация [закрыт для гостей] / Прямая и обратная геодезические задачи на эллипсоиде (с#)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]