ホームページ  >  記事  >  データベース  >  緯度と経度を使用して 2 点間の距離を計算するにはどうすればよいですか?

緯度と経度を使用して 2 点間の距離を計算するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 01:51:02865ブラウズ

How Can I Calculate the Distance Between Two Points Using Latitude and Longitude?

緯度と経度を使用した点間の距離の計算

多くのシナリオでは、それぞれの点を考慮して 2 つの点間の距離を決定することが必要になります。緯度と経度の座標。典型的な例には、特定の場所から特定の半径内にあるポイントを見つけることが含まれます。

これを実現するには、数式を利用して距離を計算します。次の関数の例を考えてみましょう。

<code class="php">function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') {
    $theta = $longitude1 - $longitude2;
    $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) +
                (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) *
                cos(deg2rad($theta)));
    $distance = acos($distance);
    $distance = rad2deg($distance);
    $distance = $distance * 60 * 1.1515;
    switch($unit) {
        case 'Mi':
            break;
        case 'Km':
            $distance = $distance * 1.609344;
    }
    return (round($distance, 2));
}</code>

または、SQL クエリを使用して、次のような式を使用して半径内の距離を計算することもできます。

<code class="sql">SELECT *,(((acos(sin((".$latitude."*pi()/180)) *
            sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) *
            cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)*
            pi()/180))))*180/pi())*60*1.1515
        ) as distance
        FROM `MyTable`
        HAVING distance >= ".$distance.";</code>

これらのアプローチを利用することで、効果的に次のことができます。緯度と経度の座標に基づいて、指定された半径内の点を検索します。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。