本节中列出的函数不限制它们的参数,并且接受任何类型的几何值。gydF4y2Ba
除非另有说明,本节中的函数以如下方式处理它们的几何参数:gydF4y2Ba
如果任何参数是gydF4y2Ba
零gydF4y2Ba
,返回值为gydF4y2Ba零gydF4y2Ba
.gydF4y2Ba如果任何几何参数不是语法形式良好的几何,则gydF4y2Ba
ER_GIS_INVALID_DATAgydF4y2Ba
发生错误。gydF4y2Ba如果任何几何参数在未定义的空间参考系统(SRS)中是语法格式良好的几何,则一个gydF4y2Ba
ER_SRS_NOT_FOUNDgydF4y2Ba
发生错误。gydF4y2Ba如果任何SRID参数不在32位无符号整数的范围内,则使用gydF4y2Ba
ER_DATA_OUT_OF_RANGEgydF4y2Ba
发生错误。gydF4y2Ba如果任何SRID参数引用一个未定义的SRS,则gydF4y2Ba
ER_SRS_NOT_FOUNDgydF4y2Ba
发生错误。gydF4y2Ba否则返回值为non-gydF4y2Ba
零gydF4y2Ba
.gydF4y2Ba
这些函数可用于获取几何属性:gydF4y2Ba
ST_Dimension (gydF4y2Ba
ggydF4y2Ba
)gydF4y2Ba返回几何值的固有尺寸gydF4y2Ba
ggydF4y2Ba
.取值范围为−1、0、1、2。这些值的含义在gydF4y2Ba第11.4.2.2节“几何类”gydF4y2Ba.gydF4y2BaST_Dimension ()gydF4y2Ba
按照本节介绍中的描述处理其参数。gydF4y2Bamysql> SELECT ST_Dimension(ST_GeomFromText('LineString(1,2,2)'));+------------------------------------------------------+ | ST_Dimension (ST_GeomFromText(“LineString (1 1 2 2 )')) | +------------------------------------------------------+ | 1 | +------------------------------------------------------+gydF4y2Ba
ST_Envelope (gydF4y2Ba
ggydF4y2Ba
)gydF4y2Ba返回几何值的最小包围矩形(MBR)gydF4y2Ba
ggydF4y2Ba
.返回结果为gydF4y2Ba多边形gydF4y2Ba
由边界框的角点定义的值:gydF4y2Ba多边形((minx miny, maxx miny, maxx maxxy, minx maxxy, minx miny))gydF4y2Ba
mysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1,2,2)')));+----------------------------------------------------------------+ | ST_AsText (ST_Envelope (ST_GeomFromText (LineString (1 1 2 2 )'))) | +----------------------------------------------------------------+ | 多边形(1 1 2 1 2 2 1 2 1 1 )) | +----------------------------------------------------------------+gydF4y2Ba
如果参数是一个点,或者垂直或水平线段,gydF4y2Ba
ST_Envelope ()gydF4y2Ba
返回点或线段作为它的MBR,而不是返回无效的多边形:gydF4y2Bamysql> SELECT ST_AsText(ST_Envelope(ST_GeomFromText('LineString(1,1,2)')));+----------------------------------------------------------------+ | ST_AsText (ST_Envelope (ST_GeomFromText(“LineString (1 1 1 2 )'))) | +----------------------------------------------------------------+ | LINESTRING (1 1 1 2 ) | +----------------------------------------------------------------+gydF4y2Ba
ST_Envelope ()gydF4y2Ba
像本节介绍中描述的那样处理它的参数,除了这个例外:gydF4y2Ba如果几何图形具有地理空间参考系统(SRS)的SRID值,则为gydF4y2Ba
ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRSgydF4y2Ba
发生错误。gydF4y2Ba
ST_GeometryType (gydF4y2Ba
ggydF4y2Ba
)gydF4y2Ba返回一个二进制字符串,指示几何实例所属的几何类型的名称gydF4y2Ba
ggydF4y2Ba
是成员。该名称对应于一个可实例化对象gydF4y2Ba几何gydF4y2Ba
子类。gydF4y2BaST_GeometryType ()gydF4y2Ba
按照本节介绍中的描述处理其参数。gydF4y2Bamysql> SELECT ST_GeometryType(ST_GeomFromText('POINT(1)'));+------------------------------------------------+ | ST_GeometryType (ST_GeomFromText('点(1 1 )')) | +------------------------------------------------+ | 点 | +------------------------------------------------+gydF4y2Ba
ST_IsEmpty (gydF4y2Ba
ggydF4y2Ba
)gydF4y2Ba这个函数是一个占位符,当几何集合值为空时返回1,否则返回0。gydF4y2Ba
唯一有效的空几何图形以空几何图形集合值的形式表示。MySQL不支持GISgydF4y2Ba
空gydF4y2Ba
值如gydF4y2Ba点空gydF4y2Ba
.gydF4y2BaST_IsEmpty ()gydF4y2Ba
按照本节介绍中的描述处理其参数。gydF4y2BaST_IsSimple (gydF4y2Ba
ggydF4y2Ba
)gydF4y2Ba如果几何值返回1gydF4y2Ba
ggydF4y2Ba
按照ISO标准是简单的吗gydF4y2BaSQL/MM第3部分:空间gydF4y2Ba标准。gydF4y2BaST_IsSimple ()gydF4y2Ba
如果参数不简单,则返回0。gydF4y2Ba下面给出的可实例化几何类的描述gydF4y2Ba第11.4.2节,“OpenGIS几何模型”gydF4y2Ba包括导致类实例被分类为不简单的特定条件。gydF4y2Ba
ST_IsSimple ()gydF4y2Ba
像本节介绍中描述的那样处理它的参数,除了这个例外:gydF4y2Ba如果几何图形具有超出范围的经度或纬度的地理SRS,则会发生错误:gydF4y2Ba
如果经度值不在(−180,180])范围内,则angydF4y2Ba
ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGEgydF4y2Ba
发生错误(gydF4y2BaER_LONGITUDE_OUT_OF_RANGEgydF4y2Ba
在MySQL 8.0.12之前)。gydF4y2Ba如果纬度值不在[- 90,90]范围内,则使用gydF4y2Ba
ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGEgydF4y2Ba
发生错误(gydF4y2BaER_LATITUDE_OUT_OF_RANGEgydF4y2Ba
在MySQL 8.0.12之前)。gydF4y2Ba
范围以度为单位。由于浮点运算,精确的范围限制略有偏差。gydF4y2Ba
ST_SRID (gydF4y2Ba
ggydF4y2Ba
[,gydF4y2BasridgydF4y2Ba
])gydF4y2Ba用一个参数表示一个有效的几何对象gydF4y2Ba
ggydF4y2Ba
,gydF4y2BaST_SRID ()gydF4y2Ba
返回一个整数,表示所关联的空间参考系统(SRS)的IDgydF4y2BaggydF4y2Ba
.gydF4y2Ba第二个可选参数表示一个有效的SRID值,gydF4y2Ba
ST_SRID ()gydF4y2Ba
返回一个与第一个参数具有相同类型的对象,其SRID值等于第二个参数。这只设置对象的SRID值;它不执行任何坐标值的转换。gydF4y2BaST_SRID ()gydF4y2Ba
像本节介绍中描述的那样处理它的参数,除了这个例外:gydF4y2Ba对于单参数语法,gydF4y2Ba
ST_SRID ()gydF4y2Ba
返回几何体SRID,即使它指向一个未定义的SRS。一个gydF4y2BaER_SRS_NOT_FOUNDgydF4y2Ba
不发生错误。gydF4y2Ba
ST_SRID (gydF4y2Ba
而且gydF4y2BaggydF4y2Ba
,gydF4y2Batarget_sridgydF4y2Ba
)gydF4y2BaST_Transform (gydF4y2Ba
区别如下:gydF4y2BaggydF4y2Ba
,gydF4y2Batarget_sridgydF4y2Ba
)gydF4y2BaST_SRID ()gydF4y2Ba
改变几何SRID值而不改变其坐标。gydF4y2BaST_Transform ()gydF4y2Ba
除了改变其SRID值外,还转换几何坐标。gydF4y2Ba
mysql> SET @g = ST_GeomFromText('LineString(1,2,2)', 0);SELECT ST_SRID(@g);+-------------+ | ST_SRID (@g ) | +-------------+ | 0 | +-------------+ mysql >设置@g = ST_SRID (@g, 4326);SELECT ST_SRID(@g);+-------------+ | ST_SRID (@g ) | +-------------+ | 4326年 | +-------------+gydF4y2Ba
可以通过传递到在特定SRID中创建几何图形gydF4y2Ba
ST_SRID ()gydF4y2Ba
用于创建空间值的mysql特定函数之一的结果,以及一个SRID值。例如:gydF4y2BaSET @g1 = ST_SRID(点(1,1),4326);gydF4y2Ba
但是,该方法在SRID 0中创建几何图形,然后将其强制转换为SRID 4326 (WGS 84)。一种更好的替代方法是使用正确的空间参考系统来创建几何图形。例如:gydF4y2Ba
SET @g1 = ST_PointFromText('POINT(1 1)', 4326);SET @g1 = ST_GeomFromText('POINT(1 1)', 4326);gydF4y2Ba
的双参数形式gydF4y2Ba
ST_SRID ()gydF4y2Ba
对于纠正或更改具有不正确SRID的几何图形的SRS等任务非常有用。gydF4y2Ba