SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003781SAS.Планета[All Projects] Багpublic01-09-2021 19:4406-09-2021 09:48
ReporterVadimK 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityalways
StatusresolvedResolutionfixed 
PlatformWindowsOS7OS VersionHome Basic
Product Version201212 
Target Version211230Fixed in Version211230 
Summary0003781: При выборе проекции "Geographic Lat/Lon" вылазит "Invalid Floatig Point Operation"
DescriptionПри выборе проекции "Geographic Lat/Lon" и дальнейшей работой с картой вылазит ошибка"Invalid Floatig Point Operation".

Происходит это при малом масштабе, когда весь мир на экране (например самый-самый первый запуск программы), либо когда ползаешь по карте в верхних широтах 85+

Ошибка не пропадает, выскакивает постоянно, пока двигаешь мышью. В момент появления диалогового окошка мышка "прилипает" к полю карты и уползти обратно в "нижние" широты получается с трудом. Если закрыть программу в этот момент, то при следующем запуске она "теряет" карту (серое поле), которая выбрана. В меню Вид-Проекция остаётся только один вариант - "Оригинальная (из ZMP)".

Вывести из ступора программу можно, удалив ini-файлы.
Steps To ReproduceПрилагаю архив с файлами (настройки), созданными программой. Этот набор файлов относится к состоянию ступора, в который программа впадает. Распаковать и закинуть в ночную сборку.
TagsNo tags attached.
Attached Fileszip file icon BUG_STATE_SAS.Planet.Nightly.210824.10169.zip [^] (13,929 bytes) 01-09-2021 19:44
png file icon Geographic_Lat-Lon.png [^] (14,517 bytes) 01-09-2021 19:44


png file icon InvalidFloatigPointOperation.png [^] (29,377 bytes) 01-09-2021 19:45


diff file icon 3781.diff [^] (7,283 bytes) 05-09-2021 09:08 [Show Content]

- Relationships
related to 0003065confirmed Создать IProjectionConverter 

-  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 (1158x), aromadov (1x), VadimK (12x), zed (14x), vdemidov (15x), ingener (2x)
Total Views 1202
Last View 21-11-2024 18:12

- 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"



Copyright © 2007 - 2024 SAS.Planet Team