私は近接度をカウントするためにmysqlを使用しています。そのために、距離という名前のプロシージャを1つ作成しました。これは次のとおりですが、そのプロシージャは正しく機能していませんが、SQLステートメントは機能しています Haversine formulas
。私に適切な結果。私は本当にdon't know wht i am missing in formula one.
私のテーブルのデータ構造は次のとおりです
フォーミュラワン
id varchar(100)
userid varchar(100)
username varchar(100)
currLoc point
radius int(10)
フォーミュラ 2
id varchar(30)
userid varchar(30)
username varchar(40)
lat float(10,6)
lan float(10,6)
radius varchar(100)
フォーミュラワン: リファレンス
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: リファレンス
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 はキロメートル単位の半径です