java:如何将多行字符串转换为多边形

java:如何将多行字符串转换为多边形,java,geotools,Java,Geotools,我得到了一些峡谷区域的两条等高线,但它们没有闭合。很明显,它们确实代表了一个结果区域。我如何通过代码来关闭它们 让我们假设两行字符串类似 LineString lineString1 = geometryFactory.createLineString(new Coordinate[]{ new Coordinate(0, 0), new Coordinate(10, 0) }); LineString lineStrin

我得到了一些峡谷区域的两条等高线,但它们没有闭合。很明显,它们确实代表了一个结果区域。我如何通过代码来关闭它们

让我们假设两行字符串类似

    LineString lineString1 = geometryFactory.createLineString(new Coordinate[]{
            new Coordinate(0, 0),
            new Coordinate(10, 0)
    });

    LineString lineString2 = geometryFactory.createLineString(new Coordinate[]{
            new Coordinate(0, 2),
            new Coordinate(10, 2)
    });

    List<LineString> lineStrings = Arrays.asList(lineString1, lineString2);
    Geometry geometry = geometryFactory.buildGeometry(lineStrings);
    // MULTILINESTRING ((0 0, 10 0), (0 2, 10 2))

    Geometry union = geometry.union();
    // MULTILINESTRING ((0 0, 10 0), (0 2, 10 2))

    LinearRing linearRing = geometryFactory.createLinearRing(geometry.getCoordinates());
    // Exception: Points of LinearRing do not form a closed linestring

非常感谢您的帮助。

您正在寻找的概念是凸包或凸包。@PaulJanssens上面的代码只是为了简化问题,实际结果更像是“Y”形或“X”形,甚至更复杂。凸包只会得到外圈。列出所有不连续性,并将它们与最近的邻居配对?
LINESTRING ((0 0, 10 0, 10 2, 0 2, 0 0))