точно! ночью писал туго соображаю (Добавление) куда здесь воткнуть L0? (Добавление) наверное 0.00027778 а не 0.0027778
Сорри, я стер это свое замечание т.к. вы работаете с приращениями, а я думал с проекцией UTM с произвольным центральным меридианом. L0 вам понадобится для расчета dL http://geodesist.ru/forum/topic.php?for ... 1321273347 Давайте просто упорядочим алгоритм Расчитываем ОДНОКРАТНО на всю площадку: 1. Для эллипсоида WGS84 считаете вспомогательные параметры e, f, либо используете их константные значения; 2. Выбираете произвольную точку на своем обрабатываемом поле с координатами (B0, L0), во избежание недомолвок - это (широта, долгота). Например центр поля. B0 и L0 переводим в радианы; 2. Подставляя B0, считаете величину W по формуле W = sqrt(1-(e*sinB0)^2); 3. Считаете количество метров в радиане по широте по формуле a*(1-e^2)/W^3; 4. Считаете количество метров в радиане по долготе по формуле a*cosB0/W; Расчитываем на каждую приходящую от приемника позицию: 5. Переводим координаты приемника (B,L) в радианы; 6. Считаем приращение координат в радианах (dB,dL), где dB=B-B0, dL=L-L0; 7. Переводим приращение координат в метры, используя коэффициенты, полученные в п.3 и п.4 (добавлено) Если быть совсем щепетильным, то п.2-4 надо считать для каждой приходящей от приемника координаты (это мизерная нагрузка на CPU). Но, как было продемонстрировано ранее, разница на небольшом поле будет в миллиметрах.
2 stout Насчет UTM понял, спасибо. Насчет проекций Гаусса-Крюгера и Transverse Mercator есть вопросы. Столкнулся с вопросом соответствия двух упомянутых проекций. Не совсем уверен: они строятся по одному алгоритму? В Wiki есть фраза, меня смутившая: Я правильно понимаю, что при небольшом удалении от осевого меридиана (скажем, в пределах 6-градусной зоны) результаты расчета плоских прямоугольных координат из геодезических по формулам для UTM и по формулам для проекции Гаусса-Крюгера будут практически одинаковые?
2 victor64 Я бы всё-таки рекомендовал вам использовать топоцентрические координаты. Как совершенно верно заметил chnav Выбор центра поля, как начала топоцентрической СК позволит уменьшить искажения. Вычисляем Xo, Yo, Zo BLH2XYZ(a, e, Bo, Lo, H, Xo, Yo, Zo); и матрицу: M[1][1] := -Sin(Lo); M[1][2] := Cos(Lo); M[1][3] := 0; M[2][1] := -Sin(Bo) * Cos(Lo); M[2][2] := -Sin(Bo) * Sin(Lo); M[2][3] := Cos(Bo); M[3][1] := Cos(Bo) * Cos(Lo); M[3][2] := Cos(Bo) * Sin(Lo); M[3][3] := Sin(Bo); Затем для каждой точки трека B, L , H вычисляем прямоугольные геоцентрические координаты Xp, Yp, Zp BLH2XYZ(a, e, B, L , H, Xp, Yp, Zp); а затем - топоцентрические: x := M[1][1] * (Xp - Xo) + M[1][2] * (Yp - Yo) + M[1][3] * (Zp - Zo); y := M[2][1] * (Xp - Xo) + M[2][2] * (Yp - Yo) + M[2][3] * (Zp - Zo); z := M[3][1] * (Xp - Xo) + M[3][2] * (Yp - Yo) + M[3][3] * (Zp - Zo); 2 ZUCKtm Между координатами в проекции Гаусса-Крюгера и в transverse Mercator всегда выполняется соотношение (N,E)TM = 0.9996*(N,E)ГК само-собой разумеется, что в левой и правой частях нет соответствующих false Northing и false Easting, т.е. это "чистые" координаты проекции, в которые ещё не добавлены смещения. Приведённый в тексте класс TransverseMercator позволяет по единым (довольно точным) формулам вычислять координаты как в ГК, так и в TM в очень широкой зоне. На рисуночке представлена зависимость точности координаты Е от удаления от осевого меридиана (для координаты N точность чуть выше). Кроме того, это один из самых быстрых алгоритмов (если не самый быстрый).
Все понял. Единственное различие - использование масштабного коэффициента. А то у меня уже сомнения появились - корректно ли применять в Topcon Tools проекцию TM с масштабным коэффициентом 1 и считать, что это и есть проекция Гаусса-Крюгера. Спасибо.
stout огромное спасибо за помощь, еще вопросик: как расчитывается Z и Н? навигатор выдаёт след. данные $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47 где: GGA – Заговолок 123519 –UTC время 12:35:19 4807.038, N – Широта, 48 градусов 7.038 минуты северной широты 01131.000, Е – Долгота, 11 градусов 31.000 минуты восточной долготы 1 - тип решение, StandAlone решение 0 – нет решения, 1 – StandAlone, 2 – DGPS, 3 – PPS, 4 – фиксированный RTK, 5 – не фиксированный RTK, 6 – использование данных инерциальных систем, 7 – ручной режим, 8 – режим симуляции 08 – количество используемых спутников 0.9 – геометрический фактор, HDOP 545.4, М – высота над уровнем моря в метрах 46.9, М – высота геоида над эллипсоидом WGS 84 [пустое поле] – время прошедшее с момента получения последней DGPS поправки. Заполняется при активизации DGPS режима [пустое поле] – идентификационный номер базовой станции. Заполняется при активизации DGPS режима.
Оси Z принадлежит малая ось эллипсоида, координата Z вычисляется в процедуре BLH2XYZ. Т.е. фраза - это комментарий к вызову процедуры. Н - эллипсоидальная высота. Вычисляется как высота над уровнем моря + высота геоида над эллипсоидом
Всем доброго времени суток! К сожелению, не прочитал все сообщения данной темы,поэтому если где повторюсь-не серчайте) Вопрос такой: учебный проект по диплому. Исследую нагруженность двигателя по GPS. В общем проблема такая-приходят данные от точки к точке с определенным интервалом. Но таких сообщений приходит до 3 тысяч. Нужно расстояние между этими точками. А в ручную их замерять-как вы понимаете проблема. Но, выдает координаты следующие(пример): 51.819698, 107.649788 (14). Как я понимаю - это долгота и широта? Также выдает данные: высота над уровнем моря. Из всего выше сказанного хотелось бы узнать:есть ли какая формула для определения расстояния между этими точками, по тем данным которые я предоставил. Заранее спасибо.
Формулы, естественно, есть. Сложность их зависит от необходимой точности определения координат. Какая Вам нужна точность?
ну точность я думаю это только от этой программы зависит. какую уж она выдаст. а формула просто чтобы подставить выдаваемые ею данные и получились метры. или не так?
Правильные координаты - координаты точки переведенные по правильным формулам с необходимой пользователю точностью. Похожие на правильные - набор цифр до любого знака после запятой, но несоответствующие координатам данной точки. Если Вас устраивает точность не лучше первых метров, можно пользоваться геодезическими калькуляторами, задавая перед переводом необходимую Вам точность. Если надо точнее, этот способ не подойдёт.
На любом геодезическом калькуляторе наберите любую широту и долготу. Если это будут секунды, и Вы получите прямоугольные координаты с точностью до 30м – это будут правильные координаты. Если это будут десятые доли секунды, и Вы получите прямоугольные координаты с точностью до 5м – это будут правильные координаты. Если это будут сотые доли секунды, и Вы получите прямоугольные координаты с точностью до 0.5м – это будут неправильные координаты, похожие на правильные. То же самое и формулы. Такова наша геодезия.