私は近接を数えるためにmysqlを使用していますが、以下のようなdistanceという名前のプロシージャを作成しましたが、プロシージャは正しく動作しませんが、SQL文が動作しています両方とも私はHaversine formulas
だと思いますが、私には適切な結果を与えていません。 I式のためHaversine公式の結果が異なる
を次のように実際に私のテーブルのdon't know wht i am missing in formula one.
データ構造は、1
あるid varchar(100)
userid varchar(100)
username varchar(100)
currLoc point
radius int(10)
に式2用
フォーミュラワン:reference
sql statement to execute distance function
SELECT userid, username, distance(userstatus.currLoc,
GeomFromText('POINT(23.039574 72.56602)')) AS cdist
FROM userstatus HAVING cdist <= 0.6 ORDER BY cdist LIMIT 10
RETURN 6371 * 2 *
ASIN(SQRT(POWER(SIN(RADIANS(ABS(X(a)) - ABS(X(b)))), 2) +
COS(RADIANS(ABS(X(a)))) * COS(RADIANS(ABS(X(b)))) *
POWER(SIN(RADIANS(Y(a) - Y(b))), 2)));
式2:reference
SELECT *,(((acos(sin((23.039574*pi()/180)) *
sin((lat *pi()/180))+cos((23.039574*pi()/180)) *
cos((lat *pi()/180)) * cos(((72.56602- lon)*pi()/180))))*
180/pi())*60*1.1515*1.609344) as distance
FROM status HAVING distance <= 0.6
ここで0.6は、発現の
+1私の注意を引くために、さて、それでは、私はどのような標準と適切なものを使用する必要がありますか? – Hunt
式2は有効なHaversine式ですが、 – Hunt