假设有空间数据表中存储数据点坐标内容如下:
create table Tbl_Position(
PID varchar2(10),  --数据点编号
X integer,  --x坐标
Y integer,
Z integer
);现在要对该表简历空间索引执行检索;检索输入条件为一个任意多边形;输出数据点编号PID即可。
如果不采用oracle spatial提供的函数,而采用自定义索引表的方式处理的话是否可行?或者,哪位兄弟采用数据库实现过R+树的建立,给点提示或者代码将不胜感激。

解决方案 »

  1.   

    可以,首先用多边形的X最小值,X最大值,Y最小值,Y最大值做一次查询就可以得到一个很小的结果集,这个查询是可以用上X,Y列的复合索引,然后再加上多边形的其他条件。select * from tbl_position 
    where x>Xmin and x<Xmax and y>Ymin and Y<Ymax  -- x,y列建复合索引。
    and 判断任意多边形的条件。
      

  2.   

    采用数据库实现R树索引,并不是通过普通的表来进行,大多要使用专门的索引表,还有使用C实现的外部存储过程来实现。
    详情可以参看<<空间数据库>><<空间数据结构>>一类的教材。