2013-08-25 29 views
1

我有一箇中等大的區域(幾十平方公里),可以容納數千個物體。大多數物體很小,一平方米,所以他們幾乎可以被視爲點。但是,一些物體非常大,達到與整個區域相同的數量級。大型物體的空間索引

我想對這些對象執行一些簡單的空間查詢(例如'查找所有與這個矩形重疊的對象')。我一直在玩R樹,這似乎適用於小物體。但是我不確定一旦包含我的大對象,R樹是否仍然是最佳選擇。

所以問題是:這裏最適合什麼樣的空間索引?如果有一個Java實現可以快速添加/刪除對象,則可獲得獎勵積分。

回答

2

如果你正在尋找一個java特定的空間索引實現,JTS庫相當輕量級,並提供了兩個空間索引實現:QuadTreeSTRTree。 STRTree只是R-Tree的一個特定的空間優化實現。由於它們的層次性,兩種方法(QuadTree和R-Tree)都支持不同規模的對象,從小到大。

R-Tree的一個限制是插入困難(JTS實現不允許插入),因爲索引層次由數據決定,並且可能需要在插入數據時更改,而四叉樹層次結構無論數據如何分佈,都是固定的。這可能會影響您的實施超過功能大小。

的Oracle Spatial的文檔有哪些空間索引類型在特定情況中最良好的信息,雖然有些是Oracle數據庫特有的。看到http://docs.oracle.com/html/A88805_01/sdo_intr.htm

+0

Oracle文檔很有趣。似乎QuadTree可能是更好的選擇,因爲我確實需要插入和刪除對象。 – mdriesen

0
  1. 你的問題更對涉及一個名爲Geographic information system這是巨大的,有一組其自身如何創建數據庫和管理這些規則的話題。
  2. GIS地理信息系統的一個例子就是Google地圖。
  3. GIS項目有許多工具項目工作,examples
  4. Java是不是選擇用GIS處理管理數據時的語言,GIS項目通常在C語言工作refer
+0

索引空間數據節我在看[GIS堆棧交換(http://gis.stackexchange.com)較早,但一個完整的GIS系統似乎什麼,我需要一個有點大材小用。實質上,我只是試圖製作一個非常簡單的繪圖工具(恰好有一個非常大的畫布)。 – mdriesen

+0

@docM對於一些小事 - 去使用google map api。 [link](https://developers.google.com/maps/) –