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的重要发展方 ...
随机推荐
- ClickHouse-2接口
客户端 ClickHouse提供了两个网络接口(两个都可以选择包装在TLS中以增加安全性): HTTP, 包含文档,易于使用. Native TCP,简单,方便使用. 在大多数情况下,建议使用适当的工 ...
- Spring Boot前后端分离直接访问静态页+ajax实现动态网页
Spring Boot前后端分离直接访问静态页+ajax实现动态网页. 一般java里面Spring Boot项目的静态资源resources/下面有两个文件夹和一个配置文件,分别是static/目录 ...
- 面试题:区分List中remove(int index)和remove(Object obj)
面试题:区分List中remove(int index)和remove(Object obj) package com.atguigu.exer;import org.junit.Test;impor ...
- Docker安装教程
这里介绍两种安装方法:centsOS安装和Ubuntu安装 CentOS安装 linux内核版本建议3.8以上,作者本人使用的是3.10:查看内核版本命令:uname -r 一般CentOS7以上都可 ...
- Linux 部署Pikachu靶场
Linux 部署Pikachu靶场 环境部署 安装httpd及其相关的组件 yum install -y httpd httpd-devel 安装php及其相关组件 yum -y install ph ...
- 如何让领导轻松在本地查看Allure报告
如何让领导轻松在本地查看Allure报告 问题描述 当我们把精心生成的Allure报告原始文件发送给领导后,领导直接打开index.html文件时,页面却一直处于加载状态,无法显示数据. 通过F12开 ...
- 新版Edge 浏览器几种详细的卸载方法
一.使用Windows系统自带卸载程序卸载 1.打开"控制面板"(可在Windows搜索栏中搜索): 2.选择"程序和功能": 3.找到Microsoft Ed ...
- 百万架构师第四十五课:并发编程的基础|JavaGuide
课程目标 1. 多线程的发展历史 2. 线程的应用 3. 并发编程的基础 4. 线程安全的问题 特定的指令,计算机不会存储指令,把指令写下来,一次性读取指令,批处理. 然后我们需要把批处理进行隔离.保 ...
- linux系统升级/更新OpenSSL版本操作流程记录
问题描述:有时OpenSSL版本过老升级,或者需要更新OpenSSL版本 1.登录linux系统后输入openssl version 查看现在使用的版本 我的输入后版本信息为:OpenSSL 1.1. ...
- .net core datatable 导出 pdf 支持中文
1.nuget 安装 iTextSharp (V4.1.6) to .NET Core. 2.code public DataTable ToDataTable<T>(IEnumerab ...