排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
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数据类型 - 空间数据类型 (4)
MySQL数据类型 - 空间数据类型 (4)
林员外聊编程
2020-07-04
535
支持的空间数据格式
有两种标准空间数据格式用于表示查询中的几何对象:
●
已知文本(WKT)格式
●
已知二进制(WKB)格式
在内部,MySQL用与WKT或WKB格式不同的格式存储几何值。(内部格式类似于WKB,但有一个4个字节表示SRID。)
MySQL提供函数可用于在不同的数据格式之间进行转换。
以下部分介绍MySQL使用的空间数据格式:
已知文本(WKT)格式
用已知文本(WKT)表示几何值是为用
ASCII格式交换几何数据而设计的。OpenGIS规范提供了一个Backus Naur语法,它指定了写入WKT值的正式生成规则。
几何体对象的WKT表示示例:
●
Point :
点坐标不使用逗号分隔。这与SQL Point()函数的语法不同,后者要求坐标之间有逗号。注意使用适合给定空间操作上下文的语法。例如,以下语句都使用ST_X()从Point对象提取X坐标。第一种方法直接使用Point()函数生成对象。第二种方法使用WKT表示,该表示通过ST_GeomFromText()转换为一个Point。
●
有4个点的LineString对象
点坐标对儿用逗号隔开。
●
具有一个外环和一个内环的Polygon:
●
具有三个Point值的MultiPoint:
接受WKT格式表示的MultiPoint值的空间函数,如ST_MPointFromText()和ST_GeomFromText(),允许将值中的各个点用括号括起来。例如,以下两个函数调用都有效:
●
有两个LineString值的MultiLineString:
●
具有两个Polygon值的MultiPolygon:
●
包含两个Point值和一个LineString值的GeometryCollection:
已知二进制(WKB)格式
用已知二进制(WKB)表示的几何值,用于交换二进制流格式的几何数据,用包含几何WKB信息的BLOB值表示。该格式由OpenGIS规范定义。ISO
SQL/MM第3部分:空间
标准
中也对其进行了定义。
WKB使用1字节无符号整数、4字节无符号整数和8字节双精度数字(IEEE 754格式)。一个字节
有八位。
例如,对应于POINT(1 -1)的WKB值由21个字节组成,每个字节由两个十六进制数字表示:
该序列由下表所示的成分组成。
构成
大小
值
字节顺序
1 byte
01
WKB类型
4 bytes
01000000
X 坐标
8 bytes
000000000000F03F
Y 坐标
8 bytes
000000000000F0BF
构成表示如下:
●
字节顺序指示符为1或0,表示小端或大端存储。小端字节顺序和大端字节顺序也分别称为网络数据表示(NDR)和外部数据表示(XDR)。
●
WKB类型是指示几何体类型的代码。MySQL使用从1到7的值来表示Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon和GeometryCollection。
●
Point值有X和Y坐标,每一个坐标都表示为双精度值。
如OpenGIS规范中所述,对于更加复杂的几何值,WKB值具有更复杂的数据结构。
内部几何存储格式
MySQL使用4个字节表示SRID,其后跟随值的WKB表示。有关WKB格式的说明,请参阅上面的讲解。
对于WKB部分,以下针对MySQL的注意事项适用:
●
字节顺序指示符字节是1,因为MySQL采用小端存储来存储几何值。
●
MySQL支持Point、LineString、Polygon、MultiPoint、MultiLineString、MultiPolygon和GeometryCollection等几何类型。不支持其他几何体类型。
●
只有GeometryCollection可以为空。这样的值表示有0个存储元素。
●
可以顺时针和逆时针指定Polygon环。MySQL在读取数据时会自动翻转环。
笛卡尔坐标以空间参照系的长度单位存储,X值在X坐标系中,Y值在Y坐标系中。轴方向是由空间参照系指定的方向。
地理坐标以空间参照系的角度单位存储,经度在X坐标系中,纬度在Y坐标系中。轴方向和子午线由空间参照系指定。
函数LENGTH()返回值存储所需的字节数。例如:
值长度为25个字节,由以下成分组成(从十六进制值可以看出):
●
整数SRID为4字节(0)
●
1字节
用于整数字节顺序(1=小端)
●
4字节
用于整数类型信息(1=Point)
●
双精度X坐标为8字节(1)
●
双精度Y坐标为8字节(−1)
官方参考文档:
https://dev.mysql.com/doc/refman/8.0/en/gis-data-formats.html
mysql
文章转载自
林员外聊编程
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨