Neo4j 中空间相交后的子图
sub graph after a spatial intersection in neo4j
我最近开始使用 neo4j db 及其空间插件。
我的数据模型由 4 个不同的节点组成:建筑物、楼层、房间和设备。所有这些都通过 "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
returns 一栋建筑的特殊性:
现在,我要做的是从相交的建筑物中获取子图。这是我的尝试:
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秒才能输出结果,这个时间是否符合我实际图表的大小?对我来说似乎很多。
谢谢!
您可以指定可变长度模式:
...
CALL spatial.intersects('geom',polygon) YIELD node
MATCH (node)-[:HAS*0..3]->(Item)
RETURN Item
我最近开始使用 neo4j db 及其空间插件。
我的数据模型由 4 个不同的节点组成:建筑物、楼层、房间和设备。所有这些都通过 "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
returns 一栋建筑的特殊性:
现在,我要做的是从相交的建筑物中获取子图。这是我的尝试:
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秒才能输出结果,这个时间是否符合我实际图表的大小?对我来说似乎很多。
谢谢!
您可以指定可变长度模式:
...
CALL spatial.intersects('geom',polygon) YIELD node
MATCH (node)-[:HAS*0..3]->(Item)
RETURN Item