首页 > 其他 > 详细

建立网格索引(代码)

时间:2014-03-27 01:52:26      阅读:906      评论:0      收藏:0      [点我收藏+]

见原文,转自http://longriver.me/?p=355

  1. 空间检索中网格索引的引入
    1. 网页的检索需要对每篇文档建立倒排索引,空间检索中,需要对每个地域建立网格索引。
    2. 简单说就是要将地域划分成一个个的网格(mesh),每个网格有个单独的id,唯一标示,利用局部性原理,给出一个点,检索附近的点的时候,只需要计算相邻网格中的点,省去了全局的计算。图1 给出了网格的示例
    3. 一般会应用场景是,给定一个点,计算器最近邻的几个地点,或者是判断一个坐标点是否落在一个区域内

           bubuko.com,布布扣

图1,将一个地域划分为网格,并给每个网格唯一id

bubuko.com,布布扣

 

图2,AOI:圆明园,天安门,森林公园

假设一种空间检索的应用场景,现在有一堆面状的区域,我们知道这些面状区域(AOI area of interest)的轮廓如图2,我们有一些坐标点,那么如何判断这些坐标点是否落在aoi里,落到了哪个区域里呢?

完成这项工作,需要三步:

  • 1,为面状区域制作索引,不要求很精确
  • 2,求出每个检索点落在那个网格中
  • 3,判断检索点是否落在AOI中(判断点是否在一个多边形中)
1.为面状区域建立索引

 

 

Mesh_size 可以根据一共检索区域的大小来进行设定,在我们的应用场景下设为1000,指每个网格的大小为1000m。

 

2,为每个检索点找到所在的mesh 和每个mesh中的aoi

 3,判断一个point 是否在aoi里面,一个aoi其本质上是一个多边形,由顶点描述,因此现在有很多现成的算法讲如何判断一个点是否落在多边形中,参照这边博文http://alienryderflex.com/polygon/讲的非常详细,代码实现如下,具体原理,请阅读博文。

4,剩余的一些代码,如如何对grid去hash值,可以自己去实现,贴上我们的实现,仅作参考:

建立网格索引(代码),布布扣,bubuko.com

建立网格索引(代码)

原文:http://www.cnblogs.com/harveyaot/p/3627056.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!