我的表中有一个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'
)
)
);