1

私は C# でロケーション ベースのアプリケーションを作成しており、neo4j と neo4j 空間プラグインを使用して処理しています。空間プラグインとの通信には、現在 neo4jClient でサポートされていないため、REST API を使用する必要があります。今、すべてのノード (位置データ、つまり緯度、経度) を空間レイヤーに追加したいと考えています。そのためには、すべての neo4j ノード ID が必要です。データを介して以前に挿入されたノードのノード ID を取得する方法はありますかこの場合、緯度/経度)、または空間レイヤーにノードを追加するためのより良いアプローチはありますか?

編集:他の挿入と取得にもneo4jClientを使用しています

4

1 に答える 1

0

まず、ノードを ID で空間に追加する以外に方法はありません。

関数 has(n.Property) を使用して、すべてのノード ID を取得する Cypher クエリを作成できます。次に例を示します。

// 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);
 }

実際には、別の REST エンドポイント、addMultipleNodesToLayer がありました。しかし、まだプッシュされていないようです。私はすでにそれについて尋ねており、すぐに利用できるようになることを願っています.

于 2013-12-21T11:25:03.680 に答える