mysql wkb 二进制解析 mutipoint point

有时候读取mysql 的时候,没法立即解析mutipoint、point 等点或者曲线数据。而拿到了二进制数据。

通过https://www.docs4dev.com/docs/zh/mysql/5.7/reference/gis-data-formats.html 我们知道此二级制数据是一种wkb 编码

python 可以参考:https://blog.csdn.net/weixin_44725128/article/details/121785363

这里有一点需要注意:mysql 取出来的Point类型的数据的bytes 是25字节,wbk 的只占用了21字节,所以需要进行截断再计算!

from shapely import wkb

a=b'\x00\x00\x00\x00\x01\x01\x00\x00\x00Z\xd7h9\xd0iD@\xf2\x97\x16\xf5I{R\xc0'
b=b'\x00\x00\x00\x00\x01\x04\x00\x00\x00\x03\x00\x00\x00\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00H@\x00\x00\x00\x00\x00\x000@\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x80H@\x00\x00\x00\x00\x00\x000@\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00I@\x00\x00\x00\x00\x00\x000@'


print(wkb.loads(a[4:])) # point
print(wkb.loads(b[4:])) # multipoint

另外像MULTIPOINT 这种,获取到的bytes 数据的大小都是不固定的。  

posted @ 2022-07-27 18:08  xunhanliu  阅读(255)  评论(0编辑  收藏  举报