【问题标题】:spatial index for large objects大对象的空间索引
【发布时间】:2013-08-25 14:35:32
【问题描述】:

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

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

所以问题是:什么样的空间索引在这里最合适?如果有一个具有快速添加/删除对象的 Java 实现,则可以加分。

【问题讨论】:

    标签: java spatial-index


    【解决方案1】:

    如果您正在寻找空间索引的 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

    上的空间数据索引部分

    【讨论】:

    • 那个 Oracle 文档很有趣。似乎 QuadTree 可能是更好的选择,因为我确实需要插入和删除对象。
    【解决方案2】:
    1. 您的问题与一个名为 Geographic information system 的主题更相关,该主题非常庞大,并且有一套自己的关于如何创建和管理数据库的规则。
    2. GIS-地理信息系统的一个例子是谷歌地图。
    3. GIS 项目有许多工具可用于该项目,examples
    4. 在处理 GIS 来管理数据时,Java 不是首选语言,GIS 项目通常使用 C 语言工作 refer

    【讨论】:

    • 我之前在看GIS stack exchange,但一个完整的 GIS 系统对于我的需要来说似乎有点矫枉过正。本质上,我只是想制作一个非常简单的绘图工具(恰好有一个非常大的画布)。
    • @docM 对于一些小事 - 去使用 google map api。 link
    猜你喜欢
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多