Convert MySQL's POINT to text in PHP
我发现了这个问题&回答它解决了我的问题。 但我还没有找到多边形的解决方案。
有人有解决方案将blob / polygon转换为类似于点示例的文本吗?
答案 0 :(得分:1)
如果你使用ST_NumGeometries(来自https://dev.mysql.com/doc/refman/5.7/en/gis-geometrycollection-property-functions.html#function_st-numgeometries)它应该给你点数,然后你可以使用循环和ST_GeometryN来获取每个单独的点。这仍然需要像现有的那样进行解码。
您可以将多边形转换回文本(AsText),然后在那里解析数据。
答案 1 :(得分:0)
如您所知,MySQl(和MariDB)存储几何数据如下:
MySQL使用4个字节存储几何值,以指示SRID,后跟值的WKB表示。有关WKB格式的说明,请参见熟知的二进制(WKB)格式。
See MySQL documents了解更多信息。
通过使用GeoPHP,您可以转换任何Geo数据(来自我的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;
其中$ val是MySQL表中的列值。
第一行将数据解压缩为两部分:
1- SRID:前4个字节 2- WKB:其他为hex strig
并使用GeoPHP将WKB十六进制字符串转换为WKT。