Anonymous | Login | Signup for a new account | 22-11-24 03:29 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0002276 | SAS.Планета | [All Projects] Хотелка | public | 27-11-2013 13:06 | 28-11-2013 06:15 | ||||
Reporter | zed | ||||||||
Assigned To | zed | ||||||||
Priority | normal | Severity | minor | Reproducibility | N/A | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | 131111 | ||||||||
Target Version | 140303 | Fixed in Version | 140303 | ||||||
Summary | 0002276: Добавить альтернативный алгоритм расчёта расстояний | ||||||||
Description | Алгоритм Винсента (обратный), который сейчас используется в SAS, не всегда может рассчитать расстояние между двумя точками. И вот тому яркий пример: http://sasgis.org/forum/viewtopic.php?f=2&t=2211&start=10#p33545 Оказывается (внезапно), что есть ещё один популярный алгоритм, лишённый таких недостатков, да к тому же ещё и более быстрый (по заверениям). Этот алгоритм настолько втёрся в доверие, что его даже решили включить в состав proj4 в следующем релизе (4.9.xx). Алгоритм уже реализован на нескольких популярных языках (к сожалению, Delphi среди них нету), в том числе и на Си: http://geographiclib.sourceforge.net/html/C/ но на счастье, там довольно простое API и с использованием либы проблем быть не должно. | ||||||||
Additional Information | Теоретическое обоснование алгоритма: Algorithms for geodesics by Karney (2012) | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | geodesic.zip [^] (14,575 bytes) 28-11-2013 06:11 | ||||||||
Notes | |
(0013339) vdemidov (manager) 27-11-2013 13:13 |
Может прост дождемся реализации в proj4 и просто заюзаем его, раз уж все равно пользуемся этой dll? |
(0013340) zed (manager) 27-11-2013 13:16 |
Да вот мне загорелось и хочется попробовать прямо сейчас :) Поэтому сделаю пока отдельной либой, а как обновится proj4, можно будет перейти и на него. Алгоритм Винсента выбрасывать по-любому не буду и он будет использоваться в случае если либа будет недоступна. |
(0013341) vdemidov (manager) 27-11-2013 14:08 |
Ну, тогда может стоит передавать в датум уже готовые алгортимы вычисления площади и расстояния, а не создавать в конструкторе. Тогда фабрика датумов сможет управлять этим всем хозяйством. |
(0013343) zed (manager) 27-11-2013 20:57 |
Пока что сделал в лоб. И столкнулся с проблемой в dll: там объявляется переменная double NaN (назначение аналогично дельфийской константе NAN, которая объявлена как NAN = 0.0/0.0), которой при инициализации присваивается значение NaN = sqrt(-1.0) и на этой вот строчке либа вылетает с ошибкой floating point operation. |
(0013346) zed (manager) 28-11-2013 06:14 edited on: 28-11-2013 06:14 |
Сделал так: > *(long long*)&NaN = 0x7ff8000000000000; там внутри либы этот NaN используется только для возвращения наружу неопределённого результата (при каких-либо ошибках), так что проблем не будет. |
Issue History | |||
Date Modified | Username | Field | Change |
27-11-2013 13:06 | zed | New Issue | |
27-11-2013 13:06 | zed | Status | new => assigned |
27-11-2013 13:06 | zed | Assigned To | => zed |
27-11-2013 13:07 | zed | Description Updated | View Revisions |
27-11-2013 13:13 | vdemidov | Note Added: 0013339 | |
27-11-2013 13:16 | zed | Note Added: 0013340 | |
27-11-2013 14:08 | vdemidov | Note Added: 0013341 | |
27-11-2013 20:57 | zed | Note Added: 0013343 | |
28-11-2013 06:11 | zed | File Added: geodesic.zip | |
28-11-2013 06:14 | zed | Note Added: 0013346 | |
28-11-2013 06:14 | zed | Note Edited: 0013346 | View Revisions |
28-11-2013 06:15 | zed | Status | assigned => resolved |
28-11-2013 06:15 | zed | Fixed in Version | => 140303 |
28-11-2013 06:15 | zed | Resolution | open => fixed |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |