MySQL数据类型 - 空间数据类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL数据类型 - 空间数据类型 相关的知识,希望对你有一定的参考价值。

OGC的SQL几何类型环境提出的几何类型集合是基于OpenGIS几何模型的。在此模型中,每个几何对象具有以下常规特性:

●它与空间参照系相关联,空间参照系描述了所定义对象的坐标空间。

●它属于某种几何类。

几何类层次结构

几何类定义层次,如下所示:

●Geometry (不可实例化)

■ Point (可实例化)

■ Curve (不可实例化)

○ LineString (可实例化)

●Line

●LinearRing

■ Surface (不可实例化)

○ Polygon (可实例化)

■ GeometryCollection (可实例化)

○ MultiPoint (可实例化)

○ MultiCurve (不可实例化)

●MultiLineString (可实例化)

○ MultiSurface (不可实例化)

●MultiPolygon (可实例化)

不能用不可实例化的类创建对象。能够用可实例化类创建对象。所有类都有属性,可实例化类也可能有断言(定义有效类实例的规则)。

Geometry是基类,是一个抽象类。Geometry的可实例化子类仅限存在于二维坐标空间中的零维、一维和二维几何对象。定义了所有可实例化几何类,以便几何类的有效实例在拓扑上闭合(即,所有定义的几何体都包括其边界)。

基类Geometry有Point、Curve、Surface和GeometryCollection子类:

●Point表示零维对象。

●Curve表示一维对象,有LineString子类,LineString又有Line和LinearRing子类。

●Surface是为二维对象设计的,并且有子类Polygon。

●GeometryCollection有专门的零维、一维和二维集合类MultiPoint、MultiLineString和MultiPolygon,分别用于对Point、LineString和Polygon集合建模。MultiCurve和MultiSurface作为抽象超类被引入,它们归纳了集合接口来处理Curve和Surface。

Geometry、Curve、Surface、MultiCurve和MultiSurface定义为不可实例化的类。它们为子类定义了一组公共方法,子类包含了这些方法以实现可扩展性。

Point、LineString、Polygon、GeometryCollection、MultiPoint、MultiLineString和MultiPolygon是可实例化的类。

1.Geometry 类

Geometry是层次结构的根类。它是一个不可实例化的类,但具有许多属性,如下所述,这些属性对于从任何Geometry子类创建的所有几何值都是通用的。特定的子类有它们自己的特定属性,稍后将进行描述。

Geometry 属性

几何值具有以下属性:

● 类型,每个几何体都属于层次结构中的一个可实例化类。

● SRID,也就是空间参考标识符。此值标识几何图形的关联空间参照系,该参照系描述定义几何对象的坐标空间。

mysql中,SRID值是与几何值相关联的整数。最大可用SRID值为2^32?1。如果给定更大的值,则只使用较低的32位。

SRID 0表示无限平坦的笛卡尔平面,其轴没有指定单位。若要确保SRID 0的行为,请使用SRID 0创建几何值。如果未指定SRID,则SRID 0是新几何值的默认值。

对于多个几何值的计算,所有值必须具有相同的SRID,否则将发生错误。

● 坐标、平面、大地测量

它在空间参照系中的坐标,用双精度(8字节)数字表示。所有非空几何体至少包含一对(X,Y)坐标。空几何体不包含坐标。

坐标与SRID相关。例如,在不同的坐标系中,即使对象具有相同的坐标,两个对象之间的距离也可能不同,因为平面坐标系上的距离和大地坐标系(地球表面的坐标)上的距离是不同的。

● 内部、边界 和外部

每个几何体在空间中都占有一定的位置。几何体的外部是几何体不占用的所有空间。内部是几何体所占据的空间。边界是几何体内部和外部之间的接口。

● MBR

它的MBR(最小边界矩形)或封套。这是边界几何体,由最小和最大(X,Y)坐标组成:
技术图片

● 简单、不简单

值是简单的还是不简单的。类型(LineString、MultiPoint、MultiLineString)的几何值要么是简单的,要么是不简单的。每种类型都决定自己的断言,是简单的还是不简单的。

● 闭合、不闭合!

值是闭合的还是不闭合的。类型(LineString、MultiString)的几何值要么闭合,要么不闭合。每种类型都决定自己的断言是否闭合。

● 空、非空

值是空的还是非空的,如果几何体没有任何点,则该几何体为空。空几何体的外部、内部和边界都未定义(即,它们由NULL值表示)。空几何体被定义为始终简单且面积为0。

● 维度

它的维度。几何体的维度可以是?1、0、1或2:

■ -1表示空几何体。

■ 0表示没有长度和面积的几何体。

■ 1表示长度非零且面积为零的几何体。

■ 2表示非零面积的几何体。

Point对象的维度为零。LineString对象的维度为1。Polygon对象的维度为2。MultiPoint、MultiLineString和MultiPolygon对象的维度与它们成员元素的维度相同。

  1. Point 类

Point是表示坐标空间中单个位置的几何图形。

Point示例

● 想象一下,有许多城市的大比例尺世界地图。Point对象可以表示每个城市。

● 在城市地图上,Point对象可以表示公共汽车站。

Point属性

● X-坐标值。

● Y-坐标值。

● Point被定义为零维几何体。

● Point的边界是空集。

  1. Curve 类

Curve是一维几何体,通常由一系列点表示。Curve的特定子类定义点之间的插值类型。Curve是不可实例化的类。

Curve的属性

● Curve有它的点的坐标。

● Curve被定义为一维几何体。

● 如果Curve不经过同一个点两次,那么它就是简单的,但如果起点和终点相同,Curve仍然是简单的。

● 如果Curve的起点等于其终点,则Curve是闭合的。

● 闭合Curve的边界为空。

● 非闭合Curve的边界由两个端点组成。

● 简单而封闭的Curve是LinearRing。

官方地址:
https://dev.mysql.com/doc/refman/8.0/en/gis-geometry-class-hierarchy.html

以上是关于MySQL数据类型 - 空间数据类型 的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据类型 - 空间数据类型

MySQL数据类型 - 空间数据类型

MySQL数据类型 - 空间数据类型

MySQL数据类型 - 空间数据类型

MySQL数据类型 - 空间数据类型

MySQL日期数据类型时间类型使用总结