искать все узлы в пределах определенного радиуса с широтой и долготой в neo4j - PullRequest
0 голосов
/ 22 апреля 2020

предположим, что геолокация пользователей включена. На основании текущего местоположения (широта / долгота) он / она дает запрос, чтобы все узлы от 0 до 100 км, как это сделать

1 Ответ

1 голос
/ 22 апреля 2020

В Neo4j 3.4.x мы ввели пространственные типы данных и индексацию пространственных свойств.

Вам следует просмотреть разделы в документации по пространственным типам и пространственным функциям .

Предположим, что вы используете систему координат WGS-84 (CRS) для сохранения координат долготы / широты в качестве свойств точек на узлах.

Пример установки свойства точек на узле:

CREATE (l:Location {coords:point({ longitude: 56.7, latitude: 12.78 })})

У вас должен быть индекс: Местоположение (координаты), чтобы можно было использовать индекс для быстрого поиска по радиусу расстояния .

Пример, предоставил входные данные $ longitude и $ latitude и $ radius для нахождения всех: местоположений в данном $ radiusKM:

MATCH (l:Location)
WHERE distance(l.coords, point({longitude:$longitude, latitude:$latitude})) <= $radiusKM * 1000
RETURN l
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...