如何在spring数据neo4j spatial中表示地理空间圆形或多边形区域?

如何在spring数据neo4j spatial中表示地理空间圆形或多边形区域?,neo4j,spring-data-neo4j,neo4j-spatial,Neo4j,Spring Data Neo4j,Neo4j Spatial,我需要在地图上表示一个地方的圆形或多边形区域。地图上任何地方都不是一个单独的地方。这是一个多边形区域。目前我拥有的是单索引wkt字段,具有单点lon lat表示。如何在neo4j中表示圆形或多边形区域信息?您还应该能够在WKT字段中使用多边形表示,不确定它是否有效,但应该可以。因为它将索引多边形的边界框 在SDN 3.1.M1中,对多边形、圆形和长方体等地理类型也有更多的支持,这使得使用这些地理类型更加容易。下面是一个示例,介绍如何在Neo4j Spatial中使用多边形 首先,设置配置为使用W

我需要在地图上表示一个地方的圆形或多边形区域。地图上任何地方都不是一个单独的地方。这是一个多边形区域。目前我拥有的是单索引wkt字段,具有单点lon lat表示。如何在neo4j中表示圆形或多边形区域信息?

您还应该能够在WKT字段中使用多边形表示,不确定它是否有效,但应该可以。因为它将索引多边形的边界框


在SDN 3.1.M1中,对多边形、圆形和长方体等地理类型也有更多的支持,这使得使用这些地理类型更加容易。

下面是一个示例,介绍如何在Neo4j Spatial中使用多边形

首先,设置配置为使用WKT几何图形的空间索引

POST http://localhost:7474/db/data/index/node {"name":"tickle","config":{"provider":"spatial","wkt":"wkt"}}
我的索引名为“tickle”。如果尚未建立RTree的基本节点,则此调用将完成此操作。这些节点中有一个层节点。该层也被命名为“挠痒”。如果已建立RTree的基本节点,则将添加一个新的层节点。我将添加的节点中包含WKT几何体的属性的名称是“WKT”

现在,添加一个多边形节点

POST http://localhost:7474/db/data/transaction/commit {"statements" : [ {"statement" : "CREATE (n:City {name : 'Bartown', wkt : 'POLYGON ((-97.06138 32.837, -97.06133 32.836, -97.06124 32.833, -97.06127 32.832, -97.06138 32.837))"') RETURN id(n)" } ] }
从Neo4j空间角度来看,这没有任何作用。它只添加一个节点,该节点具有名称属性(“Bartown”)和包含lon/lat多边形的wkt属性。请注意,多边形由经度和纬度对组成,每个经度和纬度表示多边形的一个顶点。最后一个顶点必须与第一个顶点具有相同的坐标(这使其成为闭合图形)。请注意返回的节点id。它将在下一步中使用

现在将节点添加到RTree。如果您创建的节点的ID不是4,请将下面语句末尾的数字更改为刚刚返回的值

POST http://localhost:7474/db/data/index/node/tickle {"value":"dummy","key":"dummy","uri":"http://localhost:7474/db/data/node/4"}
如果显示一个节点图,您将发现一个节点已添加到RTree,该节点的“id”属性与原始节点(4)的内部id匹配,但内部id不同

现在,您已经向RTree和空间索引添加了一个节点。如果要添加更多节点,只需创建更多节点并将其添加到索引中即可

如果使用REST执行查询,Neo4j Spatial将返回RTree节点,必须使用“id”属性取消对这些节点的引用,以获取原始节点。例如,

POST http://localhost:7474/db/data/ext/SpatialPlugin/graphdb/findGeometriesWithinDistance {"pointX":"-97.0", "pointY":"32.0", "distanceInKm":"1000.0", "layer":"tickle"}
将返回RTree节点(5)。另一方面,如果使用Cypher进行查询,则返回原始节点。(这次我不想费心在REST中嵌入密码。)

START n=node:tickle(“withinDistance:[32.0,-97.0,1000.0]”)返回n

请注意,Cypher调用中坐标的顺序是纬度、经度和最大距离。这与其他一切相反,是一个bug

我希望这足以让你开始,如果你还没有得到解决。我自己刚完成这件事