如何为neo4j,cypher检测多边形内的点



我有一个具有两个属性lat,lon的节点A:A(lat:11,lon:12)和具有1个属性多边形的节点B:B(多边形:[[10,11],[5,7],[1,2],….])。如何检测A在多边形的列表点内,这是B的属性??

现在存在"空间算法";库,其中支持最近的几何点规范";点";。虽然有一个演示文稿解释了这个库是如何工作的,但我还没有找到关于如何使用它的手册,然而,按照我们可以在Github项目中找到的安装库的简单步骤,并审查同一项目的测试,使用它并不是很困难。

具体来说,要检查一个点是否在多边形内,我们必须执行以下操作:

1.首先,我们创建具有属于节点"的几何点阵列的多边形;"地点";,在这种情况下是一个三角形。

WITH
point({x: 0, y: 0}) AS p1,
point({x: 3, y: 3}) AS p2,
point({x: 6, y: 0}) AS p3
CREATE (n:Place{polygon:[p1,p2,p3]}) return n

2.我们将这个数组定义为一个多边形;空间多边形";。

3.接下来我们用函数"1"检查点p1是否在多边形内;spatial.algo.withinPolygon";

MATCH (place) where ID(place)=290416
WITH
point({x: 3, y:10}) AS p1, place,
spatial.polygon(place.polygon) AS polygon RETURN spatial.algo.withinPolygon(p1,polygon)

您可以在此处查看更多信息,例如几何数据索引。

Neo4j spatial对此有支持,请务必阅读其用户手册。

最新更新