SpatialHadoop中空间索引系列之(四)空间格网索引实现

       有关空间格网索引原理详见前面章节讲述的内容。这里我们根据SpatialHadoop中具体的实现,来详细讲解下。格网索引是一级索引,格网的个数取决于两个参数,一个是数据集的大小,另外一个就是格网的大小。那么在SpatialHadoop当中,具体怎么实现,我们先来拜读下作者Ahmed的文章。

-----------------------------------------------------------------------------------------------------------------------------------------

     【这部分主要描述普通索引算法的实现,该算法在V-B章节用于建立格网索引。格网文件是一个简单的平衡索引,该索引根据格网去分割数据,覆盖一个格网的所有记录被存储在一个文件块内作为一个单独的分区。为了简单起见,我们假设数据均匀分布,采用均匀的网格。在数据分割阶段,当得到切分块数n之后,在一个区域内,块的边界通过创建一致的格网大小来确定⌈√n⌉ × ⌈√n⌉,同时将格网单元的大小作为块的边界,如图4(a)中所示。这样生成的块的个数可能要比n大,但是这样可以确保平均块的大小比HDFS块大小要少。当物理分割这些数据时,一条带有空间范围的记录r被复制到每一个他覆盖的格网单元中。在局部索引过程中,每一个格网单元中所有的记录将被写入到一个堆文件当中,不建立任何局部索引,因为格网索引是一级平衡索引,存储的内容不分先后。最后,全局索引阶段将所有的文件生成一个全局索引文件,该文件是一个二维表文件,记录了相对应的块。

=========================================================推荐看原文吧!!!大笑

第一步:计算数据集mbr。

第二步:计算分块数目n。

第三步:计算格网大小size。

第四步:确定n个分块的mbr。

第五步:确定空间要素所属。比较每一条空间要素,确定他们所属的块,并将同一块的空间要素写入到一个文件。

第六步:生成所有块。

第七步:生成格网文件。



你可能感兴趣的:(java,index,spatial,SpatialHadoop)