我有许多路线,每条路线都由其许多点定义,而这些点又由其相应的Gcs坐标(纬度,经度)定义。我试图找到一种有效的Java实现来确定哪些行是自相交的,因此我被引荐到JTS。
这就是我想要做的:
public boolean intersects(List<GcsNode> nodes) {
Coordinate[] sequence = new Coordinate[route.size()];
for (int i = 0; i < nodes.size(); i++) {
sequence[i] = toCartesian(nodes.get(i).latitude(), nodes.get(i).longitude());
}
GeometryFactory factory = new GeometryFactory();
return !factory.createLineString(sequence).isSimple();
}
public static final double DIST = 6371.0;
public Coordinate toCartesian(double latitude, double longitude) {
return new Coordinate(DIST * Math.cos(latitude) * Math.cos(longitude),
DIST * Math.cos(latitude) * Math.sin(longitude));
}
不幸的是,无论路线是否自交,intersects方法始终返回true。有人知道我在做什么错吗?