Tôi có một lớp và chỉ mục không gian được cấu hình đúng và có thể truy vấn thành công một nút bằng cách sử dụng lệnh gọi API findGeometriesWithinDistance REST.Truy vấn Cypher không gian trong "Neo" không gian trả về rỗng trong khi truy vấn REST trả về dữ liệu
POST /db/data/ext/SpatialPlugin/graphdb/findGeometriesWithinDistance {"layer":"geom","pointX":15.0,"pointY":60.0,"distanceInKm":100.0}
Tuy nhiên, khi truy vấn sử dụng cypher, tôi không nhận được kết quả (Tôi đã cố gắng đảo ngược thứ tự của 60,0 và 15,0 mà không may mắn):
START n=node:geom('withinDistance:[60.0, 15.0, 500.0]') return n;
Cyper trả:
==> +---+
==> | n |
==> +---+
==> +---+
==> 0 row
==>
==> 13 ms
REST:
200 OK
==> [ {
==> "paged_traverse" : "http://localhost:7474/db/data/node/14472/paged/traverse/{returnType}{?pageSize,leaseTime}",
==> "outgoing_relationships" : "http://localhost:7474/db/data/node/14472/relationships/out",
==> "data" : {
==> "lon" : 15.2,
==> "bbox" : [ 15.2, 60.1, 15.2, 60.1 ],
==> "RaceName" : "Parador Es Muy Caliente",
==> "lat" : 60.1,
==> "gtype" : 1
==> },
==> "all_typed_relationships" : "http://localhost:7474/db/data/node/14472/relationships/all/{-list|&|types}",
==> "traverse" : "http://localhost:7474/db/data/node/14472/traverse/{returnType}",
==> "self" : "http://localhost:7474/db/data/node/14472",
==> "all_relationships" : "http://localhost:7474/db/data/node/14472/relationships/all",
==> "property" : "http://localhost:7474/db/data/node/14472/properties/{key}",
==> "properties" : "http://localhost:7474/db/data/node/14472/properties",
==> "outgoing_typed_relationships" : "http://localhost:7474/db/data/node/14472/relationships/out/{-list|&|types}",
==> "incoming_relationships" : "http://localhost:7474/db/data/node/14472/relationships/in",
==> "incoming_typed_relationships" : "http://localhost:7474/db/data/node/14472/relationships/in/{-list|&|types}",
==> "extensions" : {
==> },
==> "create_relationship" : "http://localhost:7474/db/data/node/14472/relationships"
==> } ]
REST của cuộc gọi đến tái sản xuất: Create Layer:
POST /db/data/ext/SpatialPlugin/graphdb/addSimplePointLayer { "layer":"geom", "lat":"lat", "lon":"lon" }
Tạo Index:
POST /db/data/index/node/ {"name":"geom", "config":{"provider":"spatial", "geometry_type":"point","lat":"lat","lon":"lon"}}
Tạo Node:
POST /db/data/node {"lat":60.2,"lon":15.1,"RaceName":"Parador Es Muy Caliente"}
(Để đối phó, kiểm tra "tự" và tìm nodeID)
Lập chỉ mục nút:
POST /db/data/ext/SpatialPlugin/graphdb/addNodeToLayer {"layer":"geom", "node":"http://localhost:7474/db/data/node/###NEW_NODE_ID###"}
Find:
POST /db/data/ext/SpatialPlugin/graphdb/findGeometriesWithinDistance {"layer":"geom","pointX":15.0,"pointY":60.0,"distanceInKm":100.0}
Cảm ơn sự giúp đỡ của bạn Peter - như bạn đã chỉ ra trong email, giải pháp chính xác là thêm nút vào chỉ mục, thay vì chỉ là lớp: 'POST/db/data/index/node/geom {" value ":" dummy "," key ":" dummy "," uri ":" http: // localhost: 7474/db/data/node/1234 "}' Khi tôi đã làm điều đó, truy vấn Cypher hoạt động hoàn hảo: 'start n = node: Địa điểm ('withinDistance: [15.0, 60.0, 100.0]') return n;' Không chắc chắn làm thế nào tôi bỏ lỡ trong thử nghiệm, nhưng cảm ơn một lần nữa cho chỉ nó ra. –
Troy, Sau khi thảo luận với Michael, bạn có thể tìm kiếm qua Cypher nếu bạn thêm nút đó vào INDEX, không chỉ cho lớp đó. Trong trường hợp đó, bạn sẽ có thể tìm thấy nút của bạn với Cypher vì có thông tin phù hợp được tạo trong quá trình lập chỉ mục. Chúng tôi đang dự tính thêm cấu hình chỉ mục bao gồm trường hợp sử dụng bạn hiện có, nhưng bạn sẽ ổn nếu bạn trước khi tìm kiếm Cypher của bạn thêm nút vào chỉ mục, xem https://github.com/neo4j/spatial/ blob/master/src/test/java/org/neo4j/gis/không gian/SpatialPluginFunctionalTest.java # L268 /peter –
Peter - Một câu hỏi mà tôi có là tôi có thực sự cần thêm nút vào lớp hay không . Dường như truy vấn không gian hoạt động có hoặc không có bước đó. Bạn có thể cho tôi hay chỉ cho tôi bất kỳ thông tin chi tiết nào về điều đó không? Troy –