Anonymous | Login | Signup for a new account | 21-11-24 12:52 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 | ||||
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 | Прилагаю архив с файлами (настройки), созданными программой. Этот набор файлов относится к состоянию ступора, в который программа впадает. Распаковать и закинуть в ночную сборку. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | BUG_STATE_SAS.Planet.Nightly.210824.10169.zip [^] (13,929 bytes) 01-09-2021 19:44 Geographic_Lat-Lon.png [^] (14,517 bytes) 01-09-2021 19:44 InvalidFloatigPointOperation.png [^] (29,377 bytes) 01-09-2021 19:45 3781.diff [^] (7,283 bytes) 05-09-2021 09:08 [Show Content] | ||||||||
Relationships | ||||||
|
Notes | |
(0020186) zed (manager) 04-09-2021 09:47 |
Да, есть такая проблема. Эта проекция отличается тем, что карта в ней не квадратная (как для Меркатора на сфере или эллипсоиде), а прямоугольная. Возможно, достаточно вот тут подправить расчёты для Y, чтобы значения не выходили за +-85 градусов, но не уверен, что это не поломает что-нибудь в другом месте... |
(0020188) vdemidov (manager) 04-09-2021 21:19 edited on: 04-09-2021 21:28 |
>Возможно, достаточно вот тут подправить расчёты для Y, чтобы значения не выходили за +-85 градусов, но не уверен, что это не поломает что-нибудь в другом месте... Нет. Там надо разбираться почему именно вылазит ошибка. У всех типов проекций покрытие чуток отличается, так что там есть механизм подгоняющий координты к допустимым при переходах от одной проекциии к другой. Нужно понять почему он не сработал и в чем конкретно. Просто этот тип проекции сильно отличается вот на нем и вылезло, но может вылезти на любой паре разных типов и даже на разных проекциях одного типа с разными параметрами. PS: Скорее всего где-то забыил вызвать Validate для координат или прямоугольника при переходе между проекциями. PPS: Собственно IProjectionConverter и планироваля для унификации таких операций, но увы там непочатый край работы. Общая идея: по двум IProjection получаем объект, который умеет правильно конвертировать все используемые в САС примитивы туда и обратно правильно со всеми проверками (ну или вообще ничего не делая, если это одинаковые проекции) |
(0020189) zed (manager) 05-09-2021 07:56 |
Ошибка возникает из-за того, что допустимыми координатами для Lat в географической проекции в SAS считаются фантастические 180..-180. Все валидации вызываются и проходят без ошибок, но потом вызывается IDatum.CalcDist (при перерисовке Масштабной шкалы), который, естественно, падает с такими входными данными. Попробовал пофиксить конвертацию Relative2LonLat и обратно, чтобы он ограничил Lat диапазоном 90..-90 - ошибка уходит, но тайлы начинают проецироваться неверно. Т.е. страдает уже отображение тайлов. Сейчас думаю попробовать поиграться с ограничением относительных координат. Дело в том, что сейчас считается, что для всех проекций относительные координаты валидны в диапазоне 0..1. Может, если сделать кастомную валидацию для географической проекции с допустимыми значениями для Y в диапазоне 0..0.5 (что в итоге ограничит и Lat допустимыми значениями), получится ошибку исправить. |
(0020190) zed (manager) 05-09-2021 09:08 |
Вроде получилось исправить. Тестовая сборка: https://disk.yandex.ru/d/cAaF1nBPVee_EQ vdemidov Патч приложил в аттаче. Так пойдёт? |
(0020191) vdemidov (manager) 06-09-2021 08:21 |
> Патч приложил в аттаче. Так пойдёт? Ну как минимум константа CMaxLatitude = 85.0511287798066; фигня. Если уже ограничиваться то 90. А в других типах проекций будут свои ограничения. А еще изменение форматирования вместе с изменением логики это капец. Невозможно найти где логика менялась. |
Users who viewed this issue | |
User List | Anonymous (1157x), aromadov (1x), VadimK (12x), zed (14x), vdemidov (15x), ingener (2x) |
Total Views | 1201 |
Last View | 21-11-2024 12:52 |
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 | View Revisions |
04-09-2021 21:25 | vdemidov | Relationship added | related to 0003065 |
04-09-2021 21:28 | vdemidov | Note Edited: 0020188 | View Revisions |
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" |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |