php - GeoPHP 转换 mydql WKB 时出现异常 目前仅支持 NDR (little endian) SKB 格式

标签 php mysql

我想读取mysql POINT列并将其转换为WKT。正如您所知,MySQL 中 GEOMETRY 的数据格式是 WKB,因此要使用 GeoPHP 进行转换,您应该:

$wkb_reader = new WKB();
$geometry = $wkb_reader->read($val,FALSE);
$wkt_writer = new WKT();
$wkt = $wkt_writer->write(oGeometry);

其中 $val 是 BLOB(字节数组)。

它面临错误(读取数据时):

Exception: Only NDR (little endian) SKB format is supported at the moment

编辑:

Here是同样的问题,但 $val 可能是一个点

最佳答案

如您所知,MySQl(和 MariDB)存储几何数据如下:

MySQL stores geometry values using 4 bytes to indicate the SRID followed by the WKB representation of the value. For a description of WKB format, see Well-Known Binary (WKB) Format.

See MySQL documents了解更多信息。

因此,前 4 个字节是 SRID,必须从数据中删除。您可以转换任何地理数据(来 self 的 MySQL),如下所示:

$data = unpack("lsrid/H*wkb", $val);
$wkb_reader = new WKB();
$geometry = $wkb_reader->read($data['wkb'], TRUE);
$wkt_writer = new WKT();
$wkt = $wkt_writer->write($geometry);
return $wkt;

更多信息:https://stackoverflow.com/a/45089036/635891

关于php - GeoPHP 转换 mydql WKB 时出现异常 目前仅支持 NDR (little endian) SKB 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45076727/

相关文章:

php - 使用Android Studio将音频文件上传到服务器

mysql - 规范化数据库以减少依赖性

mysql - Laravel 4 MySQL 查询数组?

mysql - Django - Charfield 在我的 BD 中创建一个项目

mysql - 使用 not 运算符的限制无法正常工作 MySql

php - mysqli_fetch_assoc to to json 编码数组适用于大多数查询,但不适用于其他查询(尽管查询返回有效结果)

php - 在 Laravel 中使用助手的最佳实践是什么

php - _POST 方法返回 ???当请求utf8字符时

php - Laravel 5 中的空值

mysql - 一次连接两个表