Мен құндылықтарды Геометрия ұпайлары ретінде сақтасаңыз, сіз қолдана алатын » Геометрия функциялары , қашықтықтар немесе шекараларды есептеу үшін '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 сұрауы ретінде іске асыру үшін, сізге ұқсас нәрсені жасай аласыз (сіздің енгізуіңізге байланысты және $ 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'
)
)
);
Бұл көмектеседі деп үміттенемін.