Длина дуги параллели

Системы координат, проекции, преобразования, привязка
danilsh
Новоприбывший
Сообщения: 6
Зарегистрирован: 05 мар 2009, 23:50
Репутация: 0

Длина дуги параллели

Сообщение danilsh » 15 июл 2009, 11:48

Здравствуйте!

Как можно рассчитать длину дуги параллели для эллипсоида?

Зачем мне это нужно (пишу на всякий случай - может я ищу решение не в том направлении).
Я разрабатываю программное обеспечение, которое должно уметь работать с растровыми картами. В общем случае, растр привязывается по географическим координатам нескольких точек - для расчетов пользуюсь GDAL. Но мне необходимо иметь метрическую систему координат, т.к. я должен отображать движение точки на земной поверхности, координаты которой могут быть заданы в виде смещений в метрах от заданной начальной точки. Проекцию карты заранее узнать невозможно - что отсканирует пользователь :D, заставить пользователя привязывать карту по метрам - нереальная задача, поэтому я поступаю следующим образом. Начало метрической системы координат помещаю в точку старта (для которой известны географические координаты) и для растровой карты дополнительно требую указать на этапе привязки параметры эллипсоида, которые будут использоваться в дальнейших расчетах (я понимаю, что этого может быть недостаточно - по хорошему нужно указывать все параметры географической СК, но для простоты пока и так сойдет). Отсчет координаты Y для очередной точки провожу вдоль меридиана, расположенного на долготе начальной точки. В данном случае пользуюсь расчетом длины большого круга в библиотеке GeographicLib. Отсчет координаты Х необходимо проводить вдоль параллели, расположенной на только что найденной широте точки. Соответственно, здесь мне нужен метод расчета длины параллели. Таким образом я смогу преобразовать метрические координаты в географические и отобразить точку на карте.

Может быть кто-нибудь знает библиотеку, в которой реализован данный тип расчета?

Заранее спасибо!
Dan.

danilsh
Новоприбывший
Сообщения: 6
Зарегистрирован: 05 мар 2009, 23:50
Репутация: 0

Re: Длина дуги параллели

Сообщение danilsh » 16 июл 2009, 01:23

Прошу прощения, видимо у меня был включен режим тупинга.
Радиус параллели нахожу по формуле большая_полуось * cos(широты). Зная радиус и долготу ищу длину дуги соответствующей окружности.

Вроде все просто...

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Длина дуги параллели

Сообщение geologic » 16 июл 2009, 10:10

Это для сферы вы обдумали, приближенно. Вполне допустимый расчет, если точность не очень нужна - авиаторы, например, так и считают, без учета полярного сжатия. Для эллипсоида a*cos широты не дает радиуса параллели, поскольку a не равна расстоянию от центра земли до точки (оно несколько меньше). Полная формула и методы расчета вот тут есть, например.

Долгота для расчета не имеет значения. В том смысле, что градус широты всегда одинаков и на востоке, и на западе ;)
Последний раз редактировалось geologic 16 июл 2009, 12:56, всего редактировалось 1 раз.

danilsh
Новоприбывший
Сообщения: 6
Зарегистрирован: 05 мар 2009, 23:50
Репутация: 0

Re: Длина дуги параллели

Сообщение danilsh » 16 июл 2009, 11:04

Блин, у меня скоро разжижение мозга наступит от всех этих формул! :mrgreen:

Я в википедии нашел параметрическое уравнение эллипса:
x = a * cos p;
y = b * sin p;
и ничтоже сумняшеся решил, что параметр p можно заменить широтой (большая полуось ведь лежит в плоскости экватора, а малая проходит через полюса - я все правильно понимаю?)
А долгота нужна, чтобы длину дуги посчитать - долгота начальной точки-то у меня задана.
В любом случае спасибо за формулы - я на них натыкался в поиске, но подумал, что это какой-то студент свои труды публикует - поэтому фиг знает, правильные они или нет.

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Длина дуги параллели

Сообщение geologic » 16 июл 2009, 12:59

параметр p МОЖНО заменить широтой, угол есть угол. Но судите сами, получается, что для эллипса отстояние по X (это наш искомый радиус окружности параллели) зависит ТОЛЬКО от большой полуоси. Т.е. рассчитывается точно так же, как и для окружности диаметром a??? В вашей формуле a это расстояние от данной точки (параллели, если про сечение говорить) до центра окружности, тогда тригонометрия да, диктует x=cos гипотенузы. Но гипотенузу - расстояние от центра до X - еще нужно рассчитать через полуоси! В любом случае гипотенуза будет всегда больше b и меньше a и сама по себе является функцией широты, в приблизительных прикидках это можно учитывать.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Длина дуги параллели

Сообщение Максим Дубинин » 16 июл 2009, 17:54

пристегивайтесь, турбулентность прямо по курсу

danilsh
Новоприбывший
Сообщения: 6
Зарегистрирован: 05 мар 2009, 23:50
Репутация: 0

Re: Длина дуги параллели

Сообщение danilsh » 16 июл 2009, 23:21

geologic, я понял в чем моя ошибка. Параметр p нельзя приравнивать к широте, если хочется получить точность.

sim, я был по этой ссылке, но там дается расчет для сферы. Я пока не могу давать оценки "на глазок" о точности того или иного метода, и подходит ли он для меня, т.к. мягко говоря не являюсь специалистом в этой области. Предположительно, мне нужна будет точность не грубее 100 м. Поэтому, лучше взять наиболее точный из доступных методов - а там уже все выяснится в процессе тестирования. Для геодезических расчетов сейчас я использую библиотеку GeographicLib, в частности использую методы решения прямой и обратной геодезических задач для получения длины дуги эллипса и обратного преобразования в градусы широты. Может это слишком, но пока ничего более подходящего я не нашел.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Длина дуги параллели

Сообщение Максим Дубинин » 17 июл 2009, 04:33

если нужно тоже самое, но для эллипсоида, см. формулы Винценти (Vincenty)

разница в длинах дуг между сферой и эллипсоидом будет порядка первых метров
пристегивайтесь, турбулентность прямо по курсу

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Я думаю, надо внести ясность

Сообщение geologic » 17 июл 2009, 10:04

Симпатичная статья про "большой круг", но он ведь совершенно не совпадает с параллелями! Соответственно, дистанция по большому кругу (ортодромии), которую считают в навигационных задачах, не совпадает с длинами дуг параллелей, которые считают в основном географы-геодезисты. Дуга большого круга всегда короче - поэтому по ней и ездят ;)

Последнее утверждение, насчет метров, также неверно: расчет длины дуги одного градуса параллели для сферы [по "школьной" формуле C` = 2*ПИ*R*cos(фи)/360 ] выдает 62250 м - если взять "нашу" широту 56. Реальная геодезическая длина (из учебника, например, отсюда), то для той же широты 62 394 м. Таким образом, точность расчета по упрощенной формуле для наших широт превышает 200 метров. Совпадает, понятное дело только на экваторе - 111320 м.

danilsh
Новоприбывший
Сообщения: 6
Зарегистрирован: 05 мар 2009, 23:50
Репутация: 0

Re: Длина дуги параллели

Сообщение danilsh » 17 июл 2009, 12:36

Вот-вот, сначала я тоже (ошибочно) считал длину дуги параллели, как дугу большого круга, а потом вспомнил :) , что параллели - на секундочку - это не меридианы. Может быть ошибка, особенно на небольших расстояниях, будет и незначительная. Но зачем-же с самого начала закладывать ее в свой алгоритм.

Вот здесь описан алгоритм из библиотеки GeographicLib, которую я использую сейчас для расчета длины дуги меридиана и получения широты. Насколько я понял, автор взял за основу алгоритм Бесселя. Иногда функции преобразования в этой библиотеке не сходятся (наблюдал на вполне обычных координатах - не полюса и т.п. экстремальные точки), но даже в этом случае возвращенные функциями значения дают приемлемый для меня результат.

Но это все еще цветочки... вот когда с рельефом начну работать - пойдут ягодки :D

geologic
Гуру
Сообщения: 852
Зарегистрирован: 15 сен 2005, 13:19
Репутация: 6
Откуда: москва
Контактная информация:

Re: Длина дуги параллели

Сообщение geologic » 17 июл 2009, 13:01

danilsh писал(а):Может быть ошибка, особенно на небольших расстояниях, будет и незначительная
Вы не правы, ошибка по сравнению с ортодромией будет значительная. Не зря же самолеты из Москвы до Хабаровска летают не "по широте", а чуть ли не через Ледовитый океан ;) Для одного градуса, возможно, и не так заметно будет... Сейчас попробуем... Длина дуги по учебнику упоминалась выше, а кратчайшее расстояние по калькулятору большого круга - 62393 м, разница всего один метр. Для трехградусной дуги разница уже побольше - 15 м. Это наглядно видно по кратчайшему направлению - если для одноградусных полетов азимут почти совпадает, то начиная с двух - уже заметная поправка курса, градус и более нарастает стремительно.

Я не специалист в тонкостях Бесселя и Винцента, только кажется мне, их алгоритмы касаются в первую очередь именно кратчайшего геодезического расстояния, ортодромии, как видно с первых строк вашего описания: "the shortest path between two points on a spheroid at (lat1, lon1) and (lat2, lon2) is called the geodesic". Про "длину параллели" в тексте нигде упоминания нет, только "length of the geodesic" - так что будьте осторожны :(
Последний раз редактировалось geologic 17 июл 2009, 13:20, всего редактировалось 1 раз.

Konstantin Tokar
Активный участник
Сообщения: 178
Зарегистрирован: 16 июл 2008, 09:56
Репутация: 1
Откуда: Москва

Re: Длина дуги параллели

Сообщение Konstantin Tokar » 17 июл 2009, 13:17

А нельзя просто посчитать расстояние между двумя точками на эллипсоиде или сфероиде?

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Длина дуги параллели

Сообщение Максим Дубинин » 17 июл 2009, 17:28

Последнее утверждение, насчет метров, также неверно
Что значит "так же"? Вот мой источник. Я не дописал, ошибка первых метров на км.
пристегивайтесь, турбулентность прямо по курсу

danilsh
Новоприбывший
Сообщения: 6
Зарегистрирован: 05 мар 2009, 23:50
Репутация: 0

Re: Длина дуги параллели

Сообщение danilsh » 17 июл 2009, 20:23

geologic, вношу ясность: для расчетов, связанных с широтами и длинами дуг меридианов пользуюсь решением прямой и обратной геодезической задачи в библиотеке GeographicLib - я так понимаю, что дуга большого круга (меридиана в частности) и есть кратчайшее расстояние т.е. geodesic, а для расчетов долготы и длины дуги параллели пользуюсь теперь Вашей формулой, ссылка на которую в Вашем сообщении в 10:10 вчера ("Полная формула")

Konstantin Tokar, я в начале описал, зачем мне вся эта катавасия нужна - нужно получить хоть какие-то линейные координаты, если нет информации о проекции. Можно было-бы посчитать расстояния между точками, взять курс, спроецировать на меридиан и параллель... Но я не уверен, что это будет правильно (курс-то не постоянный на протяжении этого отрезка), и к тому же особенность линейных координат, которые получаю я состоит в том, что ось Y всегда направлена на Север, а ось X - на Восток, соответственно напрашиваются аналоги этим осям - меридианы и параллели.

Сейчас мне все более-менее стало ясно. Спасибо всем за советы и идеи.

usergio
Новоприбывший
Сообщения: 11
Зарегистрирован: 08 май 2010, 16:05
Репутация: 0

Re: Длина дуги параллели

Сообщение usergio » 25 июл 2010, 20:11

Максим Дубинин писал(а):если нужно тоже самое, но для эллипсоида, см. формулы Винценти (Vincenty)

разница в длинах дуг между сферой и эллипсоидом будет порядка первых метров
Недавно столкнулся с критикой метода Vincenty ( http://www.spywatcher.com.ua/forum/index.php?topic=45.0 ),
по поводу его точности. Похоже, что метод отстойный:)

Ответить

Вернуться в «Координаты и привязка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 18 гостей