我有一个多边形和一个线段,其端点位于多边形的两侧。将多边形拆分为两个多边形的最简单方法是什么。 (我正在使用jts包)。
我尝试过使用polygonizer,但我认为我没有正确使用它,因为它似乎没有用。
谢谢,
答案 0 :(得分:2)
迟到的答案,但也许有人也想知道这一点。
假设你有以下几何:
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)),
POLYGON((100 150,100 340,220 340,220 150,100 150)))
因此,要使多边形工具正常工作,您必须将单个线串作为输入而不是整个多边形。
在JTS testbuilder中测试
答案 1 :(得分:1)
我做过类似的事情,让线条分段成为一个非常大的多边形,然后与两个多边形相交。你可以通过在segement的每一端添加segements来制作大的多边形,直到你在多边形的边界之外,然后添加两个超过原始多边形边界的90度的segements,然后用最后的两个段链接最后一个部分,用于制作一个大的多边形,将原始的poylgon沿着原始的segement分开并围绕原始多边形的其余部分。这相当痛苦但有效。 吉姆