我最近开始使用neo4j db及其空间插件。
我的数据模型由4个不同的节点组成:建筑物,楼层,房间和设备。所有这些都与关系有关,并且#34; 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 *
输出下一个图表:
这个结果与我想要的结果相似但不完全相同。我需要的是所有相交的建筑,所有的楼层,房间和设备。这个结果只给我的房间和有设备的房间。我不知道如何编写密码以获得我需要的东西。
除此之外,以前的cypher大约需要7秒才能输出结果,那个时间是否跟我实际图形的大小一样正常?对我来说似乎很重要。
谢谢!
答案 0 :(得分:0)
您可以指定可变长度模式:
...
CALL spatial.intersects('geom',polygon) YIELD node
MATCH (node)-[:HAS*0..3]->(Item)
RETURN Item