1

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

我有这两点:

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

使用半正弦公式,这两点之间的距离为:6.8 公里

我希望这个查询至少返回另一点:

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

但事实并非如此。

但是,当我传递一个稍微大一点的值时,比如11.0第三个参数,它就起作用了。

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

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

4

1 回答 1

1

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

于 2015-12-09T00:14:15.563 回答