Геометрия, которую я создаю из области с ShapeReader.read
, каким-то образом включает в себя «дыры» этой области, хотя для нее было задано WIND_EVEN_ODD
правило намотки.
Как мне остановить его? включая отверстия?
Вот простой пример с полым прямоугольником:
import org.locationtech.jts.awt.ShapeReader;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
import org.locationtech.jts.geom.Point;
import java.awt.geom.Path2D;
import java.awt.Rectangle;
import java.awt.geom.Area;
private final GeometryFactory geometryFactory = new GeometryFactory();
private ShapeReader reader = new ShapeReader(geometryFactory);
Rectangle rectBig = new Rectangle(0, 0, 100, 100);
Rectangle rectSmall = new Rectangle(25, 25, 50, 50);
// Subtract small from large to get hollow rectangle
Area area = new Area(rectBig);
area.subtract(new Area(rectSmall));
// Convert area to geometry
Path2D.Double path = new Path2D.Double(area);
path.setWindingRule(PathIterator.WIND_EVEN_ODD);
Geometry geometry = reader.read(path.getPathIterator(null));
// Center point of the hole of the rectangle
Coordinate coordinate = new Coordinate(50, 50);
Point center = geometryFactory.createPoint(coordinate);
// Returns true instead of false
System.out.println("Center intersects hole? " + geometry.intersects(center));