View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001188SAS.Планета[All Projects] Хотелкаpublic26-02-2012 10:0502-10-2012 18:26
Reportervdemidov 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityN/A
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version110418 
Target Version121010Fixed in Version121010 
Summary0001188: Алгоритм проецирования точки на эллипсоиде
DescriptionНужен алгоритм проецирования точки на эллипсоиде. То есть функция получает координаты исходной точки, азимут и расстояние в метрах, а возвращает координаты новой точки.
Additional Informationhttp://ru.wikipedia.org/wiki/Ортодромия
TagsNo tags attached.
Attached Files? file icon geo84.pas [^] (7,462 bytes) 02-10-2012 07:19

- Relationships
related to 0002088resolvedzed Добавить в IDatum функцию построения N промежуточных точек отрезка 
child of 0000713resolvedvdemidov Настраиваемые кольца расстояния вокруг метки положения 
child of 0001116confirmed При измерении расстояний отображать линии в виде дуг 
child of 0000663resolvedzed Создание круглых областей заданного радиуса 
child of 0000094resolvedvdemidov Добавить создание точек по азимуту 
child of 0000099confirmed Добавить инструмент - вычисление азимута между двумя существующими метками 
child of 0000219resolvedzed Отображение азимута в инструменте измерений расстояний 
child of 0000143confirmed Навигация на точку(метку) 
child of 0001051confirmed Построение лучей азимутов 
child of 0001021resolvedzed Измерение растояния 
child of 0001616resolvedzed Выделение квадратной области определяемый указанным радиусом вписанной окружности 

-  Notes
(0005659)
vasketsov (manager)
26-02-2012 12:52

есть такое, куда залить или отдельно приложить? только не азимут, а смещение x и y.
(0005661)
vdemidov (manager)
26-02-2012 13:23

Нет. Нужен именно азимут.
(0005664)
vasketsov (manager)
26-02-2012 13:52

>расстояние в метрах
о каких примерно величинах идёт речь? метры? сотни километров?
о плюсах?

в вики про локсодромию только на сфере написано (((
http://ru.wikipedia.org/wiki/%CB%EE%EA%F1%EE%E4%F0%EE%EC%E0
(0005665)
vdemidov (manager)
26-02-2012 14:20

А я не про локсодромию, а про навигацию на большом круге. Соответственно расстояния могут быть любыми до половины длинны экватора.
(0005666)
vdemidov (manager)
26-02-2012 14:28

http://ru.wikipedia.org/wiki/Ортодромия
Только все эти формулы на сфере, а нужно на эллипсоиде.
(0005667)
vasketsov (manager)
26-02-2012 14:35

>я не про локсодромию
Вообще-то "координаты исходной точки, азимут и расстояние в метрах, а возвращает координаты новой точки" - именно движение по локсодромии. Или имелось ввиду что начальный азимут задаёт направление, а дальше по нему идём прямо и азимут меняется, вплоть за полюс?
(0005670)
vdemidov (manager)
26-02-2012 21:07
edited on: 26-02-2012 21:14

>начальный азимут задаёт направление, а дальше по нему идём прямо и азимут меняется, вплоть за полюс?
Именно.
Локсодромия интересна только при навигации по обычным бумажным картам.

(0005671)
vdemidov (manager)
26-02-2012 21:34

Нужны алгоритмы аналогичные используемым вот в этом онлайн калькуляторе:
http://planetcalc.ru/722/
(0005672)
Tolik (manager)
27-02-2012 04:14

Наверно, и 0001116 можно сюда привязать?
(0007118)
Dima2000 (developer)
19-05-2012 07:48
edited on: 19-05-2012 22:09

Вики про длину дуги даже эллипса говорит "Получившийся интеграл принадлежит семейству эллиптических интегралов, которые в элементарных функциях не выражаются, и сводится к эллиптическому интегралу второго рода E(t,e)." - т.е. или апроксимировать какой-то сферой (для малых расстояний почему бы нет? Или нужна офигительная точность?) или считать итерационно (разбивать отрезок на кусочки и каждый считать на своей приближенной сфере). Т.е. вопрос лишь в применении, какая точность необходима. Для всех связанных тикетов мне кажется достаточно будет и навигации по сфере, для которой есть точные формулы.

Проверил по тому "идеальному" калькулятору, Москва - Владивосток, расстояние 6445км/6456км, погрешность менее 0.2%, азимуты отличаются менее 0.05° (WGS84 vs сфера). Неужели для чего-то нужна ещё бОльшая точность?

(0007141)
vdemidov (manager)
21-05-2012 05:17

Я ж не против. Реализуйте хоть на сфере.
(0007799)
vdemidov (manager)
12-07-2012 05:29

http://www.spywatcher.com.ua/forum/index.php?PHPSESSID=a35d32a4bfd512c148109fd622141327&topic=45.0
(0008050)
vdemidov (manager)
02-08-2012 16:52

Нужно создать что-то похожее на то что появилось в API Яндекс-Карт
http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/coordSystem.geo.xml
(0008053)
zed (manager)
02-08-2012 19:49

http://habrahabr.ru/post/143898/

Со своей стороны мы написали две стандартных реализации — для обычной декартовой плоскости и для референсного эллипсоида WGS 84. Для второй реализации мы использовали формулы Винсенти (http://en.wikipedia.org/wiki/Vincenty%27s_formulae). Кстати, непосредственно реализовывал эту логику runawayed (http://habrahabr.ru/users/runawayed/), передаём ему привет :).

Постучись в гости к этому "runawayed", может он и для САСа такое сделает. Или хотя бы кинет исходники (если они не засекречены).
(0008060)
vdemidov (manager)
03-08-2012 06:34

Ну у меня на хабре аккаунта нету. Так что не смогу. Если кто постучится к runawayed буду благодарен.
(0009104)
zed (manager)
02-10-2012 07:19
edited on: 02-10-2012 07:23

vdemidov
>Нужны алгоритмы аналогичные используемым вот в этом онлайн калькуляторе:
Немного покопался в теме: все расчёты базируются на алгоритме некого поляка Vincenty и непродолжительное гугление по имени вывело на исходники, реализующие этот алгоритм: http://www.programmersheaven.com/download/48584/19/ZipView.aspx

Исходники на всякий случай приаттачил (geo84.pas). Необходимая нам реализация в процедуре: procedure GeoRadial(const Lat1, Lon1, Tc, D: Double; out Lat, Lon: Double);

Оно?

Только сейчас обратил внимание, что и на хабре оказывается про этого же поляка говорили, так что скорее всего оно.

(0009105)
vdemidov (manager)
02-10-2012 07:33

Стопудово оно. Только нужно убрать жесткую привязку к константам и загнать в класс TDatum. Еще хорошо бы сравнить результаты функции Geodesic с тем что сейчас реализовано.
(0009111)
zed (manager)
02-10-2012 12:20

Сейчас попробую заняться.

На сколько я понял, вот эта константа:
> f0 = 1/298.257223563; // Flattening

это тоже самое, что и FExct: Double; в TDatum?
(0009112)
vdemidov (manager)
02-10-2012 12:25

Тоже самое с точность может быть до обратного значения. Я точно не помню. Просто сравни значение для стандартного эллипсоида WGS84
(0009124)
zed (manager)
02-10-2012 15:50

Оказалось не тоже самое.
(0009125)
zed (manager)
02-10-2012 15:59

На всякий случай, оставлю тут ссылку на калькулятор, которым я проверял правильность работы алгоритма: http://www.geomidpoint.com/destination/
(0009126)
zed (manager)
02-10-2012 18:26

>Еще хорошо бы сравнить результаты функции Geodesic с тем что сейчас реализовано.
Сравнил. САС-овский алгоритм оказался немножко менее точный, поэтому переделал и его до кучи.

- Users who viewed this issue
User List Anonymous (3296x), rass (4x), zOn (1x), elsergv (1x)
Total Views 3302
Last View 20-09-2020 10:11

- Issue History
Date Modified Username Field Change
26-02-2012 10:05 vdemidov New Issue
26-02-2012 10:16 vdemidov Relationship added child of 0000713
26-02-2012 12:52 vasketsov Note Added: 0005659
26-02-2012 13:23 vdemidov Note Added: 0005661
26-02-2012 13:52 vasketsov Note Added: 0005664
26-02-2012 14:20 vdemidov Note Added: 0005665
26-02-2012 14:28 vdemidov Note Added: 0005666
26-02-2012 14:35 vasketsov Note Added: 0005667
26-02-2012 21:07 vdemidov Note Added: 0005670
26-02-2012 21:14 vdemidov Note Edited: 0005670 View Revisions
26-02-2012 21:26 vdemidov Additional Information Updated View Revisions
26-02-2012 21:34 vdemidov Note Added: 0005671
27-02-2012 04:14 Tolik Note Added: 0005672
27-02-2012 08:56 vdemidov Relationship added child of 0001116
27-02-2012 09:03 vdemidov Relationship added child of 0000663
27-02-2012 16:13 vdemidov Status new => confirmed
27-02-2012 16:13 vdemidov Target Version => 22xxxx
05-03-2012 06:15 vdemidov Relationship added child of 0000094
05-03-2012 06:15 vdemidov Relationship added child of 0000099
05-03-2012 08:22 vdemidov Relationship added child of 0000219
05-03-2012 10:13 vdemidov Relationship added child of 0000143
05-03-2012 10:57 vdemidov Relationship added child of 0001051
19-05-2012 07:48 Dima2000 Note Added: 0007118
19-05-2012 22:09 Dima2000 Note Edited: 0007118 View Revisions
21-05-2012 05:17 vdemidov Note Added: 0007141
12-07-2012 05:29 vdemidov Note Added: 0007799
02-08-2012 16:52 vdemidov Note Added: 0008050
02-08-2012 19:49 zed Note Added: 0008053
03-08-2012 06:34 vdemidov Note Added: 0008060
02-10-2012 07:19 zed Note Added: 0009104
02-10-2012 07:19 zed File Added: geo84.pas
02-10-2012 07:23 zed Note Edited: 0009104 View Revisions
02-10-2012 07:33 vdemidov Note Added: 0009105
02-10-2012 12:20 zed Note Added: 0009111
02-10-2012 12:25 vdemidov Note Added: 0009112
02-10-2012 15:50 zed Note Added: 0009124
02-10-2012 15:50 zed Status confirmed => resolved
02-10-2012 15:50 zed Fixed in Version => 121010
02-10-2012 15:50 zed Resolution open => fixed
02-10-2012 15:50 zed Assigned To => zed
02-10-2012 15:50 zed Target Version 22xxxx => 121010
02-10-2012 15:59 zed Note Added: 0009125
02-10-2012 18:26 zed Note Added: 0009126
08-10-2012 14:09 vdemidov Relationship added child of 0001021
09-10-2012 06:49 vdemidov Relationship added child of 0001616
13-08-2013 12:46 vdemidov Relationship added related to 0002088



Copyright © 2007 - 2020 SAS.Planet Team