2013-12-13 86 views
1

我正在c#中製作一個基於位置的應用程序,並且我使用neo4j和neo4j空間插件來處理它。爲了與空間插件通信,我必須使用它的REST API,因爲neo4jClient目前不支持它。現在我想要add all the nodes (with location data ie lat, lon) to spatial layer,爲此我需要所有neo4j節點ID,我的問題是否有辦法通過它的數據(在這種情況下,它的緯度/經度)獲得先前插入節點的節點ID,還是有更好的方法接受添加節點到空間層?使用REST/neo4jclient在c#中添加節點到空間層

編輯: 我還使用neo4jClient其他插入和檢索

回答

0

首先,沒有比其ID添加節點空間的另一種方法。

你可以寫一個暗號查詢,通過使用函數(n.Property)檢索所有節點ID,例如:

// cypher-query to retrieve node Ids 
client.Cypher 
    .Match("(n:SpatialIndex)") 
    .Where("has(n.lat)") 
    .AndWhere("has(n.lon)") 
    .Return(node => node.Id()); 

// add existing node to SimplePoint-Layer 
public void AddNodeToLayer(long nodeId, string layer) 
{ 
    string URINode = string.Format("{0}node/{1}",_client.BaseUrl, nodeId); 
    string json = string.Format("{{\"layer\":\"{0}\", \"node\":\"{1}\"}}", layer, URINode); 

    string URIAdd = string.Format("{0}ext/SpatialPlugin/graphdb/addNodeToLayer", _client.BaseUrl); 
    HTTPCommand(new Uri(URIAdd), json); 
} 

NOTE:事實上有一個其他REST端點:addMultipleNodesToLayer。但似乎它還沒推到。我已經問過這個問題,希望很快就可以實現。

相關問題