GIS网格索引算法

在上面的几篇文章中,简单的介绍了GIS系统中的网格索引,本文将简单的介绍GIS网格索引的算法步骤。

(1)创建:通过数据的统计特征计算出一个网格尺度,对每一个实体按网格进行分解,在其落入的所有网格中追加该实体记录,直到所有的实体处理完毕。

(2)重建索引:随着数据表中实体的编辑、增加及删减,重新对数据进行统计计算,获得新的网格尺度,从而重建网格索引。

(3)查询:网格索引的查询操作就是对原空间数据利用网格索引进行检索的过程,它可以分成两步进行,即粗略查询过程和精确查询过程。通过对查询区域进行分化,检索出所有被查询区域覆盖且包含实体的网格,实现首次粗略查询;在粗略查询的结果集合基础之上通过精确比较,剔除不满足查询要求的记录。

(4)插入:插入空间实体时,根据每个格的大小,按规则计算出这个实体跨越那些格,并计算出空间要素的网格编码,然后在格网结构索引表的那些格中记录该实体的数据项。

(5)删除和更新:删除实体记录,并把此反应到网格索引中比较复杂,需要删除所有该实体对应的索引记录,在关系数据库中,通过对索引表中的实体号字段建立索引,可以大幅度提高这一操作的性能。

GIS网格索引编码

(1)传统简单GIS网格索引编码

在建立地图数据库时需要用一个平行于坐标轴的正方形数学网格覆盖在整个数据库数值空间上,将后者离散化为密集栅格的集合,以建立制图物体之间的空间位置关系。通常是把整个数据库数值空间划分成32×32(或64×64)的正方形网格,建立另一个倒排文件——栅格索引。每一个网格在栅格索引中有一个索引条目(记录),在这个记录中登记所有位于或穿过该网格的物体的关键字,可用变长指针法或位图法实现。

(2)改进型简单GIS网格索引编码

改进型单元网格索引将传统型编码由1维升至2维,变成X和Y方向上的编码;将空间要素的标识、空间要素所在的网格的X和Y方向上的编码、以及空间要素的外包络矩形作为一条数据库记录存储。如果一个空间要素跨越多个网格,则同样存储多条记录。

我的补充: 对于改进的网格索引算法,我们还可以使用Z曲线或者Hilbert对网格进行填充,这样可以对网格进行降维,按照这种方式存储也利于空间临近查询。

Z曲线填充                                                                                      Hilbert曲线填充

GIS 网格索引算法相关推荐

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

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

  2. 使用Python实现网格索引

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

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

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

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

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

  5. 高效的多维空间点索引算法 — Geohash 和 Google S2(转)

    转自:https://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=2652551603&idx=1&sn=f45f06d6a56 ...

  6. 高效的多维空间点索引算法 — Geohash 和 Google S2—绝对好文

    引子 每天我们晚上加班回家,可能都会用到滴滴或者共享单车.打开 app 会看到如下的界面: app 界面上会显示出自己附近一个范围内可用的出租车或者共享单车.假设地图上会显示以自己为圆心,5公里为半径 ...

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

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

  8. 网格分割算法(Random Walks)

    网格分割算法(Random Walks) 首先以一维随机游走(1D Random Walks)为例来介绍下随机游走(Random Walks)算法,如下图所示,从某点出发,随机向左右移动,向左和向右的 ...

  9. 索引算法原理解析(B-tree以及磁盘存储原理)

    刚开始学习的时候,百度去查,但发现好多说得太复杂不好理解,结合各个文章总结一下(建议大概看文字,不理解不要紧,然后再看图的执行步骤然后在结合文字,这样一切就清晰好多) B-tree,B是balance ...

最新文章

  1. Oracle大规模数据快速导出文本文件
  2. centos 7 配置nginx
  3. Spring MVC之@RequestMapping 详解
  4. php mysql数据备份命令_MySQL数据备份与恢复的相关操作命令
  5. 什么是补码-网上找到的,非原创
  6. C语言和C++的区别是什么?到底学哪种好
  7. SWT/JFace常用组件----容器类
  8. BIOS int 10H中断介绍
  9. 3A游戏大作都在用什么宝藏技术?
  10. 程序员的十个层次 你属于哪一层?
  11. BZOJ3505 [Cqoi2014]数三角形
  12. matlab画组合立方体,matlab小程序 画立方体
  13. 在CentOS上MySQL数据库服务器配置方法
  14. 个人电脑php网站搭建,如何在本地电脑搭建自己网站的流程(图文教程)
  15. 腾讯云点播视频存储(Web端视频上传)
  16. 1863: Dinner
  17. 满口春日清爽 书亦烧仙草刺梨新品上市
  18. 怎么把文件发给商家打印?如何给商家发送需打印的文件
  19. 毕业设计-基于SSM医院信息管理系统
  20. python实现AES对文件加解密(这里使用ECB密码本模式)

热门文章

  1. 吃透这“ 16个 ”核心技术栈,月薪40K还不是随便叫
  2. 2018北邮网研机试-D 的更好解法
  3. 神秘电影质感开场预告pr视频模板 PR开场视频模板
  4. 手机里的文件被覆盖如何恢复
  5. 前端面试总结:视频会议面试
  6. 一次Linux线上系统page allocation failure问题处理实战记录
  7. 徐州矿业大学计算机真题,中国矿业大学(徐州)考研真题汇总
  8. Cocos2d-x3.X入门游戏实例(一) 经典飞机大战开发笔记
  9. meego内核源码编译
  10. 英文学术写作:语步分析(引言)