MySQL数据类型 - 空间数据类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据类型 - 空间数据类型 相关的知识,希望对你有一定的参考价值。
开放地理空间联盟(OGC)是一个由250多家公司、机构和大学组成的国际联盟,参与开发可用于管理空间数据的各种应用程序的公共概念解决方案。
开放地理空间联盟发布了OpenGIS?地理信息实现标准-简单功能访问-第2部分:SQL选项(OpenGIS? Implementation Standard for Geographic information - Simple feature access - Part 2: SQL option),该文件提出了扩展SQL RDBMS以支持空间数据的几种概念性方法。此规范可从OGC网站获取,网址为http://www.opengeospatial.org/standards/sfs。
遵循OGC规范,mysql为SQL几何类型环境实现了一个空间扩展子集。这个术语(SQL with Geometry Types)指的是用一组几何类型扩展的SQL环境。几何值的SQL列被实现为具有几何类型的列。该规范描述了一组SQL几何类型,以及这些类型上用于创建和分析几何值的函数。
MySQL空间扩展支持生成、存储和分析地理特征:
●表示空间值的数据类型
●用于操作空间值的函数
●改进空间列访问时间的空间索引
空间数据类型和函数可用于MyISAM、InnoDB、NDB和ARCHIVE表。对于索引空间列,MyISAM和InnoDB同时支持空间索引和非空间索引。其他存储引擎支持非空间索引。
地理特征是世界上任何有地理位置的东西。特征可以是:
●一个实体。例如,一座山,一个池塘,一座城市。
●一个空间。例如,市区,热带地区。
●可定义的位置。例如,十字路口,即两条街道相交的地方。
有些文档使用术语地理空间特征(geospatial feature)来指代地理特征(geographic feature)。
几何是另一个表示地理特征的词。最初几何这个词的意思是测量地球。另一个含义来自地图学,指的是制图员用来绘制世界地图的几何特征。
这里的讨论将这些术语视为同义词:地理特征、地理空间特征、特征或几何。最常用的术语是几何,它定义为一个点或者点的集合,表示世界上任何有位置的事物。
以下材料涵盖这些主题:
●MySQL模型中实现的空间数据类型
●OpenGIS几何模型空间扩展的基础
●表示空间数据的数据格式
●如何在MySQL中使用空间数据
●空间数据索引的使用
●MySQL与OpenGIS规范的区别
额外资源
以下这些标准对于MySQL实现空间操作非常重要:
●SQL/MM第3部分:空间。
●OpenGeospatial Consortium发布了OpenGIS?地理信息实现标准(OpenGIS? Implementation Standard for Geographic information),该文件提出了几种扩展SQL RDBMS以支持空间数据的概念性方法。具体请参见简单功能访问-第1部分:通用体系结构(Simple Feature Access - Part 1: Common Architecture),以及简单功能访问-第2部分:SQL选项(Simple Feature Access - Part 2: SQL Option)。开放地理空间联盟(OGC)维护着网站:http://www.opengeospatial.org/。该规范可在http://www.opengeospatial.org/standards/sfs获取。它包含了与此内容相关的更多其他信息。
●空间参考系统(SRS)定义的语法基于OpenGIS实现规范:坐标转换服务(OpenGIS Implementation Specification: Coordinate Transformation Services)(修订版1.00,OGC 01-009,2001年1月12日)第7.2节中定义的语法。此规范可在http://www.opengeospatial.org/standards/ct获取。有关在MySQL中实现的SRS定义与该规范的区别,请参阅MySQL的CREATE SPATIAL REFERENCE SYSTEM语句。
空间数据类型
MySQL具有与OpenGIS类相对应的空间数据类型。这些类型的基础在"OpenGIS几何模型"部分介绍。
某些空间数据类型包含单一几何图形值:
●GEOMETRY
●POINT
●LINESTRING
●POLYGON
GEOMETRY可以存储任何类型的几何体。其他单值类型(POINT、LINESTRING和POLYGON)将其值限制为特定的几何类型。
其他空间数据类型保存值的集合:
●MULTIPOINT
●MULTILINESTRING
●MULTIPOLYGON
●GEOMETRYCOLLECTION
GEOMETRYCOLLECTION可以存储任何类型的对象集合。其他集合类型(MULTIPOINT、MULTILINESTRING和MULTIPOLYGON)仅限于特定几何类型。
示例:创建一个名为geom的表,该表有一个列名为g,可以存储任何几何类型的值,请使用以下语句:
空间数据类型的列可以有SRID属性,以显式指示存储在列中的值的空间参考系统(SRS)。例如:
如果空间列不为NULL且具有特定的SRID,则可以在这些列上创建SPATIAL 索引,因此,如果要为该列编制索引,请使用NOT NULL和SRID属性声明它:
InnoDB表允针对笛卡尔和地理空间参考系统(SRS)的SRID值。MyISAM表允许笛卡尔空间参考系统使用SRID值。
SRID属性使空间列受到限制,这意味着:
●列只能包含具有给定SRID的值。尝试使用不同的SRID值会产生错误。
●优化器可以对列使用SPATIAL索引。
没有SRID属性的空间列不受SRID限制,并且接受具有任何SRID的值。但是,在修改列定义包含SRID属性之前,优化器不能对它们使用SPATIAL索引,这可能需要首先修改列内容,以便所有值都具有相同的SRID。
官方文档地址:
https://dev.mysql.com/doc/refman/8.0/en/spatial-types.html
以上是关于MySQL数据类型 - 空间数据类型 的主要内容,如果未能解决你的问题,请参考以下文章