3

我正在开发一个集成 mapquest 地图并使用 mapquest API 的应用程序。

此时我想实现以下目标:注册用户必须输入纬度和经度信息,并且在数据库中必须将这些信息存储为几何类型字段。相反,查看其帐户的用户应该会看到输入的纬度和经度信息。

在较早的简化代码库中,我通过使用 MySQL 函数AsTextGeomFromText. 但现在我在 CodeIgniter 上,需要在 PHP 中进行转换

PHP 中是否有与 MySQLAsTextGeomFromText函数等效的东西?

4

2 回答 2

9

看来该PHP unpack函数是提取坐标信息所需要的。

MySQL以 WKB(众所周知的二进制)格式存储几何字段。当提供正确的格式说明符时,该unpack函数能够提取该信息。以下代码来自成功提取所需信息的测试脚本。

请注意,我format的 for unpack 与参考的略有不同。这是因为 WKB 字符串不是使用该AsWKB()函数从 MySQL 中检索到的,因此它包含额外的 padding

<?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);
?>

参考MySQLESRI 网络

于 2012-08-28T14:42:40.263 回答
0

我也在尝试提取几何字段数据。我正在使用MySQLi该类来检索数据行并根据字段类型显示它。

虽然我还没有弄清楚如何解码几何字段数据,但我可以使用该bin2hex函数查看它。GeomFromText('POINT(-73.91353 42.80611)') 使用using存储的点bin2hex给了我一个 50 个字符的字符串值

0000000001010000008d7a8846777a52c0417dcb9c2e674540

可以在此处找到字段类型编号的部分列表。

我希望这对你有帮助!如果我发现更多,我会在这里传递。

于 2012-08-27T19:49:36.293 回答