在neo4j 4 x中進行空間查詢

2021-10-24 11:14:13 字數 1029 閱讀 2754

空間查詢有著廣泛的應用場景,例如,我們開啟手機地圖檢視附近有哪些美食,或者網約車時為使用者分配最近的車輛,一切基於地理座標的查詢,都需要空間查詢的幫助。

neo4j-contrib有乙個著名的空間外掛程式 就能實現上訴功能。

然鵝,,neo4j spatial已經有16個月未更新,neo4j 4.0的發布,大量的api重寫導致neo4j spatial已不可用, 所以我抽取了neo4j spatial中的空間索引部分並適配至neo4j 4.0,擼了乙個4.x版本能用的空間索引出來,希望對大家有幫助~~~~~~~

專案位址

使用示例:

新建空間索引

rtreeindex rtreeindex = rtreeindexmanager.createindex(db, 「index1」, 「geometry」, 64);

為node加入空間索引:

transaction tx = db.begintx();

node node = tx.createnode(testlabel);//新建節點

point geo = wkbreader.read(「point(10 20)」);

byte wkb = wkbwriter.write(geo);//轉為wkb

node.setproperty(「geometry」, wkb);//設定空間字段值,必須為wkb格式

rtreeindex.add(node,tx);//加入索引

//輸入乙個矩形範圍,查詢矩形覆蓋的節點

double bbox = new double;

try (transaction tx = db.begintx()) );

}//輸入乙個geometry,查詢geometry覆蓋的節點

geometry inputgeo = new wktreader().read(「polygon ((11 24, 22 28, 29 15, 11 24))」);

try (transaction tx = db.begintx()) );

}

Neo4j 空間查詢

1.neo4j自帶函式進行簡單計算 neo4j自帶distance point1,point2 函式,返回乙個浮點數,表示同一座標參照系中兩點之間的測地距離,可以使用round函式來進行四捨五入。目前neo4j3.3版本不支援return直接返回point型別,3.4版本可以。節點型別 節點格式 詳...

neo4j查詢優化

1 使用match時,避免使用多個標籤。搜尋使用了2個標籤,同樣的事情竟然訪問了資料庫801次。這是因為cypher執行了額外的 haslabel 過濾器。可以通過使用專門的關係型別來解決這樣的問題,比如為他們新增published和drafted關係,然後用關係來找到指定使用者的published...

neo4j 查詢cypher話語

engine.execute start n node people return n params skip和limit的數字引數12 345mapparams new hashmap params.put s 1 params.put l 1 executionresult result eng...