SELECT postcode、lat、lng、truncate((degrees(acos(sin(radians(lat
))* sin(radians('。$latitude。'))+ cos(radians(lat
))* cos(radians('。$latitude。 '))* cos(radians(lng
-('。$longitude。')))))* 69.172)、2)as distance FROMmyData
このクエリは、距離(マイル単位)を計算します。しかし、グーグルマップで同じ緯度と経度の距離をチェックすると、私の結果は一致しません。距離が約10マイルの場合、私の結果は少し正確ですが、それ以上に間違っています(たとえば、私の結果は13マイルを示し、googleは同じ郵便番号の値に対して22マイルを示しました)
このクエリはhttp://forums.mysql.com/read.php?23,3868,3868#msg-3868から取得しました
どうすれば正確にできますか。何か案は?手伝ってくれてありがとう。
アップデート
PHPで@Blixtコードを試しました。2つのサンプル郵便番号とその広背筋をピックアップしました
//B28 9ET
$lat1 = 52.418819;
$long1 = -1.8481053;
//CV5 8BX
$lat2 = 52.4125573;
$long2 = -1.5407743;
$dtr = M_PI / 180;
$latA = $lat1 * $dtr;
$lonA = $long1 * $dtr;
$latB = $lat2 * $dtr;
$lonB = $long2 * $dtr;
$EarthRadius = 3958.76; //miles
echo $distance = $EarthRadius * acos(cos($latA) * cos($latB) * cos($lonB - $lonA) + sin($latA) * sin($latB));
結果:
私のアプリ-12.95マイル
グーグル-17.8マイル
それを正しくする方法はありますか?