【python】使用wkt格式的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【python】使用wkt格式的数据相关的知识,希望对你有一定的参考价值。

参考技术A wkt是以文本形式描述的地理数据存储格式,常用的WKT数据格式如下:

更多参考:
https://www.cnblogs.com/GIS-Pirlo/archive/2011/08/26/2154549.html

运行结果

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

支持的空间数据格式

有两种标准空间数据格式用于表示查询中的几何对象:

●已知文本(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

以上是关于【python】使用wkt格式的数据的主要内容,如果未能解决你的问题,请参考以下文章

QGIS中WKT转为可视化涂层

QGIS中WKT转为可视化涂层

空间数据存储格式wkb和wkt(转载)

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

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

ArcMap中使用ArcPy实现Geometry与WKT的相互转换