Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

My first master's research topic was about spatial indexes. I learned about R-Trees and R+-tree, R*-trees and other various but very similar topics. This may not be published information, but what spatial index type does ESRI use? As a secondary question can this type be changed and how? There are some situations where a different type of index would boost performance.

In Oracle's case it can use the ST_Geometry spatial data type which can be indexed to either an R-tree or a quad tree or both: http://docs.oracle.com/html/A88805_01/sdo_intr.htm

Other databases use binary storage mechanisms which are non-spatial by default and do not seem to use the spatial indexing available. In SQL 2005 and lower spatial datatype didn't exist, but ESRI was still able to use SQL databases. According to this case study SQL 2012: http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=710000000547 it uses the automated spatial performance type, but doesn't list what kind of R-Tree it is.

Bonus points for reading material answering this question.

Thanks.

share|improve this question
4  
This depends on what database you are connecting to and how it is set up. –  Mapperz Dec 19 '12 at 21:31
    
this might help: webhelp.esri.com/arcgisserver/9.3/java/index.htm#geodatabases/… –  A.R Dec 19 '12 at 21:58
    
resources.arcgis.com/en/help/main/10.1/index.html#//… may be worth looking at too –  PolyGeo Dec 19 '12 at 23:15
1  
Thanks to the second commenter I updated due to your link. Thanks @PolyGeo I followed the chain as best I could and ended up here: dpi.inpe.br/cursos/ser303/oracle_r_tree.pdf. It says it is an R-Tree and then reference a R*-tree in the bibliography –  user13395 Dec 19 '12 at 23:41
    
One of the most interesting spatial indexes for me is revealed here: youtube.com/watch?NR=1&v=0-zd_XyqQbM –  mistapink Jun 4 '13 at 21:57
add comment

1 Answer

There are a number of different spatial indexes that ArcSDE will use depending on what database and spatial datatype you are using.

  • Oracle SDO_Geometry -> Oracle Spatial R-Tree, I don't know if Quad tree is still supported after 9i.
  • Oracle ST_Geometry -> ESRI Multilevel Grid Index
  • Oracle Binary/LOB/WKB -> Uses the S table as a Multilevel Grid Index (not a DBMS index)
  • MS SQL Server Binary/WKB -> Uses the S table as a Multilevel Grid Index (not a DBMS index)
  • MS SQL Server Geometry/Geography -> B-Tree
  • PostgreSQL ST_Geometry -> PostgreSQL R-Tree
  • PostgreSQL PostGIS -> GiST
  • DB2 ST_Geoemtry -> Multilevel Grid Index
  • Informix ST_Geometry -> R-Tree
  • Netezza -> Does not use indexes
  • Terradata -> Tessellation (I don't know much about this)

In Oracle's case, Oracle Spatial uses an R-Tree domain index while Esri's type SDE.ST_Geometry uses a grid domain index. With SQL Server 2012, I believe the major change to spatial indexing is the addition of auto grid. This doesn't actually change the structure of the grid (still a B-Tree), but it does automatically choose a better grid size.

That is everything I can think of, but I am sure I have missed something.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.