2014-06-22 2 views
2

내가 다음 REST API 호출로 Neo4j의 공간 플러그인을 구성 작동하지 않습니다공간 사이퍼 쿼리

POST http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addSimplePointLayer 
{ 
"layer" : "geom", 
"lat" : "lat", 
"lon" : "lon" 
} 

POST http://localhost:7474/db/data/index/node/ 
{ 
    "name" : "geom", 
    "config" : { 
    "provider" : "spatial", 
    "geometry_type" : "point", 
    "lat" : "lat", 
    "lon" : "lon" 
    } 
} 

I의 (a 재생 응용 프로그램에 포함) 다음 스칼라 코드 공간 노드를 추가 :

val mergeStatement = Cypher(
    """ 
    MERGE (location: Location {placesID: {id}, name: {name}, lat: {lat}, lon: {lon}}) 
    RETURN id(location) 
    """ 
).on("id" -> id, "name" -> name, "reference" -> reference, "lat" -> latitude, "lon" -> longitude) 
val nodeID = mergeStatement().head[Long]("id(location)") 

val bodyA = JsObject(Seq(("value",JsString("dummy")),("key",JsString("dummy")),("uri", JsString(Neo4jREST.baseURL + "node/" + nodeID.toString)))) 

WS.url(Neo4jREST.baseURL + "index/node/geom").withHeaders("Accept" -> "application.json").post(bodyA) map { response => 

    val bodyB = JsObject(Seq(("layer",JsString("geom")),("node", JsString(Neo4jREST.baseURL + "node/" + nodeID.toString)))) 

    WS.url(Neo4jREST.baseURL + "ext/SpatialPlugin/graphdb/addNodeToLayer").withHeaders("Accept" -> "application.json").post(bodyB) 
} 

the Graph displayed in the Neo4j browser

모든 것이 잘 보이는

,321 0

반환 (공간 인덱스 자체에서 일부 노드? -이 정상입니다) 어떤 위치 노드하지만

POST http://neo4jurl//db/data/cypher 
{ 
"query" : "start node = node:geom('withinDistance:[8.5,47.3, 10.0]') return node" 
} 

{ 
    "columns" : [ 
    "node" 
    ], 
    "data" : [] 
} 

무엇이 잘못 반환? 뭔가 빠졌습니까?

답변

1

색인으로 레이어를 혼합합니다. 사이퍼 쿼리는 인덱스에서만 작동합니다. 따라서 레이어를 만들지 마십시오. 공간 인덱스를 만들고 공간 인덱스에 노드를 추가하면 사이퍼가이를 볼 수 있습니다.

예를 들어 http://maxdemarzi.com/2014/01/31/neo4j-spatial-part-1/을 참조하십시오.

+0

나는 신선한 데이터베이스로 시작하고 당신의 가이드를 따라 갔다. 이제 모든 것이 작동 중이다! 감사! –