如何提取空间索引的数据到我的PHP应用程序



我的表中有一个POINT类型的空间索引,用于存储某个位置的地理坐标。

我已经能够成功地插入一个点到我的表使用这个:

$point = new Zend_Db_Expr("GeomFromText('POINT(-12.461334 130.841904)')");
$property->setLocation($point);

我正在使用Zend,我正在尝试找出如何将纬度和经度值提取回我的应用程序。有人能帮我吗?

现在我使用下面的代码来返回POINT的存储值:

$properties->getLocation();

是不是有一些PHP函数可以让我返回-12.461334 130.841904

我了解到,如果您将值保存为几何点是因为您将尝试使用可用的几何函数,如' length '或'LineString',来计算距离或边界,那么您将输出一个值,通常是浮点数,以此表为例

event
id -> int -> 11 -> unsigned -> primary -> auto increment
name -> varchar -> 255
location -> point

使用此查询,您将获得所提供的长、长位置与表事件

中的行值之间的距离。
SELECT
    ev.id,
    ev.name,
    (
        GLength(
            LineString(
                (
                    PointFromWKB(
                        POINT(
                            32.660629,
                            -117.106354
                        )
                    )
                ),
                (
                    ev.location
                )
            )
        )
    ) * 100
    AS distance
FROM
event ev

,结果得到

=====================================
= id = name     = distance          =
=====================================
= 1  = event x  = 16.956332397071797=
=====================================

要将其实现为Zend查询,您将执行类似于此的操作(取决于您的实现以及您从何处获得$table值)

$point = new stdClass();
$point->lat = 32.660629;
$point->lon = -117.106354;
$table = $this->getDbTable();
$resultSet = $table->fetchAll(
    $table->select()
        ->from(
            $table,
                array(
                    'id',
                    'name',
                    new Zend_Db_Expr("
                            (
                                GLength(
                                    LineString(
                                        (
                                            PointFromWKB(
                                                POINT(
                                                    {$from->lat},
                                                    {$from->lon}
                                                )
                                            )
                                        ),
                                        (
                                            location
                                        )
                                    )
                                )
                            ) * 100
                            AS 'distance'
                    "
                    ),
                    'category',
                    'user'
                )
            )
        );

最新更新