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
我在生产环境中使用 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