2014-09-24 139 views
0

使用Neo4j Spatial核心java api,我已經能夠將代碼放在一起,它允許我在給定點的特定距離內查找節點,但是,我希望能夠包含節點根據他們的流域半徑。使用Neo4j空間查找節點

例如,如果我定位在任何給定的點,這比薩餅公司在我的本地區域或更遠的地方能提供給我(給自己輸送半徑)

如何,這可能與Neo4j的實現任何想法空間?

回答

1

您可以將您的比薩公司建模爲地圖上的簡單點,而不是將其投放半徑建模爲相關的幾何圖形?這樣可以更好地控制交付形狀(例如,不交付給島)。

如果建模交付面積爲WKT多邊形,就可以執行形式的搜索:

START loc = node:idx_bounding_location(withinDistance:[<lat>,<lon>,0.0]) 
MATCH (pz:Pizza:Company)-[:DELIVERY_AREA]->loc 
RETURN pz 

在此查詢的緯度和經度值是需要比薩外賣的人的位置。

+0

真棒回答歡呼!如果它有一個半徑,你知道如何最好地建模嗎?你可以製作一個WKT多邊形嗎? – jamesclarke 2014-09-24 18:19:14

+0

TBH我不知道如何構建形狀,但是Neo4J Spatial文檔中說'同樣,Geometry:Point,LineString,Polygon和其他的子類都來自JTS',這表明所有幾何類型都受支持。你想要的將是'CIRCULARSTRING(x1 y1,x2 y2,x3 y3,x4 y4,x1 y1)',我認爲有些數學可以讓你從中心生成座標點和半徑。 – JohnMark13 2014-09-24 18:39:29

相關問題