2014-09-24 2 views
0

Используя ядро ​​apo Neo4j Spatial, я смог собрать код, который позволяет мне искать узлы на определенном расстоянии от заданной точки, однако я хотел бы иметь возможность включать узлы на основе их радиуса водосбора.Поиск узлов с Neo4j Spatial

Например, если я нахожусь в любой заданной точке, которая пиццы компании в моем районе или дальше может доставить мне (учитывая их собственный радиус доставки)

Любые идеи о том, как это может быть достигнуто с Neo4j Пространственное?

ответ

1

Вместо того, чтобы моделировать ваши компании Pizza как простые точки на карте, можно ли моделировать радиус их доставки как соответствующую форму геометрии? Это также даст вам больший контроль над формой доставки (например, доставка на остров).

Если вы смоделировали область доставить как WKT Polygon, вы можете выполнить поиск в виде:

START loc = node:idx_bounding_location(withinDistance:[<lat>,<lon>,0.0]) 
MATCH (pz:Pizza:Company)-[:DELIVERY_AREA]->loc 
RETURN pz 

В этом запросе Лат и Лон значения являются местоположение человека, требующего доставки пиццы.

+0

Удивительные ответные ура! Если бы у него был радиус, вы знаете, как лучше всего это моделировать? Можете ли вы сделать WKT Polygon круг? – jamesclarke

+0

TBH Я не знаю, как бы вы построили форму, однако в документации по Neo4J Spatial сказано: «Подобным образом подклассы Geometry: Point, LineString, Polygon и другие - все из JTS», который предлагает все типы геометрии. То, что вы хотели бы, было бы 'CIRCULARSTRING (x1 y1, x2 y2, x3 y3, x4 y4, x1 y1)', я бы подумал, что есть где-то математика, которая позволит вам генерировать координаты из центра точки и радиуса. – JohnMark13

Смежные вопросы