问题描述
我正在尝试使用 JTS 来判断一个多边形是否包含另一个多边形。
我这里有资源。如何使用语法?这给了我错误。下一步是应用 contains。如果有人有 JTS 方面的经验,那会很有帮助。
https://locationtech.github.io/jts/javadoc/org/locationtech/jts/geom/Polygon.html
polygon item1 = ((0 0,1000 0,1000 1000,0 1000,0 0))
polygon item2 = ((500 500,1000 500,600 600,500 600,500 500))
解决方法
您不能像那样创建多边形。 JTS 是一个相当沉重的框架,所以你需要走完整的路线。
- 一切都从
GeometryFactory
docs 开始。它负责创建所有几何图形,这是必要的,因为它考虑了一些事情,例如PrecisionModel
。 - 您需要了解几何的层次结构,
Polygon
由一行描述 -LineRig
或LineString
(差异超出了本问题的范围)。 - 您需要意识到每条线都由点组成,可以用
Point
或Coordinate
来描述。因此,如果您想创建一个Polygon
代码如下所示:
GeometryFactory factory = new GeometryFactory(); //default
Coordinate[] coordinates1 = {
new CoordinateXY(0,0),new CoordinateXY(1000,1000),new CoordinateXY(0,0)
};
Coordinate[] coordinates2 = {
new CoordinateXY(500,500),new CoordinateXY(600,600),new CoordinateXY(500,500)
};
LinearRing linearRing1 = factory.createLinearRing(coordinates1);
LinearRing linearRing2 = factory.createLinearRing(coordinates2);
Polygon polygon1 = factory.createPolygon(linearRing1);
Polygon polygon2 = factory.createPolygon(linearRing2);
assertTrue(polygon1.contains(polygon2));