工作中遇到空间数据,提供给我们的是二进制的Wkt的格式,存储在Mysql数据库中,采集的时候告知我们是Wkb的数据格式,由于第一次接触这样的数据格式,去查了官方文档
https://www.mysqlzh.com/doc/177/148.html
试了文档给的几个格式,数据采集的时候却到报错,百度翻译如下
无奈,只能改用字符串类型,text又报错数据太长,只能用longtext,数据取回后,要处理转换,将Wkb二进制转换成Wkt的数据格式,通过官方文档给的函数,发现全部报错
报错信息翻译如下
然后有开始研究Mysql服务器字符串大端小端的区别以及怎么转换,研究半天无果,只能求助大佬,大佬给了一个函数st_astext(st_geometryfromwkb())进行转换,拿出单一条数据测试确实可以,但是整表更新却发现不行,最后发现longtext字段是非二进制的,函数识别不出,于是st_astext(st_geometryfromwkb(UNHEX( @a))); 这样又包了一层测试确实可以,大佬不愧是大佬,然后就是将数据插入到结果表,发现插入不进geometry这个字段,于是将数据又套上一ST_GeomFromText()函数,完美解决,最后贴上各个函数的用法,学到了问题要一步一步的解决,不能盲目没有方向!
标签:Wkb,st,报错,Mysql,大佬,Wkt From: https://www.cnblogs.com/aitongtong/p/16625285.html