1

1.8.2 用の Neo4j Spatial 0.9 で Neo4j 1.8.2 を使用しています ( http://m2.neo4j.org/content/repositories/releases/org/neo4j/neo4j-spatial/0.9-neo4j-1.8.2/ )

ここからのサンプルコードに従ってくださいhttp://architects.dzone.com/articles/neo4jcypher-finding-football

次のクエリを実行するまで、すべてが正常に機能します。

START n=node:stadiumsLocation('withinDistance:[53.489271,-2.246704, 5.0]') 
RETURN n.name, n.wkt;

n.name がヌルです。グラフを調べたところ、次のデータが見つかりました。

Node[80]{lon:-2.20024,lat:53.483,id:79,gtype:1,bbox:-2.20024,53.483,-2.20024,53.483]}      
Node[168]{lon:-2.29139,lat:53.4631,id:167,gtype:1,bbox:-2.29139,53.4631,-2.29139,53.4631]} 

返されたノード 80 の場合、これは空間レコード用に作成されたノードであり、プロパティ ID:79 が含まれているようです。ノード 79 は、この例の実際のスタジアム レコードです。

IndexProviderTestのソースによると、コメント //これはもう必要ありません。返されるノードはすでに「実」ノードなので // Node node = db.getNodeById( (Long) spatialRecord.getProperty( "id" ) ); この機能は、私が使用しているバージョンでは利用できないことを示しているようです。

私の質問は、他の一致条件で withinDistance を使用するための推奨される方法は何ですか? 他にも満たすべき条件がいくつかありますが、実際のノードを実際に一致させるためのハンドルを取得できないようです。リレーションを明示的に作成する必要がありますか? Cypher を使用せず、コア API を使用してトラバーサルを行いますか? クエリを分割しますか?

4

2 に答える 2

0

https://github.com/neo4j/spatial/blob/2803093d544f56d7dfe8f1d122e049fa73489d8a/src/test/java/org/neo4j/gis/spatial/IndexProviderTest.java#L199で行った拡張テストケースを実行できますか? 場所を見つけ、cypher を使用して次のノードにトラバースする方法を示します。

于 2013-05-28T11:59:51.737 に答える