2012-10-26 2 views
0

Я использую запрос haversine, чтобы вытащить места, ближайшие к лат/лону, предоставленные из мобильного приложения.расчет расстояния с haversine и float ... kinda working

Запрос выглядит следующим образом:

SELECT *,(((acos(sin(($latitude *pi()/180)) * sin((`lat`*pi()/180))+cos(($latitude *pi()/180)) * cos((`lat`*pi()/180))* cos((($longitude - `lon`)*pi()/180))))*180/pi())*60*1.1515) AS dist_x 
FROM `work_places` 
HAVING dist_x <= '1' 
ORDER BY dist_x ASC 
LIMIT 10 

Это работает просто отлично, и я получаю именно те места, я должен получать.

Проблема заключается в преобразовании dist_x в нечто, читаемое пользователями. Прямо сейчас, скажем, dist_x читается как: 0.00996273036944 (floatval и как строка показывает то же самое, что и преобразование)

Поскольку запрос выполняется с 1 милю, я пытаюсь преобразовать это в ногу, поэтому я разделяю dist_x по 5280.

 $distance = (float)($dist_x/5280); 

Что я получаю обратно $ = расстояние 1.88688075179E-6

Что я делаю неправильно?

+0

коэффициента немного неправильно: 1852 м (морская миля)/1609,344 м (стандартные миль) ~ 1,1508. Просто небольшая точка .... –

+0

Я не понимаю, где вы видите эти значения ... – ppetree

+0

В конце инструкции SELECT у вас есть «pi()) * 60 * 1.1515». Вы получаете результат в виде радианов, преобразуете его в градусы, затем в arcminutes, умножая на 60. Один arcminute - это морская миля, а морская миля - 11508 миль. –

ответ

2

Возможно, мне что-то не хватает, но если вы хотите перевести мили на ноги, разве вы не хотите размножаться на 5280 вместо деления?

+0

Это то, что происходит, когда вы работаете в течение многих часов ... вы зигзажите, когда вы должны зацикливаться и делать глупые небольшие ошибки, и вы не можете понять, почему вы получаете ошибки, которые вы получаете, и вы публикуете глупые вопросы для других люди, чтобы ответить! Лол спасибо! – ppetree

2

Миля является 5280 футов, поэтому он должен быть

$distance = (float)($dist_x * 5280); 
+0

Я дал localhost решить, потому что ... он ответил сначала ... но спасибо! – ppetree

Смежные вопросы