View Issue Details

IDProjectCategoryView StatusLast Update
0002275SAS.ПланетаБаг / Bugpublic26-11-2013 20:32
Reporterzed Assigned Tovdemidov  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version131111 
Target Version140303Fixed in Version140303 
Summary0002275: Ошибка в рассчёте расстояний и площадей
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 из этого сообщения на форуме, сегодняшняя версия отрабатывает без ошибок алгоритма (о точности результата пока не возьмусь говорить).
TagsNo tags attached.
Attached Files
EuropeMinsk.kml (66,213 bytes)
Image 2.png (2,485 bytes)   
Image 2.png (2,485 bytes)   

Activities

vdemidov

26-11-2013 16:18

manager   ~0013323

Попробуй переключиться с гугловской карты на яндексовскую или наоборот перед вычислением площади и периметра.

zed

26-11-2013 16:21

manager   ~0013324

Не помогает.

Нашёл проблемный коммит: 7440 (0489aad5146b) Хэш в датум и конвертре координат - вот после него и стало всё плохо.

vdemidov

26-11-2013 16:39

manager   ~0013325

Странно. Там добавляется только вычисление хэша. никакая логика не меняется. Разве что где-то очепятался. Глянь свежим взглядом.

zed

26-11-2013 17:10

manager   ~0013326

Пока не нашёл где, но явная ошибка в передаче параметров в конструктор TDatum (скриншот).

zed

26-11-2013 17:16

manager   ~0013327

Нашёл. В нескольких местах есть такие строчки:

> u_GlobalState.FGPSDatum := TDatum.Create(3395, 6378137, 6356752);
> u_MarkDbGUIHelper.TDatum.Create(3395, 6378137, 6356752)

Это как минимум. И как оно вообще работает с такими-то багами???

vdemidov

26-11-2013 17:17

manager   ~0013328

Ух ты. А как оно вообще скомпилилось?????

zed

26-11-2013 17:21

manager   ~0013329

Скомпилилось-то без проблем: THashValue = UInt64; и есть перегруженный конструктор, который принимает 3 параметра.

zed

26-11-2013 17:46

manager   ~0013330

А заодно, кстати, и выявился баг не баг, а недоработка - информация для меток выводится не в датуме карты, а в жёстко зашитом в коде датуме. И на текущий момент это эллипсоид. Нужно добавить переключатель какой-нить что-ли: какой именно использовать датум, для расчётов - тот что у карты или эллипсоид. И по-умолчанию таки стоит оставить эллипсоид.

P.S. И кстати, почему для создания _датума_ используется код _проекции_? Тоже баг?

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
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
08-08-2025 13:22 zed Category Баг => Баг / Bug