В JTS, когда я делаю геометрию. Буффер (1). Буффер (-1), будет ли полученная геометрия эквивалентна оригиналу?
Вопрос
У меня были проблемы во время пересечения двух геометрий, получая топологию, вероятно, из -за ошибки округления во время операции, а затем я прочитал это исправление и попробовал buffer(0)
На обеих входных геометриях, но все еще без успеха. Тогда я попытался geo.buffer(1).buffer(-1)
И это сработало.
Будут ли эти геометрии эквивалентны исходным?
Решение
Я ничего не знаю о JTS, но в целом это не может быть правдой.
Предположим, у вас есть две формы:
XXX XXX X X XXX XXX XXX
От моего понимания buffer(1)
на обоих приведет примерно к этому:
XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX XXXXX
В настоящее время buffer(-1)
Не сможет получить два разных результата из этих двух форм.
Эффективно а buffer()
Операция теряет информацию, поэтому она не может быть отменена без повторного адаптации этой информации откуда-то еще.
Другие советы
Я не думаю, что эта геометрия будет такой же. По умолчанию буферизация поведения. Функция Добавьте вершины в исходную конфигурацию, и нет никакой гарантии, что те же вершины будут удалены.
Попробуйте сделать очень маленький буфер, A.Buffer (0,00001), например (1/1000 мм, если координаты в метрических системах).
В постгисе некоторые проблемы исправляются с помощью этого.