Проверьте, пересекает ли сам маршрут - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть многочисленные маршруты, каждый из которых определяется своими многочисленными точками, которые, в свою очередь, определяются их соответствующими координатами 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, независимо от того, являются ли маршруты самопересекающимися или нет.Кто-нибудь знает, что я делаю не так?

...