Сторінка 1 з 3

Округлення координат і виникаючі при цьому проблеми

Додано: 23 лютого 2012, 17:00
NickS
Тут можно обсуждать об округлении координат, площадей и т.д.

Всегда мы работаем с какой-то точность, иногда мы её изменяем. Часто из-за этого получаеются несоответсвия площадей и различные результаты. Мы забываем что такое точность и что она очень сильно влияет на конечный результат. А много вообще таких кадров, которые работают в геодезии и даже курса метматики не знают! :shock: А слушать никого не хотят, говоря: "Программа и компьютер же должны посчитать точно, почему он не точно посчитал?"

Вот для таких непоняток и для просветления народа и создана эта тема. :)

Re: Округление координат и возникающие с этим проблемы

Додано: 23 лютого 2012, 17:04
NickS
Виды округлений

Стандарт IEEE 754 описывает семь методов округления чисел:
  • round-down - усечение, округление по направлению к нулю,
  • round-half-up - арифметическое округление (если отбрасываемые цифры больше либо равны 0.5, происходит округление вверх (от нуля), иначе цифры просто отбрасываются),
  • round-half-even - банковское округление, (если отбрасываемые цифры больше 0.5, происходит округление вверх (от нуля), если меньше 0.5 - цифры отбрасываются, если отбрасываемая часть равна 0.5, то округление происходит в зависимости от четности предпоследней цифры),
  • round-ceiling - округление к плюс бесконечности,
  • round-floor - округление к минус бесконечности,
  • round-half-down - подобно арифметическому (round-half-up), пятерка округляется вниз,
  • round-up - округление от нуля.

Первые пять методов являются, согласно стандарту, обязательными к реализации, а последние два - опциональными.

Тестовая выборка, однозначно различающая методы

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

Рассмотрим следующую таблицу (в предположении, что округления производились до 1 знака после запятой):

Код: Виділити все

округления       0.35         -0.25       -0.41       -0.59

round_down       0,3          -0,2        -0,4        -0,5
round_up         0,4          -0,3        -0,5        -0,6
round_half_up    0,4          -0,3        -0,4        -0,6
round_half_even  0,4          -0,2        -0,4        -0,6
round_ceiling    0,4          -0,2        -0,4        -0,5
round_floor      0,3          -0,3        -0,5        -0,6
round_half_down  0,3          -0,2        -0,4        -0,6


(с) По материалам http://altsoph.livejournal.com/111735.html

Re: Округление координат и возникающие с этим проблемы

Додано: 24 лютого 2012, 11:46
doslidnik
А яке ви використовуєте округлення? І чи будь-де використовуєте однакове?

Re: Округление координат и возникающие с этим проблемы

Додано: 28 лютого 2012, 12:10
NickS
doslidnik писав:А яке ви використовуєте округлення? І чи будь-де використовуєте однакове?

На даний момент, ми розробили власну функцію заокруглення по типу бухгалтерського (ще називається банківським, бо саме там воно вперше почало використовуватись, round-half-even), так як він максимально підходить для роботи з площами.
Якщо цифра справа, перед якою потрібно заокруглити, менше 5, то ліва цифра не змінюється, якщо цифра справа більше 5, то ліва цифра збільшується на одиницю. Якщо цифра справа рівна 5, а ліва - парна - не змінюється, якщо ліва - не парна, то збільшується на одиницю. Також враховується друга права цифра, для компенсації.
Для кращого розуміння цього заокруглення, дивіться таблицю, де заокруглення йде до цілого числа:

Код: Виділити все

0.5  - 0
0.55 - 1
1.5  - 2
1.55 - 2
2.5  - 2
2.55 - 3
3.5  - 4
3.55 - 4
4.5  - 4
4.55 - 5
5.5  - 6
5.55 - 6
6.5  - 6
6.55 - 7
7.5  - 8
7.55 - 8
8.5  - 8
8.55 - 9
9.5  - 10
9.55 - 10


Рекомендую скачати бета-версію 6.1.4.3 і поекспериментувати. В подальшому, дане заокруглення буде, починаючи з версії 6.1.4.3. Якщо побачите якісь неточності в заокругленні, прохання висилати приклади цифр, або архіви ділянок з зауваженнями відносно заокруглення. Але покищо тести ніяких проблем не виявили.

Re: Округление координат и возникающие с этим проблемы

Додано: 01 березня 2012, 11:01
doslidnik
NickS писав:На даний момент, ми розробили власну функцію заокруглення

але вона числа чомусь округлює по різному число до 2-х знаків "4264962.7250"=4264962.72(по Вашим правилам) та "4188675.7250"=4188675.73(не по правилу).

Re: Округление координат и возникающие с этим проблемы

Додано: 01 березня 2012, 11:58
NickS
doslidnik писав:
NickS писав:На даний момент, ми розробили власну функцію заокруглення

але вона числа чомусь округлює по різному число до 2-х знаків "4264962.7250"=4264962.72(по Вашим правилам) та "4188675.7250"=4188675.73(не по правилу).

Ще раз прочитайте моє повідомлення і уважно!

Re: Округление координат и возникающие с этим проблемы

Додано: 21 березня 2012, 09:40
ozkc
NickS писав:На даний момент, ми розробили власну функцію заокруглення по типу бухгалтерського (ще називається банківським, бо саме там воно вперше почало використовуватись, round-half-even), так як він максимально підходить для роботи з площами.


Это ваша личное желание выбрать именно этот метод? Или на то есть законадательное объяснение :?:

Re: Округление координат и возникающие с этим проблемы

Додано: 21 березня 2012, 10:33
NickS
ozkc писав:
NickS писав:На даний момент, ми розробили власну функцію заокруглення по типу бухгалтерського (ще називається банківським, бо саме там воно вперше почало використовуватись, round-half-even), так як він максимально підходить для роботи з площами.


Это ваша личное желание выбрать именно этот метод? Или на то есть законадательное объяснение :?:

Законодательного объяснения на такие вещи нету, если найдёте - пожалуйста, сообщите об этом. Но данный метод используется как раз для подсчётов площадей, потому что, при суммировании округлённых значений площадей, он компенсирует погрешность и оставляет её одинаковой, а остальные методы, при суммировании, чем большее количество слагаемых, тем больше погрешность.

Почему так, например, почитайте статью.
http://www.buhgalteria.com.ua/Hit.html?id=1985

Re: Округление координат и возникающие с этим проблемы

Додано: 09 квітня 2012, 16:59
Vaho
Наша организация столкнулась с проблемой округления координат. Дело в том, что геодезические обмеры мы считаем в программном продукте "Digitals", а он выдает координаты с точностью до 1-го миллиметра (база в Госкомземе ведется уже несколько лет с "Digitals" соответственно координаты обменных файлов до 1-го миллиметра). Картина выглядит следующим образом: участки которые мы создаем сейчас в "Digitals" садятся в ГИС6 с микро-накладками и в Госкомземе на нас незжают типа мы "притарабанили" участки с накладками (они проверяют через F7). Как с этим бороться и вообще есть ли смысл с этим бороться????

Re: Округление координат и возникающие с этим проблемы

Додано: 09 квітня 2012, 18:06
NickS
Vaho писав:Наша организация столкнулась с проблемой округления координат. Дело в том, что геодезические обмеры мы считаем в программном продукте "Digitals", а он выдает координаты с точностью до 1-го миллиметра (база в Госкомземе ведется уже несколько лет с "Digitals" соответственно координаты обменных файлов до 1-го миллиметра). Картина выглядит следующим образом: участки которые мы создаем сейчас в "Digitals" садятся в ГИС6 с микро-накладками и в Госкомземе на нас незжают типа мы "притарабанили" участки с накладками (они проверяют через F7). Как с этим бороться и вообще есть ли смысл с этим бороться????

Проблема лишь в том, что Вы и Госкомзем не могут понять что такое округление и как с ним работать. :)
Если диджиталс выдаёт с точностью до 3 знаков, тогда либо и в ГИС6 и в Госкомземе нужно настроить до 3 знаков, либо после импорта физически округлять (через преобразование координат).

Представьте себе ситуацию: есть два человека, которым дают команду пройти одно и тоже расстояние, только одному говорят с точностью до метра, а второму с точностью до километра. Имеем расстояние 2450 м.
Первому человеку говорят: "Пройдите 2450 м", а второму: "Пройдите 2 км" (2450 м ≈ 2 км)
Внимание, вопрос: пройдут ли два человека одинаковое расстояние? И почему, ведь начальное условие было одинаково для всех? Кто в этом виноват и как с этим бороться?
Если и на данном примере не понятно почему такие проблемы происходят, я тогда не знаю что посоветовать. :facepalm: