withinDistance 根本不准确

withinDistance not accurate at all

我在生产环境中使用 neo4j-spatial 0.13 和 Neo4J 2.1.8。

我有这两点:

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

使用haversine公式,这两点之间的距离是:6.8公里.

我希望此查询至少 return 另一点:

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

但事实并非如此。

然而,当我传递一个稍大的值时,例如 11.0 作为第三个参数,它起作用了。

为什么?这是一个已知的严重错误吗?

我真的怀疑withinDistance使用的数学公式与haversine公式略有不同...
有人可以确认吗?

请注意,Cypher 中 withinDistance 的 API 使用 lat,lon 的顺序,而不是更常见的 lon,lat 顺序。验证这是您所期望的。 (我假设你已经意识到这一点,因为你已经在你的例子中切换了顺序)

我相信这是 Neo4j-spatial 用于距离计算的函数:https://github.com/neo4j-contrib/spatial/blob/769e87e02aa065971a4452a247f08eb0a38cce7c/src/main/java/org/neo4j/gis/spatial/pipes/processing/OrthodromicDistance.java#L77