网格索引

http://blog.csdn.net/sjzwl/archive/2008/10/06/3020173.aspx
网格索引就是在一个地图图层上,按每个小网格宽△w,高△h打上均匀的格网,计算每个图元所占据的网格或者所经过的网格单元集合,
[img]http://nlslzf.iteye.com/upload/attachment/94725/ae08aed1-53db-3e7c-8c8c-c682602cb1d2.jpg[/img]
[img]http://nlslzf.iteye.com/upload/attachment/94727/5ecc8157-d154-31b4-b945-d1d33037ed2a.jpg[/img]

在这些网格单元中,记录下图元对象的地址或者引用,比如:声明一个对象二维数组 List grid[m][n]; m代表网格的行数,n代表网格的列数,每个数组元素为一个“集合对象”,用于存储这个网格单元所关联的所有图元的地址或引用,这样网格索引就建立好了。下一步,我们该怎么用这个网格索引呢?
所有的图形显示和操作都可以借助于“空间索引”来提高效率。举几个例子来说明“空间索引“的使用:
一、 放大开窗显示,正如上一节介绍的,当我们在地图上画一个矩形想放大地图的时候,首先得确
定放大后的地图在屏幕上需要显示哪些图元?所以,我们需要判断这个地图中有哪些图元全部或者
部分落在这个矩形中。判断步骤:1,确定所画矩形左上角和右下角所在的网格数组元素;即可得到
这个矩形所关联覆盖的所有网格集合;2,遍历这个网格集合中的元素,取到每个网格元素List中所
记录的图元;3,画出这些图元即可。(当然整个过程涉及到两点:1,屏幕坐标和地图坐标的互相
变换;2,窗口裁减,也可以不裁减)
二、 包含判断,给出一个点point和一个多边形polygon,判断点是否在面内,首先判断这个点所在的
网格,是否同时关联这个polygon,如果不是,表明点不在面内,如果是,可以下一步的精确解析几
何判断,或者精度允许的情况下,即判断polygon是包含point的。
另外,Google Map应该也是采用地理网格的方式,对地图图象进行索引的,可见一斑,网格索引在图形显示,选择,拓扑判断上的广泛应用。但同时也存在很严重的缺陷:当被索引的图元对象是线,或者多边形的时候,存在索引的冗余,即一个线或者多边形的引用在多个网格中都有记录。随着冗余量的增大,效率明显下降。所以,很多学者提出了各种方法来改进网格索引,这个将在下面的章节中介绍。而点图元非常适合网格索引,不存在冗余问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值