【问题标题】:Neo4j 3.0.0 + SPATIAL in Cypher密码中的 Neo4j 3.0.0 + SPATIAL
【发布时间】:2016-05-13 21:47:40
【问题描述】:

我已经从源代码编译了最新的 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

但是,我收到“没有为此数据库实例注册名称为 spatial.addPointLayer 的过程。”错误,并且在 jexp 示例中也可以看到相同的调用失败...我不确定我是否太早参加聚会或错过了什么?

【问题讨论】:

  • 你找到这个问题的解决方案了吗?我可以使用“CALL spatial.procedures()”获取程序列表,或者在使用“CALL spatial.laterTypes()”时获取层列表,但是当尝试调用任何返回的程序或记录的程序时,我收到“无法调用过程spatial.layers:原因:java.lang.NoClassDefFoundError:org/geotools/filter/text/cql2/CQ​​LException”

标签: neo4j cypher neo4j-spatial


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在 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
    

    你可以在这个graphgist中找到一个详细的例子:

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

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

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

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

    【讨论】:

    • 感谢 Christophe,我应该澄清一下,我想尝试空间索引。 Neo4j 3.0 中的默认空间功能似乎很慢,所以我希望使用 Neo4j-spatial 来实现索引并尝试通过 Cypher 来实现。
    • 哈好吧,我认为 Craig Taverner 正在这方面工作,我会问他
    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多