withinDistance完全不准确

时间:2015-12-08 22:24:37

标签: neo4j cypher distance neo4j-spatial

我在生产中使用neo4j-spatial 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作为第三个参数时,它就可以了。

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

我真的怀疑withinDistance使用的数学公式与hasrsine公式略有不同......
有人可以证实吗?

1 个答案:

答案 0 :(得分:1)

请注意,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