原文地址:http://www.cnblogs.com/LBSer/p/3403933.html

深入浅出空间索引2

  第一篇讲到了传统的索引如B树不能很好的支持空间数据,比如点(POI等)、线(道路、河流等)、面(行政边界、住宅区等)。本篇将对空间索引进行简单分类,然后介绍网格索引。(深入浅出空间索引1:http://www.cnblogs.com/LBSer/p/3392491.html)

一、空间索引有哪几种?

  传统索引使用哈希和树这两类最基本的数据结构。空间索引虽然更为复杂,但仍然发展于这两种数据结构。因此可以将空间索引划分为两大类:1)基于哈希思想,如网格索引等;2)基于树思想,有四叉树、R树等。

二、网格索引

  哈希是通过一个哈希函数将关键字映射到内存或外存的数据结构,如何扩展到空间数据呢?

2.1. 网格索引原理

  扩展方法:对地理空间进行网格划分,划分成大小相同的网格,每个网格对应着一块存储空间,索引项登记上落入该网格的空间对象。

  举个例子,我们将地理空间进行网格划分,并进行编号。该空间范围内有三个空间对象,分别是id=5的街道,23的河流和11的商圈。这时候我们可以按照哈希的数据结构存储,每个网格对应着一个存储桶,而桶里放着空间对象,比如对2号网格,里面存储着id=5的空间对象,对35号网格,桶里放着id=5和id=23的空间对象。

  假如我们要查询某一空间范围内有哪些空间对象,比如下面的红框就表示空间范围,我们可以很快根据红框的空间范围算出它与35号和36号网格相交,然后分别到35号和36号网格中查找空间对象,最终找出id=5和id=23的空间对象。

2.2. 网格索引缺点

1)索引数据冗余

  网格与对象之间多对多关系在空间对象数量多、大小不均时造成索引数据冗余。比如11号商圈这个空间对象在68,69,100,101这4个网格都有存储,浪费了大量空间。

2)网格的大小难以确定

  网格的划分大小难以确定。网格划分得越密,需要的存储空间越多,网格划分的越粗,查找效率可能会降低。对于图a,这个查询需要查询4个网格,由于4个网格覆盖了整个空间,因此这个查找其实是将空间范围内所有的点数据都遍历一遍,失去了索引的意义。

3)很多网格没有数据

  空间数据具有明显的聚集性,比如POI只在几个热点商贸区聚集,在郊区等地方很稀疏,这将导致很多网格内没有任何空间数据。

空间索引--网格索引相关推荐

  1. WebGIS中一种根据网格索引判断点面关系的方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 判断点面关系的算法有很多,在我之前的博文中有一篇专门对其进行 ...

  2. 一种高效的基于线性四叉树编码的多级网格索引

    目前主流GIS平台厂商的空间数据库引擎,用的基本是四叉树,R树等索引,主要是供海量的空间数据存储和显示用的,以我的理解(我不负责空间数据引擎,了解有限),它们最重要的功能是:传入一个正交查询区域(矩形 ...

  3. 使用Python实现网格索引

    网格索引就是在一个地图图层上,按每个小网格宽△w,高△h打上均匀的格网,计算每个图元所占据的网格或者所经过的网格单元集合.这篇文章主要是我在查找网格索引算法的时候,看到一位仁兄在csdn发表的文章ht ...

  4. python编程之一:使用网格索引算法进行空间数据查询

    这是学习python以来第一次实现一个功能.是因为今天在网上面试一个兼职程序员,对方给我出一道题,题目如下: 写个python的接口,给定经度和维度范围,查出在中国的区域,要求性能尽可能的快.全国经纬 ...

  5. GIS 网格索引算法

    GIS网格索引算法 在上面的几篇文章中,简单的介绍了GIS系统中的网格索引,本文将简单的介绍GIS网格索引的算法步骤. (1)创建:通过数据的统计特征计算出一个网格尺度,对每一个实体按网格进行分解,在 ...

  6. 网格索引 和四叉树索引

    参考链接:https://blog.csdn.net/zhshulin/article/details/19031177 问题:在一个平面层上面,给出一个矩形,找出这个矩形里的所有点. 暴力法:遍历所 ...

  7. 从数据库库索引说到空间数据索引

    要说空间索引,我们不得不先说一下数据库索引. 1. 数据库索引 1.1. 什么是数据库索引 索引是定义在table基础之上,有助于无需检查所有记录而快速定位所需记录的一种辅助存储结构,由一系列存储在磁 ...

  8. arcmap创建空间索引_空间GIS索引算法介绍

    先看几个需要空间索引技术的场景: 如何根据给定位置来查询附近1000米的poi? 如何查找给定位置的最近poi? 如何查找给定矩形框内所有link和面数据? 1.用B-tree.B tree或者has ...

  9. GIS空间索引(2)--格网索引与四叉树索引

    在介绍空间索引之前,先谈谈什么叫"索引".对一个数据集做"索引",是为了提高对这个数据集检索的效率.书的"目录"就是这本书内容的" ...

最新文章

  1. hadoop中的序列化与Writable类
  2. 你也可以玩转Skype -- 基于Skype API开发外壳程序入门
  3. Linux-unit12
  4. “当前上下文中不存在名称”解决
  5. hibernate教程--常用配置和核心API详解
  6. sklearn 安装_sklearn-classification_report
  7. python apply_async函数_进程池未执行apply_async中添加的函数就直接结束了
  8. zabbix登陆拒绝报没有权限
  9. 学会这两个技巧!让你的Mac文件共享超简单
  10. 苹果cms模板_苹果cmsv10简约模板有哪些?
  11. 华为手机安装GMS框架
  12. webService接口调试工具——Strom
  13. PPT科研绘图:用PPT绘图,保存为eps并导入Latex
  14. Azkaban学习之路
  15. android两个app合并
  16. wmctf2022 两题PvsZ
  17. 关于文件夹病毒exe的处理方法
  18. php yar安装,yar如何在linux下安装扩展
  19. 基于生物特征信息的身份识别(指纹、面部识别的方式和原理)的使用问题的思考
  20. 字符串转json对象

热门文章

  1. c语言设置周期的程序,C语言通过timeval结构设置周期
  2. Java编程教程大全
  3. CTFlearn-Tone dialing
  4. 基于JavaSwing的学生考勤管理系统设计与实现
  5. 积少成多的日记(养成好习惯)
  6. NPOJ 1069 小学生作业
  7. generate报错 make_opencv3.4.8编译opencv-contrib并使用sift
  8. tree-shaking的概念及其工作原理
  9. 2023年CPA六科三色笔记(全)
  10. 「镁客·请讲」华科创智喻东旭:纳米银线最终将带来移动终端的革命