1

@NodeEntityで注釈が付けられたクラスNodeAがあります。次のような多くのフィールドがあります。

@Indexed
public Double lat;

@Indexed
public Double lon;

NodeA はすでに緯度経度のフィールドを介して十分な位置情報を保存できることに注意してください。GeoPipelineを使用して空間クエリを実行できるように、タイプ NodeA のノードを空間レイヤーに追加したいと考えています。

  1. NodeA オブジェクトを空間レイヤーに直接追加するにはどうすればよいですか? new Coordinate(13.766, 55.566)現在、空間レイヤーなどにポイントを追加することしかできません。(解決策がない場合、NodeA ノードを対応する Coordinate ノードに関連付けるにはどうすればよいですか?)
  2. ノードを空間インデックスに個別に追加する必要がありますか?

私は使っている:

  • Java in Play!Framework 2.2.2 (更新可能)
  • 埋め込みNeo4j-Spatial 0.13-neo4j-2.0.1 (更新可能)

編集: タイプ NodeA の既存のノードを RTREE_ROOT に接続すると、GeoPipelineはNodeA ノードのbbox プロパティが見つからないと文句を言います。(案の定、NodeA にはbboxプロパティはありませんが、Coordinate タイプの他のノードには存在します)。

4

2 に答える 2

1

ここで解決策を見つけました:
http://www.markhneedham.com/blog/2013/03/10/neo4jcypher-finding-football-stadiums-near-a-city-using-spatial/

ノードを空間インデックスに追加するだけです。ノードには、座標情報を含むwktプロパティが必要です。このインデックスに追加されたすべてのノードは、空間レイヤーにも自動的に追加されます。

IndexProviderTest.java は更新された実装を提供します:
https://github.com/mneedham/spatial/blob/master/src/test/java/org/neo4j/gis/spatial/IndexProviderTest.java#L251

@Test
public void testWithinDistanceIndex() {
Map<String, String> config = SpatialIndexProvider.SIMPLE_WKT_CONFIG;
IndexManager indexMan = db.index();
Index<Node> index = indexMan.forNodes("layer2", config);
Transaction tx = db.beginTx();
Node batman = db.createNode();
String wktPoint = "POINT(41.14 37.88 )";
batman.setProperty("wkt", wktPoint);
String batman1 = "batman";
batman.setProperty("name", batman1);
index.add(batman, "dummy", "value");
Map<String, Object> params = new HashMap<String, Object>();
Double[] point = {37.87, 41.13};
params.put(LayerNodeIndex.POINT_PARAMETER,
        point);
params.put(LayerNodeIndex.DISTANCE_IN_KM_PARAMETER, 2.0);
IndexHits<Node> hits = index.query(
        LayerNodeIndex.WITHIN_DISTANCE_QUERY, params);
tx.success();
tx.finish();
Node node = hits.getSingle();
assertTrue(node.getId() == batman.getId());
assertTrue(node.getProperty("name").equals(batman1));
}
于 2014-07-01T17:21:22.180 に答える
0

ブログNeo4j Spatial と Spring Data を使用して、ゴッホの作品を隣で見つける Neo4j 3.0.1

http://inserpio.wordpress.com/2014/04/03/artworks-spatial-search/

私が探していたものを正確に実行します。@NodeEntity にはwktプロパティが含まれ、ノードはSpatialRepositoryに追加されます。

于 2014-07-04T00:37:03.237 に答える