Мы разрабатываем проект в Neo4j с пространственным плагином, но мы не можем фильтровать по метке узлов, полученных после вызова.
Запрос, который мы хотим реализовать, должен соединить 2 узла типа «Улица», которые находятся в пределах 0,1 от расстояния. Следующий код работает с каждым узлом, но мы не можем использовать фильтр.
MATCH (s1:Street) with s1
CALL spatial.withinDistance('streets',{latitude: s1.latitude, longitude: s1.longitude},0.1)
yield node as s2
WHERE s1.id<s2.id AND s2
CREATE (s1)-[:NEXT_TO]->(s2)
RETURN s1,s2
Очевидно, что здесь отношение NEXT_TO строится между каждым узлом (даже не улицей), который находится вблизи s1. Мы не знаем, как фильтровать на s2, чтобы ловить только узлы с меткой Street.
Мы перепробовали много решений, но ни одно из них не сработало.
Вы можете нам помочь?
Спасибо
РЕДАКТИРОВАТЬ:
Решение
MATCH (s1:Street) with s1
CALL spatial.withinDistance('layer',{latitude: s1.latitude, longitude: s1.longitude},0.1)
yield node as s2
WHERE s1.id<s2.id AND 'Street' in labels(s2)
CREATE (s1)-[:NEXT_TO]->(s2)
return s1,s2
Я просто забыл загрузить узлы улиц, когда загрузил все остальные узлы, моя ошибка