Возьмем недопустимый многоугольник POLYGON((0 100, 100 100, 0 0, 100 0, 0 100))
— форму таймера яйца с необъявленной точкой пересечения.
Во многих инструкциях говорится, что JTS может создать действительную версию этого, используя метод buffer
:
Geometry input = new WKTReader().read("POLYGON((0 100, 100 100, 0 0, 100 0, 0 100))");
Geometry output = geom.buffer(0);
return output;
Однако это приводит к выводу POLYGON ((0 100, 100 100, 50 50, 0 100))
, где часть многоугольника потеряна:
Есть ли способ заставить JTS проверять полигоны таким образом, чтобы он выдавал результат MULTIPOLYGON(((0 100, 100 100, 50 50, 0 100)), ((0 0, 100 0, 50 50, 0 0)))
для заданного ввода?
Это похоже на то, что должно быть встроено в API (возможно, такое поведение является ошибкой) - я что-то пропустил?
Спасибо.