Haripriya
Haripriya

Reputation: 47

Neo4J Spatial within distance returns only exact matches

Added data to the neo4j using the below script. The data gets added successfully but there is problem with the querying. The query works only if i give the exact lat and long of a node in the database. Any other coords results in an empty set.

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'))

example nodes: A 29.6490287781 -98.4621124268 B 30.2107849121 -95.7507781982

START n=node:geom('withinDistance:[29.6490287781, -98.4621124268, 50.0]') RETURN n returns node A but

START n=node:geom('withinDistance:[29.6490287780, -98.4621124260, 50.0]') RETURN n returns empty set

Upvotes: 0

Views: 640

Answers (1)

Haripriya
Haripriya

Reputation: 47

Found a similar question already posted on stackoverflow. The answer had helped. Please find the link below:

Neo4j Spatial return only one node

Thanks!

Upvotes: 1

Related Questions