WithinDistance не совсем точно

Я использую neo4j-пространственный 0.13 и Neo4J 2.1.8 в производстве.

У меня есть эти два момента:

Point(48.89205f,2.373335f) 
Point(48.885464f,2.2808545f)

Используя формулу haversine, расстояние между этими двумя точками составляет: 6,8 километров.

Я ожидаю, что этот запрос вернет хотя бы другую точку:

START targetedPersons = node:personslocation("withinDistance:[2.373335,48.89205, 7.0]") 
return targetedPersons.id 

но это не так.

Однако, когда я передаю немного большее значение, как 11.0 в качестве третьего аргумента, это работает.

Зачем? Это известная серьезная ошибка?

Я действительно подозреваю, что математическая формула, используемая insideDistance, немного отличается от формулы haversine...
Кто-нибудь может подтвердить?

1 ответ

Решение

Обратите внимание, что API для withinDistance в Cypher используется порядок lat,lon вместо более общего порядка lon,lat. Убедитесь, что это то, что вы ожидаете. (Я предполагаю, что вы знаете об этом, так как вы изменили порядок в своих примерах)

Я полагаю, что эта функция Neo4j-пространственная используется для расчета расстояния: https://github.com/neo4j-contrib/spatial/blob/769e87e02aa065971a4452a247f08eb0a38cce7c/src/main/java/org/neo4j/gis/spatial/pipes/processing/OrthodromicDistance.java#L77

Другие вопросы по тегам