排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
MySQL数据类型 - 空间数据类型(5)
MySQL数据类型 - 空间数据类型(5)
数据库杂货铺
2021-04-12
1067
几何体规范性和有效性
对于几何值,MySQL能够辨别语法规范性和几何有效性。
如果一个几何体满足以下(不详尽)列表中的条件,那么它在句法上是正确的:
●
Linestring至少有两个点
●
Polygon至少有一个环
●
Polygon环是闭合的(第一个和最后一个点相同)
●
Polygon环至少有4个点(最小多边形是第一个和最后一个点相同的三角形)
●
集合不为空(GeometryCollection除外)
如果一个几何体在句法上结构规范,并且满足以下条件(非详尽),则几何体是有效的:
●
Polygon不是自相交的
●
Polygon内环在外环内
●
Multipolygon中没有重叠的多边形
如果一个几何体的语法结构不规范,空间函数就会执行失败。空间引入函数在解析WKT或WKB值时,如遇到语法不规范的几何体时会引发错误。将几何体存储到表中时,也将检查语法格式是否规范。
允许插入、查询和更新几何上无效的几何体,但它们必须具有规范的语法形式。由于计算开销,MySQL没有显式检查几何有效性。空间计算可以检测到无效几何体的某些情况并引发错误,但它们也可能返回未定义的结果而没有检测到无效。需要有效几何体的应用程序应使用ST_IsValid()函数进行检查。
空间参照系支持
空间数据的空间参照系(SRS)是一种基于坐标的地理位置系统。
有不同类型的空间参照系:
●
投射的
SRS是地球在平面上的投影,即平面地图。例如,地球仪内的一个灯泡照射在环绕地球仪的纸筒上,将地图投影到纸上。结果是地理
参考:每个点都映射到地球上的一个地方。该平面上的坐标系是笛卡尔坐标系,使用长度单位(米、英尺等),而不是经纬度。
本例中的球体是椭圆体,也就是扁平球体。地球的南北轴比东西轴短一些,所以稍微平坦的球体更正确,但完美的球体允许更快的计算。
●
地理SRS是一个非投影SRS,以某种角度单位表示椭球体上的经纬度坐标。
●
在MySQL中,SRID 0表示一个无限平坦的笛卡尔平面,其轴没有指定任何单位。与投影的SRS不同,它没有地理信息,也不一定代表地球。它是一个抽象的平面,可以用于任何事物。SRID 0是MySQL中空间数据的默认SRID。
MySQL在数据字典mysql.st_spatial_reference_systems表中为空间数据维护有关可用空间参照系的信息,它可以存储投影SRS和地理SRS的条目。这个数据字典表是不可见的,但是SRS条目内容可以通过INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS表获得,实现
为
mysql.st_spatial_reference_systems
上的视图。
以下是SRS条目的示例:
此条目描述用于GPS系统的SRS。它的名称(SRS_NAME)为WGS 84,ID(SRS_ID)为4326,这是欧洲石油调查组(EPSG)使用的ID。
DEFINITION列中的SRS定义是WKT值,
这种呈现依据于开放地理空间联盟文件OGC 12-063r5。
SRS_ID值和作为SRID参数传递给空间函数的值是相同类型的。SRID 0(无单位笛卡尔平面)是特殊的。它始终是一个合法的空间参照系ID,可用于任何依赖于SRID值的空间数据计算。
对于多个几何值的计算,所有值必须具有相同的SRID,否则将发生错误。
当GIS函数需要时,SRS定义解析按需进行。解析后的定义缓存在数据字典缓存中,这样就不会为每个需要SRS信息的语句产生过多解析开销。
为了能够操作存储在数据字典中的SRS条目,MySQL提供了以下SQL语句:
●
CREATE SPATIAL REFERENCE SYSTEM
●
DROP SPATIAL REFERENCE SYSTEM
创建空间列
MySQL提供了为几何体类型创建空间列的标准方法,例如,使用CREATE TABLE或ALTER TABLE。MyISAM、InnoDB、NDB和ARCHIVE表支持空间列。
具有空间数据类型的列可以具有SRID属性,用来显式指示存储在列中的值的空间参照系(SRS)。
●
使用CREATE TABLE语句创建具有空间列的表:
●
使用ALTER TABLE语句在现有表中添加或删除空间列:
填充空间列
创建空间列后,可以使用空间数据填充这些列。
值应以内部几何格式存储,但可以将它们从已知文本(WKT)或已知二进制(WKB)格式转换为该格式。以下示例演示如何通过将WKT值转换为内部几何体格式,将几何值插入表中:
●
直接在INSERT语句中执行转换:
●
在INSERT之前执行转换:
以下示例将更复杂的几何体插入表中:
前面的示例使用ST_GeomFromText()创建几何值。还可以使用特定于类型的函数:
需要使用WKB几何值表示的客户端应用程序负责向服务器发送格式正确的WKB查询。有几种方法可以满足这一要求。例如:
●
使用十六进制字面量插入POINT(1 1)值:
●
ODBC应用程序可以发送WKB表示,并使用BLOB类型的参数将其绑定到占位符:
其他编程接口可能支持类似的占位符机制。
●
在C程序中,可以使用mysql_real_escape_string_quote()对二进制值进行转义,并将结果包含在发送到服务器的查询字符串中。
官方参考文档:
https://dev.mysql.com/doc/refman/8.0/en/geometry-well-formedness-validity.html
mysql
文章转载自
数据库杂货铺
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨