问题标签 [neo4j-spatial]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
621 浏览

neo4j - Neo4j Spatial over REST 通过 JAVA API 不起作用(对我来说)

我正在通过 Neo4J 开发 Grails 应用程序,我还想将其导出为 GIS 数据库。

查看如何在 GeoServer/uDig 中使用 neo4j 的示例,似乎空间集成仅通过嵌入式 neo4j 数据库。

有谁知道是否可以进行设置,以便我的 Neo4J 可以通过 REST 使用,以便我可以从不同的地方连接它?

乍一看,它似乎应该是可能的:

使用嵌入式数据库,可以很好地创建空间索引。但是,使用 REST 数据库,我只得到一个空指针:

SpatialDatabaseService 需要一个 GraphDatabaseService,所以我很困惑为什么它不能与 REST 一起使用。

这是错误还是功能(或我的误解?)

当然,我可以使用create indexAPI 创建空间索引:

这样就可以了,但是我不能那样创建新图层。

0 投票
1 回答
109 浏览

java - Neo4j 空间问题:findWithinDistance: ava.lang.IllegalArgumentException: Index with the same name but different config存在

由于地理定位在定义的半径距离内,我们需要定位一组对象。

我们尝试使用 Neo4 J 空间库,使用 SpatialRepository 类来实现方法“findWithinDistance”</p>

下面使用索引类型 POINT 来存储对象的经度和纬度的实现代码:

1)第一次运行我们在neo4j数据库中创建对象没有任何问题(我们可以在neo4j中看到具有正确数据的对象)第二次运行或创建一个新对象我们说:索引存在同名但不同的配置!

我必须实现 findWithinDistance 的方法的另一点:我们应该使用模板方法或 Neo4j Cypher 查询来搜索对象?

谢谢您的帮助,

如果您需要精度,请不要犹豫

0 投票
0 回答
82 浏览

neo4j - SDN 似乎不会从空间索引中删除节点

有人可以帮我理解空间索引在 Spring-Data-Neo4j 中应该如何工作吗?

我创建了一个简单的索引:

这似乎可行 - 当我坚持已设置位置的连接点时,它们似乎已添加到空间索引中。(当我从 Neo4j Web 控制台“匹配(m)返回 m”时,我看到空间根中添加了一个节点,其“id”属性与添加的节点匹配)。

但是,当我删除使用存储库的delete添加的节点时,它不会自动从空间索引根中删除该节点。

我是否必须手动操作才能从空间索引中删除节点,或者这是一个功能?

这是 Neo4j 数据库在删除添加的联结之前和之后的样子:

前:

后:

很明显,路口已经消失,但空间索引不知道移除。

0 投票
2 回答
297 浏览

neo4j - 将现有节点添加到空间索引(使用弹簧数据)

我有一个想要建立空间索引的现有项目。

我可以通过将@Index添加到域类中,为现有数据库上由 spring-data-neo4j 管理的预先存在的 Neo4j 数据库创建空间索引:

我已经为 graphdb 中的所有现有节点填充了 wkt,但我不知道如何将现有节点添加到新的空间索引中。我不可能从头开始重建图形,因为它已经有许多层通过预先存在的关系连接到这些现有节点。

我已经完成了空间和 SDN 的单元测试,但没有一个记录如何将现有节点添加到新索引。我也无法在将节点添加到 SDN 定义的索引中的代码中解决问题。

有人可以帮忙吗?

0 投票
1 回答
141 浏览

neo4j - 空间层插入性能差

所以我尝试将一些邮政编码和地址数据加载到neo4j中。我提出了一个独特的约束,实际上有三个标签。邮政编码、地址和地区。REGION 和 POSTCODE 对其单一属性有独特的限制。我们用于插入的查询将 MERGE REGION、MERGE POSTCODE CREATE ADDRESS,然后是 CREATE RELATIONSHIPS。这个想法是能够查看哪个地区的邮政编码,以及有多少地址共享一个邮政编码,因此 MERGE 行为很重要。

但是,我们发现一旦数据库达到相当适中的大小,这将非常缓慢。现在我们预料到了这一点,但我们希望约束检查应该缩放为 log(n)。相反,性能与数据库大小呈线性关系,这是非常出乎意料的。

在此处输入图像描述

在不放弃 MERGE 行为的情况下,我能做些什么来改善这一点?这是 UNIQUE 约束的结果吗?理论上,在使用合并时拥有唯一约束和仅拥有索引之间应该没有区别,因为只有一个属性。无论哪种方式,merge 都需要知道属性是否存在来决定是否合并。

我知道我可以做各种事情来加快插入速度,使用 csv 加载器等。我对提高渐近性能感兴趣。我认为独特的约束应该有 O(log(n)) 的时间成本,而不是 O(n),这可能会产生巨大的差异。

编辑:进一步调查显示问题不是索引查找,而是 R-tree 插入空间层。用于插入的特定代码使用了嵌入式 API,而不是密码和代码片段:

随着树的大小扩大,在 O(n) 处逐渐变慢。这显然是 R-Trees 的预期行为。这大约需要 0.0005 * 层中的节点数。移除空间插入后,它的速度提高了几个数量级,并且没有显示缩放行为。我认为减少只是由于启动后缓存预热。

在此处输入图像描述

顺便说一句,我使用以下代码来启动空间索引:

因为这为您提供了 Cypher 入口点,但索引和层之间是否存在质量差异?层会比索引具有更好的性能,还是它们都由相同的 R-trees 支持。

对这个问题的建议:Neo4J在将记录添加到空间层后性能大幅下降似乎是我应该在启动空间层之前将所有节点放入数据库,因为它的索引速度比增量插入快得多。

明天试试。

0 投票
1 回答
533 浏览

neo4j - 通过密码进行交叉匹配?

是否可以检查 WKT 几何是否与另一块几何相交(通过 Cypher)?

例如,如何对它们进行空间搜索以返回与给定边界框相交的任何内容?

例如,如果我有空间索引节点:

和两个这样的例子:

看起来:

尽管与两条线相交,但不返回任何内容。

而一个完全包围两个几何形状的边界框,

两者都返回。

有人能帮助我吗?

0 投票
1 回答
81 浏览

spring - SpatialRepository not autowiring

Does anyone know how to get SpatialRepository @Autowiring in a spring boot app? I have put the additional dependency in my classpath

with the following configuration options

I have tried it all but no avail. My domain class is this:

I get the following exception when running a query on the spatial repo

0 投票
1 回答
104 浏览

neo4j - Neo4j Spatial 将 wkt 值转换为其他值

我的应用程序使用点查询根据用户的当前位置查找商店。

使用 shop.setLocation (12, 12) 保存商店;我使用 neo4j 浏览器检查我的节点,wkt 值更改为 POINT(56.34 -2.80)。

我不明白为什么值会从 POINT (12.00, 12.00) 变为此值。

0 投票
1 回答
136 浏览

neo4j - 找不到索引提供程序空间:嵌入式 Neo4j

http://docs.spring.io/spring-data/neo4j/docs/3.0.2.RELEASE/reference/html/programming-model.html#reference_spatial

该链接似乎具有误导性,因为在将依赖项添加到我的 pom 文件时,我仍然收到主题错误。但是,当我在带有空间插件的服务器上运行它时,情况并非如此。

0 投票
1 回答
168 浏览

neo4j - 空间索引neo4j中的WithinDistance没有给出适当的结果

我们在 Grails 项目 2.4.3中使用Spring Data Neo4j 3.2.0Neo4j-spatial 0.13-neo4j-2.1.6

在用户域中

在用户存储库中

所以当我们跑

然后它给出准确的数据,但是当我们运行时

那么它不会给出任何数据,但如果我们将距离增加到 10000,那么它会给出数据。

实际上,我们想使用 Cypher Query 获得正确的数据。我们错过了什么吗?反正有没有使用 Cypher 获得正确的数据?