0

以下のスクリプトを使用して、neo4j にデータを追加しました。データは正常に追加されますが、クエリに問題があります。クエリは、データベース内のノードの正確な緯度と経度を指定した場合にのみ機能します。その他の座標は空のセットになります。

import csv
import requests
import json

headers = {'content-type': 'application/json'}

# Create geom index
url = "http://localhost:7474/db/data/index/node/"
payload= {
  "name" : "geom",
  "config" : {
    "provider" : "spatial",
    "geometry_type" : "point",
    "lat" : "lat",
    "lon" : "lon"
  }
}

r = requests.post(url, data=json.dumps(payload), headers=headers, auth=('neo4j', 'thanks123'))

with open('/home/haripriya/workspace/ContentMatching/src/main/resources/coords.csv', 'rb') as f:   # read data file
    reader = csv.reader(f, delimiter='\t')
    for row in reader:
    # create airport node
    url = "http://localhost:7474/db/data/node"
    payload = {'name': row[0], 'street': row[1], 'city': row[2], 'state': row[3], 'pin': row[4], 'lon': float(row[5]), 'lat': float(row[6])}
    r = requests.post(url, data=json.dumps(payload), headers=headers, auth=('neo4j', 'thanks123'))
    node = r.json()['self']

    #add node to geom index
    url = "http://localhost:7474/db/data/index/node/geom"
    payload = {'value': 'dummy', 'key': 'dummy', 'uri': node}
    r = requests.post(url, data=json.dumps(payload), headers=headers, auth=('neo4j', 'thanks123'))

    #add node to Spatial index
    url = "http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/addNodeToLayer"
    payload = {'layer': 'geom', 'node': node}
    r = requests.post(url, data=json.dumps(payload), headers=headers, auth=('neo4j', 'thanks123'))

ノードの例: A 29.6490287781 -98.4621124268 B 30.2107849121 -95.7507781982

START n=node:geom('withinDistance:[29.6490287781, -98.4621124268, 50.0]') RETURN n はノード A を返しますが、

START n=node:geom('withinDistance:[29.6490287780, -98.4621124260, 50.0]') RETURN n は空のセットを返します

4

1 に答える 1

1

stackoverflow に既に投稿されている同様の質問が見つかりました。答えは役に立ちました。以下のリンクを参照してください。

Neo4j Spatial は 1 つのノードのみを返します

ありがとう!

于 2015-07-09T09:12:25.643 に答える