SASGIS - SAS.Планета |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0003781 | SAS.Планета | [All Projects] Баг | public | 01-09-2021 19:44 | 06-09-2021 09:48 |
|
Reporter | VadimK | |
Assigned To | zed | |
Priority | normal | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | |
Platform | Windows | OS | 7 | OS Version | Home Basic |
Product Version | 201212 | |
Target Version | 211230 | Fixed in Version | 211230 | |
|
Summary | 0003781: При выборе проекции "Geographic Lat/Lon" вылазит "Invalid Floatig Point Operation" |
Description | При выборе проекции "Geographic Lat/Lon" и дальнейшей работой с картой вылазит ошибка"Invalid Floatig Point Operation".
Происходит это при малом масштабе, когда весь мир на экране (например самый-самый первый запуск программы), либо когда ползаешь по карте в верхних широтах 85+
Ошибка не пропадает, выскакивает постоянно, пока двигаешь мышью. В момент появления диалогового окошка мышка "прилипает" к полю карты и уползти обратно в "нижние" широты получается с трудом. Если закрыть программу в этот момент, то при следующем запуске она "теряет" карту (серое поле), которая выбрана. В меню Вид-Проекция остаётся только один вариант - "Оригинальная (из ZMP)".
Вывести из ступора программу можно, удалив ini-файлы. |
Steps To Reproduce | Прилагаю архив с файлами (настройки), созданными программой. Этот набор файлов относится к состоянию ступора, в который программа впадает. Распаковать и закинуть в ночную сборку. |
Additional Information | |
Tags | No tags attached. |
Relationships | related to | 0003065 | confirmed | | Создать IProjectionConverter |
|
Attached Files | BUG_STATE_SAS.Planet.Nightly.210824.10169.zip (13,929) 01-09-2021 19:44 https://bugtracker.sasgis.org/file_download.php?file_id=2536&type=bug Geographic_Lat-Lon.png (14,517) 01-09-2021 19:44 https://bugtracker.sasgis.org/file_download.php?file_id=2537&type=bug
InvalidFloatigPointOperation.png (29,377) 01-09-2021 19:45 https://bugtracker.sasgis.org/file_download.php?file_id=2538&type=bug
3781.diff (7,283) 05-09-2021 09:08 https://bugtracker.sasgis.org/file_download.php?file_id=2539&type=bug |
|
Issue History |
Date Modified | Username | Field | Change |
01-09-2021 19:44 | VadimK | New Issue | |
01-09-2021 19:44 | VadimK | File Added: BUG_STATE_SAS.Planet.Nightly.210824.10169.zip | |
01-09-2021 19:44 | VadimK | File Added: Geographic_Lat-Lon.png | |
01-09-2021 19:45 | VadimK | File Added: InvalidFloatigPointOperation.png | |
04-09-2021 09:47 | zed | Note Added: 0020186 | |
04-09-2021 09:47 | zed | Status | new => confirmed |
04-09-2021 09:47 | zed | Product Version | .Nightly => 201212 |
04-09-2021 09:47 | zed | Target Version | => 50xxxx |
04-09-2021 21:19 | vdemidov | Note Added: 0020188 | |
04-09-2021 21:20 | vdemidov | Note Edited: 0020188 | bug_revision_view_page.php?bugnote_id=20188#r7771 |
04-09-2021 21:25 | vdemidov | Relationship added | related to 0003065 |
04-09-2021 21:28 | vdemidov | Note Edited: 0020188 | bug_revision_view_page.php?bugnote_id=20188#r7772 |
05-09-2021 07:56 | zed | Note Added: 0020189 | |
05-09-2021 09:08 | zed | Note Added: 0020190 | |
05-09-2021 09:08 | zed | File Added: 3781.diff | |
06-09-2021 08:21 | vdemidov | Note Added: 0020191 | |
06-09-2021 09:47 | zed | Status | confirmed => resolved |
06-09-2021 09:47 | zed | Fixed in Version | => 211230 |
06-09-2021 09:47 | zed | Resolution | open => fixed |
06-09-2021 09:47 | zed | Assigned To | => zed |
06-09-2021 09:48 | zed | Target Version | 50xxxx => 211230 |
06-09-2021 09:48 | zed | Summary | при выборе проекции "Geographic Lat/Lon" вылазит "Invalid Floatig Point Operation" => При выборе проекции "Geographic Lat/Lon" вылазит "Invalid Floatig Point Operation" |
Notes |
|
(0020186)
|
zed
|
04-09-2021 09:47
|
|
Да, есть такая проблема. Эта проекция отличается тем, что карта в ней не квадратная (как для Меркатора на сфере или эллипсоиде), а прямоугольная.
Возможно, достаточно вот тут подправить расчёты для Y, чтобы значения не выходили за +-85 градусов, но не уверен, что это не поломает что-нибудь в другом месте... |
|
|
(0020188)
|
vdemidov
|
04-09-2021 21:19
(edited on: 04-09-2021 21:28) |
|
>Возможно, достаточно вот тут подправить расчёты для Y, чтобы значения не выходили за +-85 градусов, но не уверен, что это не поломает что-нибудь в другом месте...
Нет. Там надо разбираться почему именно вылазит ошибка. У всех типов проекций покрытие чуток отличается, так что там есть механизм подгоняющий координты к допустимым при переходах от одной проекциии к другой. Нужно понять почему он не сработал и в чем конкретно. Просто этот тип проекции сильно отличается вот на нем и вылезло, но может вылезти на любой паре разных типов и даже на разных проекциях одного типа с разными параметрами.
PS: Скорее всего где-то забыил вызвать Validate для координат или прямоугольника при переходе между проекциями.
PPS: Собственно IProjectionConverter и планироваля для унификации таких операций, но увы там непочатый край работы. Общая идея: по двум IProjection получаем объект, который умеет правильно конвертировать все используемые в САС примитивы туда и обратно правильно со всеми проверками (ну или вообще ничего не делая, если это одинаковые проекции)
|
|
|
(0020189)
|
zed
|
05-09-2021 07:56
|
|
Ошибка возникает из-за того, что допустимыми координатами для Lat в географической проекции в SAS считаются фантастические 180..-180. Все валидации вызываются и проходят без ошибок, но потом вызывается IDatum.CalcDist (при перерисовке Масштабной шкалы), который, естественно, падает с такими входными данными.
Попробовал пофиксить конвертацию Relative2LonLat и обратно, чтобы он ограничил Lat диапазоном 90..-90 - ошибка уходит, но тайлы начинают проецироваться неверно. Т.е. страдает уже отображение тайлов.
Сейчас думаю попробовать поиграться с ограничением относительных координат. Дело в том, что сейчас считается, что для всех проекций относительные координаты валидны в диапазоне 0..1. Может, если сделать кастомную валидацию для географической проекции с допустимыми значениями для Y в диапазоне 0..0.5 (что в итоге ограничит и Lat допустимыми значениями), получится ошибку исправить. |
|
|
(0020190)
|
zed
|
05-09-2021 09:08
|
|
Вроде получилось исправить. Тестовая сборка: https://disk.yandex.ru/d/cAaF1nBPVee_EQ
vdemidov
Патч приложил в аттаче. Так пойдёт? |
|
|
|
> Патч приложил в аттаче. Так пойдёт?
Ну как минимум константа
CMaxLatitude = 85.0511287798066;
фигня. Если уже ограничиваться то 90. А в других типах проекций будут свои ограничения.
А еще изменение форматирования вместе с изменением логики это капец. Невозможно найти где логика менялась. |
|