Я недавно начал использовать neo4j db и его пространственный плагин.
Моя модель данных состоит из 4 различных узлов: Building, Floor, Room и Device.Все они связаны отношением "HAS".
Узел, добавленный к пространственному слою, - это Building.
Вот как это выглядит в данный момент:
Чтобы получить все Здания, которые пересекаются в данном многоугольнике, я использую следующий шифр
WITH 'POLYGON((-6.342523097991944 39.47879396554205, -6.339948177337647
39.47879396554205, -6.339948177337647 39.478121118127696,
-6.342523097991944 39.478121118127696, -6.342523097991944
39.47879396554205))' as polygon
CALL spatial.intersects('geom',polygon) YIELD node
RETURN node
Особенность, которая возвращает одно здание:
Теперь я пытаюсь получить подграфХолдинг от пересеченного здания.Вот моя попытка:
WITH 'POLYGON((-6.342523097991944 39.47879396554205, -6.339948177337647
39.47879396554205, -6.339948177337647 39.478121118127696, -6.342523097991944
39.478121118127696, -6.342523097991944 39.47879396554205))' as polygon
CALL spatial.intersects('geom',polygon) YIELD node
MATCH (node)-[:HAS]->(Floor)-[:HAS]->(Room)-[:HAS]->(Device)
RETURN *
Это выводит следующий график:
Этот результат похож на то, что я хочу, ноне совсем.Что мне нужно, так это все пересекаемое здание, все его этажи, комнаты и устройства.Этот результат дает только те полы, в которых есть комнаты, и комнаты, в которых есть приборы.Я не знаю, как написать шифр, чтобы получить то, что мне нужно.
Кроме того, предыдущий шифр занимает около 7 секунд для вывода результатов, это время в норме с размером моего фактического графика?Мне кажется, это очень много.
Спасибо!