2016-05-13 78 views
2

我編譯了最新的Neo4j Spatial(neo4j-spatial-0.16-neo4j-3.0.0-server-plugin.jar)從源代碼,並將其放入我的Neo4j 3.0.0插件文件夾。Neo4j 3.0.0 +在Cypher空間

該擴展程序在瀏覽器中列出,我可以做POST調用空間功能。

不過,我相信我也應該能夠使用漂亮的新CALL功能在Neo4j 3.0.0使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示例中失敗......我不確定是否對於聚會太早或缺少什麼東西?

+0

您是否找到解決此問題的方法?我能夠在使用「CALL spatial.procedures()」時獲得程序列表,或者在使用「CALL spatial.laterTypes()」時獲得層列表,但在試圖調用任何返回的過程或文檔化過程時,我收到「無法調用過程'spatial.layers':導致:java.lang.NoClassDefFoundError:org/geotools/filter/text/cql2/CQLException」 – Blake

回答

0

該插件需要位於特定於數據庫的Plugin文件夾中,而不是位於「Neo4j CE 3.0.x/Plugins」文件夾中。

0

在Neo4j 3.0中,對於基本操作,您不需要空間插件。

默認支持pointdistance。此支持假定您將經緯度屬性鍵設置爲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

它提供了一些更多的空間特徵。

+0

謝謝Christophe,我應該澄清,我想嘗試一個空間索引。 Neo4j 3.0中的默認空間功能似乎很慢,所以我希望使用Neo4j-spatial來實現索引並嘗試通過Cypher來實現。 – maly

+0

好的,我認爲Craig Taverner正在那邊工作,我會問他 –