Поздний ответ, но, возможно, кто-то тоже хочет это знать.
Предполагается, что у вас есть следующая геометрия:
GEOMETRYCOLLECTION (POLYGON ((100 150, 100 340, 350 340, 350 150, 100 150)),
LINESTRING (220 340, 220 150)
Вы можете попробовать объединить линию этой геометрической коллекции, результат должен быть:
MULTILINESTRING ((220 340, 220 150),
(100 150, 100 340, 350 340, 350 150, 100 150))
Отсюда унарный союз, результат:
MULTILINESTRING ((220 340, 220 150),
(100 150, 100 340, 220 340),
(220 340, 350 340, 350 150, 220 150),
(220 150, 100 150))
Наконец, вы можете использовать полигонизатор и получить два полигона:
GEOMETRYCOLLECTION (POLYGON ((220 150, 220 340, 350 340, 350 150, 220 150)),
ПОЛИГОН ((100 150, 100 340, 220 340, 220 150, 100 150)))
Таким образом, чтобы заставить полигонизатор работать, вы должны дать ему одну строку в качестве входных данных, а не целый полигон.
Проверено в JTS testbuilder