背景:该项目涉及在GIS环境中绘制区域。然后,我需要找到一组多边形与另一组多边形的交集。我通过将地图兼容的多边形转换为Polygon2d(http://geom-java.sourceforge.net/api/math/geom2d/polygon/package-summary.html)并使用相交方法来找到相交多边形的顶点列表来实现这一点。
问题:除了两个相同的多边形之间有多个重叠区域时,此方法有效。顶点列表是正确的,但是我需要将列表分成每个单独的多边形。
第一个图像是它的外观,第二个图像是实际生成的图像:
(忽略顶部区域。这是另一个错误的结果)
如何检测并纠正这种情况?
参考方案
您可以使用JTS。
使用LinearRing创建您的多边形
使用intersection方法
简单的代码示例:
// build polygon p1
LinearRing p1 = new GeometryFactory().createLinearRing(new Coordinate[]{new Coordinate(0,0), new Coordinate(0,10), new Coordinate(10,10), new Coordinate(10,0), new Coordinate(0,0)});
// build polygon p2
LinearRing p2 = new GeometryFactory().createLinearRing(new Coordinate[]{new Coordinate(5,5), new Coordinate(15,5), new Coordinate(15,15), new Coordinate(5,15), new Coordinate(5,5)});
// calculate intersecting points