深入浅出空间索引:2

简介:

深入浅出空间索引2

  第一篇讲到了传统的索引如B树不能很好的支持空间数据,比如点(POI等)、线(道路、河流等)、面(行政边界、住宅区等)。本篇将对空间索引进行简单分类,然后介绍网格索引。(深入浅出空间索引1http://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只在几个热点商贸区聚集,在郊区等地方很稀疏,这将导致很多网格内没有任何空间数据。

 

 

 

下一节将介绍四叉树。

目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
Mysql优化之索引相关介绍(笔记)
这段内容涵盖了创建MySQL用户表的SQL语句,创建一个包含`username`、`age`和`dept`字段的联合索引,以及关于联合索引查询时遵循的最左前缀原则的解释。
48 0
|
关系型数据库 MySQL 数据库
MySQL索引详解及如何使用
MySQL索引详解及如何使用
685 0
|
SQL 定位技术 数据库
5个 GIS空间分析 空间查询与量算 的重要知识点
5个 GIS空间分析 空间查询与量算 的重要知识点
947 0
5个 GIS空间分析 空间查询与量算 的重要知识点
|
SQL 搜索推荐 关系型数据库
一文带你你搞懂索引如何优化!!!
一文带你你搞懂索引如何优化!!!
|
存储 机器学习/深度学习 缓存
FaissPQ索引简介
FaissPQ索引简介
270 0
FaissPQ索引简介
|
存储 SQL 缓存
深入浅出索引
索引,一种强大的存在;不管是什么行业,数据都是根基,终将落盘固化,提供各方检索查询,之前整理了一篇《深入浅出spring事务》,你可以推脱不使用事务,但索引是不可或缺的必备知识点 知识点比较多,有些会分篇细化,整体会从以下几方面整理 1. 索引是什么,人人都在讲,但他的定义到底是什么? 2. 索引作用,创建表时,都要考虑索引,能带什么好处? 3. 索引负作用,索引那么好,为什么不在每个字段上都加上索引? 4. 索引实现原理,那么多数据结构,索引为什么非要使用B+Tree? 5. 索引应用,加了索引也不一定能发挥作用,使用时注意哪些?
419 0
|
SQL 关系型数据库 MySQL
深入浅出Mysql索引
深入浅出Mysql索引
深入浅出Mysql索引
|
存储 关系型数据库 物联网
【重新发现PostgreSQL之美】- 13 brin 时序索引
大家好,这里是重新发现PostgreSQL之美 - 13 brin 时序索引
|
存储 SQL 算法
从原理到优化,深入浅出数据库索引
数据库查询是数据库的最主要功能之一,我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化,这篇文章对索引做一个系统的梳理,希望对大家有帮助。
2112 0
|
算法 索引 存储
深入浅出 jackrabbit 八 索引合并(上)
我们从文本提取的逻辑中走出来,回到主体流程。 在前面的文章中,我们可以看到一次索引创建的操作,可能会产生多个 persistentindex 对象,而这些对象其实代表着一个索引目录。随着创建索引的次数越来越多,那么索引目录也在增多,但是索引目录中的数据却不是很多,所以我们需要把多个目录合并,其实
2297 0

热门文章

最新文章