ホームページ > バックエンド開発 > PHPチュートリアル > PHP で 2 つの座標間の距離を正確に計算するにはどうすればよいですか?

PHP で 2 つの座標間の距離を正確に計算するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-03 14:48:10
オリジナル
718 人が閲覧しました

How Can I Accurately Calculate the Distance Between Two Coordinates in PHP?

PHP で 2 つの座標間の距離を正確に測定する

地球表面上の 2 点間の距離の計算には、特に天文学的な場合に精度が必要です距離が関係します。 Haversine 公式はこのような計算によく使用される方法ですが、提供されたコードでの実装では不正確な結果が得られるようです。

Haversine 公式に関する考慮事項

Haversine 公式は球面を使用します。三角法を使用して 2 つの地理座標間の距離を推定します。短距離では正確な近似値が得られますが、極端な距離 (対蹠地の近くなど) では信頼性が低くなります。

代替計算式: Vincenty

Haversine の公式の制限、特に大規模な距離計算の場合、Vincenty の公式は精度を向上させます。反復手法を使用して、地球の表面を近似する楕円体に沿った測地距離を計算します。

実装

以下は、PHP での Vincenty 式の実装です。

function vincentyGreatCircleDistance($latFrom, $lonFrom, $latTo, $lonTo, $earthRadius = 6371000) {
    // Convert to radians
    $latFrom = deg2rad($latFrom);
    $lonFrom = deg2rad($lonFrom);
    $latTo = deg2rad($latTo);
    $lonTo = deg2rad($lonTo);

    $lonDelta = $lonTo - $lonFrom;
    $a = pow(cos($latTo) * sin($lonDelta), 2) +
        pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2);
    $b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta);

    $angle = atan2(sqrt($a), $b);
    return $angle * $earthRadius;
}
ログイン後にコピー

この実装は、距離をメートル単位で出力します。 $earthRadius を入力します。マイルの場合は、$earthRadius パラメーターとして 3959 マイルを渡すことができます。 Vincenty の公式を利用すると、極端な距離であっても信頼性の高い距離計算が保証されます。

以上がPHP で 2 つの座標間の距離を正確に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート