GIS空间索引技术
地理信息系统(Geography Information System,简称GIS)的主要任务之一是有效地检索空间数据及快速响应不同用户的在线查询。
地理空间索引技术和方法是GIS的关键技术。是快速高效查询、检索和显示地理空间数据的重要指标。
常用的空间索引技术介绍和比较:
网格空间索引、四叉树空间索引和R树系列空间索引最为常见。
目前国内外主要的空间数据库也大都采用网格空间索引、四叉树 与 R树 这三类的空间索引结构。如著名的Oracle公司的数据库则同时采用 四叉树和R树两种索引结构。
1。 空间索引技术的发展和分类
以传统的索引技术观点来看,可以把空间索引技术大致分为 四大类:基于B树、基于Hashing、基于二叉树和基于空间填充区。
就目前的空间索引研究成果而言,在建立索引时,按照划分区域是否与空间对象的分布特征有关的标准,空间索引分为两大类:
划分区域与空间对象分布特征无关的; ---包括 网格索引、四叉树;
划分区域与空间对象的分布特征有关的索引方法; ---包括 BSP树、R树及其变种树、Cell树、KD树等
1.1基于固定网格划分的空间索引
基于固定网格划分的空间索引技术 面向地图对象的空间位置和分布。应该属于 栅格索引,是一种高效、简洁、易于实现的一种空间索引。
固定网格划分的空间索引技术 顾名思义就是将一副地图数据按照固定的网格划分,如将一幅地图分割成 M行、N列,可表示为M*N,
以落入每个网格内的地图目标建立索引,这样只需检索原来区域的1/(M*N),以达到 快速检索的目的。
如下图所示:

问题的关键在于 如何建立检索,将落入每个网格的目标正确放入该网格,在检索过程中,通过鼠标 点选 准确的判断出目标所在网格。
并运用相应算法精确的剔出所选的目标,以获得其空间数据和对应的属性数据。
1.2 四叉树
四叉树是基于空间划分组织索引结构的索引机制,与规则网格划分不同。
它将已知范围的二维空间划成4个相等的子空间。如果需要,可以将每个或其中几个子空间 继续划分下去,这样就形成了一个基于四叉树的空间划分。
如下图所示:

四叉树索引通过将 数据空间逐层细分来组织数据,结构和操作比较简单,实现比较方便。
其中 满四叉树空间索引,还可用 顺序存储的线性表 来表示。内存需求小。
关键是 建立四叉树空间索引,要预先知道空间对象分布的范围。因而不能满足 空间数据的动态要求;此外,一旦索引建立后,树的层次即被
固定,无法根据 数据空间对象数目的变化来调整树高,可调节性差。
1.3 R-树
R-树是空间索引结构中最重要的一种层次结构,其构建思想是以最小边界矩形(简称MBR)递归的对数据集空间按照“面积”规则进行划分。
R-树中的非叶子节点代表一个划分的空间区域,即一个矩形空间区域;
R-树中的叶子节点包含的矩形区域对应空间对象的MBR。
构造矩形空间的原则是:
1) 矩形之间尽可能少重叠;
2) 矩形尽可能的包含更多的空间对象;
3) 矩形可以嵌套,即 矩形中可以包括更小的矩形;
R-树的平面划分与数据结构如图所示:

关键是 进行空间检索时,首先判断哪些矩形区域与检索窗口相交,再进一步判断落在检索窗口内的矩形区域中由哪些被检索的对象。
优点:
R-树具有很强的灵活性与可调节性,建树过程中无需预知整个空间对象所在的空间范围,同时他具有较高的执行效率。
被公认为是 较好的空间索引结构,已经得到广泛应用。
缺点:
但是,R-树也存在许多问题,可归纳为两方面:
。由于空间对象千姿百态,其索引空间经常重叠,且其重叠的程度随着数据量后空间维数的增加而剧增。
索引空间的重叠必然造成树的深度及存储空间的增加,从而导致遍历时间增加,查询效率下降。
。在动态构建R-树时,还会产生大量“死空间”(不包含空间目标的索引空间),造成存储空间的浪费,产生无效的遍历。
1.4 BSP树
BSP树是一种二叉树,它将 地理空间逐级进行一分为二的划分,如图所示:

BSP树能很好地与地理对象的空间分布情况相适应,但对一般处理情况而言,BSP树深度较大,对各种操作均有不利影响。
2。主要空间索引方法对比
在众多空间索引中,不同的索引有不同的优势和不足及使用范围。在选取哪一种作为空间数据库的空间索引时,要根据实际情况和需要来确定。
所以,目前很多GIS软件中采用 多种索引机制并存、取长补短的策略。

GIS空间索引技术的更多相关文章
- GIS+=地理信息+容器技术(4)——Docker执行
-------------------------------------------------------------------------------------- Blog: http ...
- GIS+=地理信息+容器技术(1)——容器技术概述
-------------------------------------------------------------------------------------- Blog: http ...
- GIS+=地理信息+容器技术(2)——Dockers技术介绍
-------------------------------------------------------------------------------------- Blog: http ...
- R-Tree空间索引算法的研究历程和最新进展分析
转自原文 R-Tree空间索引算法的研究历程和最新进展分析,2008 摘要:本文介绍了空间索引的概念.R-Tree数据结构和R-Tree空间索引的算法描述,并从R-Tree索引技术的优缺点对R-Tre ...
- gis论坛
http://bbs.csdn.net/forums/GIS/ http://forums.mysql.com/list.php?23 http://www.remotegis.net/ http:/ ...
- 2012高校GIS论坛
江苏省会议中心 南京·钟山宾馆(2012年4月21-22日) 以"突破与提升"为主题的"2012高校GIS论坛"将于4月在南京举行,由南京大学和工程中心共同承办 ...
- 中科燕园GIS外包---地铁GIS项目
(1)地铁保护及project地质管理 • 地铁保护 地铁交通既有运量大,速度快的特点,又有差别于其它交通方式的在地下执行的空间特殊性,因此地铁的保护显得尤为重要. 首先必须编制完整的 ...
- GIS制图课程前言
一直以来都想写一本关于电子地图制图的工具书,把过去所遇到的关于电子地图制图的种种方法.技巧和问题进行总结和归纳,传播电子地图制图的思路和心得. 从2010年开始,陆陆续续在华南地区开展了多场的电子地图 ...
- 也谈开源GIS架构实现思想
针对业务发展需要,需要开发设计一套具备自己独立GIS平台.然而以ArcGIS为主的GIS软件价格昂贵,在经过仔细技术与市场动向调研后,确立一套以Java语言的开源GIS软件平台.桌面CS端Udig+G ...
- 19个三维GIS软件对比
19个三维GIS软件对比 麦豆科研技术中心 days ago 我国GIS经过三十多年的发展,理论和技术日趋成熟,在传统二维GIS已不能满足应用需求的情况下,三维GIS应运而生,并成为GIS的重要发展方 ...
随机推荐
- Linux系统中的lsmod、lsof、lspci、lsscsi命令及实例
作为运维同学怎能不知道Linux系统中的lsmod.lsof.lspci.lsscsi命令呢,今天就来盘一盘她及实例. 1.lsmod命令 Linux lsmod命令用于显示已经加载到内核中的模块的状 ...
- MongoDB:【索引的管理操作】
- unicode编码 asis_2019_unicorn_shop
这题就是让我们购买第四个商品 当我们输入price为1337.0的时候他会报错,显示要我们只输入一个字符 那么我们就要想怎样用一个字符来表示一个比1337还要大的数字 答案是unicode 编码 (题 ...
- react 爷爷组件件传递给孙子组件
爷爷组件 import React, { Component } from "react"; import "./App.css"; import TestHa ...
- presto解析jsonArr转多行
一.假数据解析 SELECT r1.col.dataSourceId, r1.col.database, r1.col.dataTable FROM (SELECT explode(r.json) A ...
- Linux编译安装Canal
一.简介 下载源码:git clone https://github.com/alibaba/canal.git canal.adapter: 作用1:对接上游消息,包括kafka.rocketmq. ...
- CSP 考前注意事项
考试策略 J组 争取在 \(10:00\) 之前把所有题目稳定拿下.如果有题目没有思路.比较难写还没调出来或者想不出来,那么可以先放着,跳题.把其他所有题打完之后写个对拍,挂后台一直拍着. 然后剩下的 ...
- Linux驱动---/sys接口
目录 一.伪文件 sys 二.led_classdev结构体 三.注册/注销LED 3.1.led_classdev_register 函数 3.2.led_classdev_unregister 函 ...
- [BZOJ2741][FOTILE模拟赛] L 题解
相当好的题目,虽然和我前几天出的题重了qwq. \(lmx\) 是我们的红太阳,没有他我们就会死!!! 暴力枚举一个端点,然后用可持久化 \(01\ Trie\) 或者离线 \(Trie\)(当然这题 ...
- Kettle - 使用案例
原文链接:https://blog.csdn.net/gdkyxy2013/article/details/117106691 案例一:把seaking的数据按id同步到seaking2,seakin ...