大对象的空间索引

时间:2013-08-25 14:35:32

标签: java spatial-index

我有一个中等大面积(几十平方公里),可以包含数千个物体。大多数物体很小,一平方米,因此它们几乎可以被认为是点。但是,有些物体非常大,与整个区域的数量级相同。

我想对这些对象执行一些简单的空间查询(例如“查找与此矩形重叠的所有对象”)。我一直在玩R树,这似乎对小物体有效。但是,一旦我包含较大的物体,我不确定R树是否仍然是最佳选择。

所以问题是:这里哪种空间指数最合适?如果有一个Java实现具有快速添加/删除对象的功能,则可以获得奖励。

2 个答案:

答案 0 :(得分:2)

如果您正在寻找空间索引的特定于Java的实现,JTS库相当轻量级,并提供两个空间索引实现:QuadTreeSTRTree。 STRTree只是R-Tree的特定空间优化实现。由于它们的分层性质,两种方法(QuadTree和R-Tree)都支持不同规模的对象,从小到大。

R-Tree的一个限制是插入很困难(JTS实现不允许插入),因为索引层次由数据决定,并且可能需要在插入数据时更改,而四叉树层次结构是无论数据如何分布,都会修复。这可能会影响您的实现,而不仅仅是功能大小。

Oracle Spatial文档提供了有关哪种类型的空间索引在特定情况下最有效的信息,尽管其中一些特定于Oracle DB。请参阅http://docs.oracle.com/html/A88805_01/sdo_intr.htm

上的空间数据索引部分

答案 1 :(得分:0)

  1. 您的问题更多地与名为Geographic information system的主题相关,该主题非常庞大,并且有一套自己的如何创建数据库和管理数据库的规则。
  2. GIS地理信息系统的一个例子是谷歌地图。
  3. GIS项目有许多工具可用于项目examples
  4. 在处理GIS管理数据时,Java不是首选语言,GIS项目通常使用C语言 refer