вторник, 10 апреля 2018 г.

Про минус единицу как незначимое число.

По стране шагают паводки и мы активно работаем по прогнозированию подтоплений по самым различным районам. В модуле моделирования распространения подтоплений (для МЧС) в функции проверки залива пиксела я использовал магическое число порога подтопления по высотам -1.0. И вот тут...

Функция выполняла расчет в пределах блока пикселов в зависимости от высоты исходного пиксела и прописывала порог залива, выше которого от этой точки подъем не выполнять. Вызвавшая функция проверяла, что если порог не превышает этого -1.0, то значит залива не было, или был залив пикселов от другой точки, и дальнейшие рекурсивные поиски соседних блоков не надо выполнять. В обычной практике программирования значения -1.0 или просто отрицательные передаются как означающие "нет данных, это специальный код". Вот тут я и попался.

В Астраханской области в пойме Волги и вообще на Каспии отрицательные высоты по балтийской системе высот это норма. Там пойма Волги примерно около -22 метров. Пришлось заменить на другое специальное магическое число -1000000.0. Ну не найдется на нашей планете высоты с таким понижением ))))

Век живи - век учись.

Комментариев нет:

Отправить комментарий