Я использую этот код для поиска ближайших мест к заданной точке в формате wgs84 (переменная co)
for(Node n : geomPoints){
ExecutionResult result = engine.execute("START a=node(" + n.getId() + ") "+
"MATCH a-[:FIRST_NODE]->()-[:NEXT*0..]->()-[:NODE]->b "+
"RETURN b");
Iterator<Node> nodes = result.columnAs("b");
while(nodes.hasNext()){
Node nodesInGeom = nodes.next();
Float lon = Float.parseFloat(nodesInGeom.getProperty("lon").toString());
Float lat = Float.parseFloat(nodesInGeom.getProperty("lat").toString());
Coordinate coo = new Coordinate(lon,lat);
if(co.distance(coo)<distance) {
distance = co.distance(coo);
nearestNabour = nodesInGeom;
}
}
Итак, важной частью этого кода является эта часть
co.distance(coo)
потому что мне сказали, что эта функция использует евклидово расстояние, а не расстояние, которое мне нужно для формата wgs84
Итак, мой вопрос: есть ли функция в neo4j satial, которая возвращает правильное расстояние??
Большое спасибо