Neo4j Spatial - 找到多边形和直线的交点

时间:2014-11-06 19:13:32

标签: neo4j polygon spatial

我正在尝试开发一个接受用户的纬度,经度和方向(手机指向的方向)的应用程序。我需要使用坐标来找到用户视线中的第一个对象(很可能是建筑物)。该建筑物将作为多边形存储在数据库中。有没有Neo4j查询?我试图回答类似于&#34的问题;查找所有与Capricon线相交的国家"。

感谢阅读。我很感激帮助。

1 个答案:

答案 0 :(得分:1)

如果您的应用程序是使用嵌入式API编写的Java,那么Neo4j Spatial拥有您需要的所有工具,因为它在内部使用JTS 所以你可以执行你想要的任何JTS查询。但是,要受益于 用于快速查询的RTree索引将要求您也限制 搜索范围有点。如果你想知道你想要的最大距离 搜索你可以通过两种方式解决这个问题:

  1. 或者 - 进行初始距离搜索,查找最大距离内的所有几何图形,然后对结果数据集执行细化,以仅获得与视线相交的几何图形。
  2. 或 - 为视线创建LineString,其长度与您的最大距离相匹配,然后对与此LineString相交的所有几何图形执行交叉点搜索,并选择最接近的几何图形。
  3. 第二个选项只适用于Java API,但可能是 由于搜索最快,因此只会考虑沿视线的物体 在RTree中,索引搜索比距离更具选择性 搜索选项(将在所有方向搜索)。

    相反,如果应用程序将使用REST API,那么这将更加困难,因为该API仅允许搜索点。我建议创建一个非托管扩展,并使用Java进行工作,并为此函数公开自己的REST端点。