标签:翻转 式表 strong 上下文 lin png 方向 mys 接受
支持的空间数据格式有两种标准空间数据格式用于表示查询中的几何对象:
●已知文本(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
标签:翻转 式表 strong 上下文 lin png 方向 mys 接受
原文地址:https://blog.51cto.com/15023289/2561047