2014-11-06 48 views
1

我试图开发一个应用程序,它接受来自用户的纬度,经度和方向(手机指向的方向)。我需要使用坐标来查找用户视线中的第一个对象(最有可能是建筑物)。该建筑物将作为多边形存储在数据库中。有没有Neo4j查询?我试图回答类似于“查找所有与Capricon相交的国家/地区”的问题。Neo4j空间 - 找到一个多边形和一条线的交点

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

+0

嗨,也许这个答案在堆栈可以帮助你http://stackoverflow.com/questions/24548819/neo4j-spatial-contain-search – 2014-11-06 19:24:01

+0

你将不得不尝试自己的解决方案。然后回来问一个问题,如果出现问题。 – mihai 2014-11-06 19:24:18

回答

1

如果您的应用程序是用Java编写与嵌入式API,然后Neo4j的 空间有你所需要的,因为它利用JTS的内部 ,所以你可以执行任何JTS查询你想要的工具。但是,要从 RTree索引中受益,以便快速查询,您需要在一定程度上限制 搜索范围。如果您有希望 的最大距离的想法进行搜索,你可以通过两种方式解决这个问题:

  1. 无论是 - 做一个初始距离搜索找到的最大距离内的所有几何形状,然后在执行细化得到的数据集只能得到与视线相交的几何图形。
  2. 或者 - 为视线创建LineString,其长度与您的最大距离匹配,然后执行与此LineString相交的所有几何图形的交集搜索,并选择最接近的。

,第二个选项只会Java API中的工作,但将是 以来最快的搜索将只考虑沿视线 在RTREE行对象,所以索引搜索是比距离更具有选择性 搜索选项(将搜索所有方向)。

相反,如果应用程序要使用REST API,那么这样做会很困难,因为该API只允许搜索点。我建议创建一个非托管扩展,并使用Java进行工作,并为此功能公开您自己的REST端点。

相关问题