在PHP MySQL的二进制几何领域的转换(Conversion of MySQL binary G

2019-07-31 02:17发布

我工作的一个应用程序集成Mapquest服务地图和使用Mapquest服务API。

此时此刻我要实现以下目标:注册用户必须输入经纬度信息,并在数据库中该信息已被存储为几何类型的字段。 相反,看着自己帐户的用户会看到被输入的经纬度信息。

在早先的简化代码库我直接在MySQL查询实现这一点,通过使用MySQL函数AsTextGeomFromText 。 但现在我对笨,需要做PHP转换

有什么相当于在PHP MySQL的AsTextGeomFromText功能?

Answer 1:

看来, PHP unpack功能是什么是需要提取的坐标信息。

MySQL存储在WKB(驰名二进制)格式的几何领域。 在unpack的时候提供适当的格式说明符的功能是能够提取信息。 以下代码是从测试脚本成功地提取所期望的信息。

请注意,我的format的解压与基准略有不同。 这是因为WKB串并没有从MySQL与检索AsWKB()函数,所以它包含微胖 。

<?php
    $padding = 0;
    $order   = 1;
    $gtype   = 1;
    $lon     = -73.91353;
    $lat     = 42.80611;

    $bindata = pack('LcLd2', $padding, $order, $gtype, $lat, $lon);

    printf("Packed: %s\n\n", bin2hex($bindata));

    $result = unpack('Lpadding/corder/Lgtype/dlatitude/dlongitude', $bindata);
    var_dump($result);
?>

参考文献的MySQL和ESRI网络 。



Answer 2:

我也一样,我试图提取几何领域data.I正在使用MySQLi类来检索数据行,并根据字段类型显示。

虽然我还没有想出如何在几何字段的数据进行解码,我可以通过查看它bin2hex功能。 使用存储的点GeomFromText('POINT(-73.91353 42.80611)')使用bin2hex给我的50字符串值

0000000001010000008d7a8846777a52c0417dcb9c2e674540

字段类型号的部分列表可以发现这里 。

我希望这可以帮助你! 如果我发现更多的,我会在这里把它传递。



文章来源: Conversion of MySQL binary GEOMETRY fields in PHP