Я узнал, что если вы сохраняете значения в виде точек геометрии, это потому, что вы собираетесь попытаться использовать доступные Функции геометрии , такие как 'GLength' или '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, вы должны сделать что-то похожее на это (в зависимости от вашей реализации и того, гдеВы получаете свое значение таблицы $)
$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'
)
)
);
Надеюсь, это поможет.