gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:38:34 27 4
gpt4 key购买 nike

我想读取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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com