SASGIS - SAS.Планета |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0002275 | SAS.Планета | [All Projects] Баг | public | 26-11-2013 15:55 | 26-11-2013 20:32 |
|
Reporter | zed | |
Assigned To | vdemidov | |
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | |
Platform | | OS | | OS Version | |
Product Version | 131111 | |
Target Version | 140303 | Fixed in Version | 140303 | |
|
Summary | 0002275: Ошибка в рассчёте расстояний и площадей |
Description | Причём, ошибка не в алгоритмах, а где-то выше (может где появилось лишнее округление координат точек?). Ошибка воспроизводится на полигонах из *.sml, т.е. туда всё пишется верно. |
Steps To Reproduce | Берём ночнушку или релиз 13111, импортируем полигон из аттача и смотрим в информацию:
Количество частей: 1
Количество точек: 2962
Периметр: 2978,29 км
Площадь: 204826,71 км2
Билдим SAS по состоянию на пол-года назад (к примеру, rev.7350), запускаем с тем же файлом меток (sml), который создал релиз и смотрим на информацию ещё раз:
Количество частей: 1
Количество точек: 2962
Периметр: 2991,25 км
Площадь: 206207,16 км2 |
Additional Information | Значения периметра/площади старой версии можно считать референсными, поскольку они сравнивались с GlobalMapper и QGIS.
Собственно, начав копаться в сорцах QGIS на предмет расчёта расстояний/площадей и обнаружилось что хоть в qgis алгоритм расчёта расстояний и идентичен нашему, SAS вдруг стал нагло врать и ничего не сходится, даже с его же прошлыми показаниями...
НО если раньше SAS выдавал ошибку на полигоне 1-4.kml из этого сообщения на форуме, сегодняшняя версия отрабатывает без ошибок алгоритма (о точности результата пока не возьмусь говорить). |
Tags | No tags attached. |
Relationships | |
Attached Files | EuropeMinsk.kml (66,213) 26-11-2013 15:55 http://www.sasgis.org/mantis/file_download.php?file_id=1604&type=bug Image 2.png (2,485) 26-11-2013 17:09 http://www.sasgis.org/mantis/file_download.php?file_id=1605&type=bug
|
|
Issue History |
Date Modified | Username | Field | Change |
26-11-2013 15:55 | zed | New Issue | |
26-11-2013 15:55 | zed | File Added: EuropeMinsk.kml | |
26-11-2013 15:56 | zed | Additional Information Updated | bug_revision_view_page.php?rev_id=5856#r5856 |
26-11-2013 16:18 | vdemidov | Note Added: 0013323 | |
26-11-2013 16:21 | zed | Note Added: 0013324 | |
26-11-2013 16:39 | vdemidov | Note Added: 0013325 | |
26-11-2013 17:09 | zed | File Added: Image 2.png | |
26-11-2013 17:10 | zed | Note Added: 0013326 | |
26-11-2013 17:16 | zed | Note Added: 0013327 | |
26-11-2013 17:17 | vdemidov | Note Added: 0013328 | |
26-11-2013 17:21 | zed | Note Added: 0013329 | |
26-11-2013 17:46 | zed | Note Added: 0013330 | |
26-11-2013 19:33 | vdemidov | Assigned To | => vdemidov |
26-11-2013 19:33 | vdemidov | Status | new => assigned |
26-11-2013 20:31 | vdemidov | Status | assigned => resolved |
26-11-2013 20:31 | vdemidov | Fixed in Version | => 140303 |
26-11-2013 20:31 | vdemidov | Resolution | open => fixed |
26-11-2013 20:32 | vdemidov | Target Version | => 140303 |
Notes |
|
|
Попробуй переключиться с гугловской карты на яндексовскую или наоборот перед вычислением площади и периметра. |
|
|
(0013324)
|
zed
|
26-11-2013 16:21
|
|
|
|
|
Странно. Там добавляется только вычисление хэша. никакая логика не меняется. Разве что где-то очепятался. Глянь свежим взглядом. |
|
|
(0013326)
|
zed
|
26-11-2013 17:10
|
|
Пока не нашёл где, но явная ошибка в передаче параметров в конструктор TDatum (скриншот). |
|
|
(0013327)
|
zed
|
26-11-2013 17:16
|
|
Нашёл. В нескольких местах есть такие строчки:
> u_GlobalState.FGPSDatum := TDatum.Create(3395, 6378137, 6356752);
> u_MarkDbGUIHelper.TDatum.Create(3395, 6378137, 6356752)
Это как минимум. И как оно вообще работает с такими-то багами??? |
|
|
|
Ух ты. А как оно вообще скомпилилось????? |
|
|
(0013329)
|
zed
|
26-11-2013 17:21
|
|
Скомпилилось-то без проблем: THashValue = UInt64; и есть перегруженный конструктор, который принимает 3 параметра. |
|
|
(0013330)
|
zed
|
26-11-2013 17:46
|
|
А заодно, кстати, и выявился баг не баг, а недоработка - информация для меток выводится не в датуме карты, а в жёстко зашитом в коде датуме. И на текущий момент это эллипсоид. Нужно добавить переключатель какой-нить что-ли: какой именно использовать датум, для расчётов - тот что у карты или эллипсоид. И по-умолчанию таки стоит оставить эллипсоид.
P.S. И кстати, почему для создания _датума_ используется код _проекции_? Тоже баг? |
|