空间索引是指依据空间对象的位置和形状或空间对象之间的某种空间关系按一定的顺序排列的一种数据结构1,其中包含空间对象的概要信息,如对象的标识、外接矩形及指向空间对象实体的指针。空间数据查询即空间索引,是对存储在介质上的数据位置信息的描述,是用来提高系统对数据获取的效率1,也称为空间访问方法(Spatial Access Method SAM)。是指依据空间对象的位置和形状或空间对象之间的某种空间关系按一1定的顺序排列的一种数据结构其中包含空1间对象的概要信息如对象的标识外接矩形及指向空间对象实体的指针。作为一种辅助性的空间数据结构空间索引介于空间操作算法和空间对象之间它通过筛选作用1大量与特定空间操作无关的空间对象被排除从而提高空间操作的速度和效率。
在涉及LBS的服务开发过程中,经常需要存储地理空间的位置并进行一定计算(附近商家等需求),本文主要介绍mysql对于LBS的支持。
Mysql的空间扩展主要提供一下几个方面的功能:
其中前两点对InnoDB,MyISAM,NDB,ARCHIVE等mysql存储引擎都支持,第三点只有对InnoDB和MyISAM的支持,由于InnoDB的支持行锁以及事务的特性,现在基本上已经是默认存储引擎了,所以本文以下内容都默认使用InnoDB。
创建空间列以及空间索引的语句如下:
Mysql的空间数据类型与OpenGIS的数据类型相对应。
Mysql的空间数据有不同表示格式,其中咱能看懂的也就第一种
因为上文提到了SRID,这里说下什么是SRID,SR是指Spatial Reference,也就是我们常说的空间参考系,mysql支持卡迪尔坐标系和地理坐标系,其中地理坐标系又有好多种,下面说几种常用的空间参考系
Mysql的所有空间坐标系都存在表 mysql.st_spatial_reference_system 中,这个表是隐藏的,看不见的,但是你可以通过 infomation_shcema.st_spatial_reference_system 中查看参考系的信息,这个表就是 mysql.st_spatial_reference_system 的一个视图的实现。
mysql的空间索引的数据结构是R树,R树实际上就是多维的B树,B树的数据结构在我的另一篇博客中有介绍,这里就不展开了,说几点在应用的时候需要注意的。
最后转一篇博文 https://visonforcoding.github.io/di-li-wei-zhi-geochu-li-zhi-mysql-geo-suo-yin.html
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)