Neo4j 3.0.0 + Cypher 空间

Neo4j 3.0.0 + SPATIAL in Cypher

我已经从源代码编译了最新的 Neo4j Spatial (neo4j-spatial-0.16-neo4j-3.0.0-server-plugin.jar) 并将其放入我的 Neo4j 3.0.0 插件文件夹中。

浏览器中列出了扩展程序,我可以 POST 调用空间功能。

不过,我相信我也应该能够使用 Neo4j 3.0.0 中漂亮的新 CALL 功能来进行 Cypher 调用,如下所示:

CALL spatial.addPointLayer('cities');

正如 Stefan 在这里的更新所暗示的:

How do I create a spacial index in neo4j using only cypher?

此处显示:

http://jexp.github.io/graphgist/idx?dropbox-14493611%2Fcypher_spatial.adoc

但是,我收到 "There is no procedure with the name spatial.addPointLayer registered for this database instance." 错误,并且在 jexp 示例中也可以看到相同的调用失败...我不确定我是参加聚会太早了还是错过了什么东西?

插件需要位于特定于数据库的插件文件夹中,而不是 "Neo4j CE 3.0.x/Plugins" 文件夹中。

在 Neo4j 3.0 中,对于基本操作,您不需要空间插件。

默认支持 pointdistance。此支持假定您将 lat/lon 属性 键设置为 latitudelongitude.

您可以使用它们来计算两个节点之间的距离,例如:

MATCH (a:City {name:'London'}), (b:City {name:'Barcelona'})
RETURN distance(point(a), point(b))/1000 as dist

您可以在这个图形师中找到详细示例:

http://gist.asciidoctor.org/?dropbox-14493611%2Fcypher_spatial.adoc#_spatial_procedures

其次,在Neo4j 3.0中出现了存储过程,这里是neo4j官方支持的一套过程:

https://github.com/neo4j-contrib/neo4j-apoc-procedures

它提供了更多的空间特征。