MySQL 大圏距離 (Haversine Formula)
この記事では、MySQL のみを使用して 2 つの地理座標間の大圏距離を計算するという課題について説明します。 。従来の PHP 実装は、複数の SQL クエリと複雑な計算を必要とし、煩雑になる場合があります。
解決策
PHP コードを純粋な MySQL に変換するには、Haversine 公式を利用します。 、球上の 2 点間の距離を計算する数式。この式は、MySQL ACOS() 関数と RADIANS() 関数でサポートされています。
対応する MySQL クエリは次のとおりです:
SELECT id, ( 3959 * ACOS( COS(RADIANS(37)) * COS(RADIANS(lat)) * COS(RADIANS(lon) - RADIANS(-122)) + SIN(RADIANS(37)) * SIN(RADIANS(lat)) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0, 20;
説明
この MySQL ベースのアプローチを使用すると、外部の PHP 計算や追加の SQL を必要とせずに、座標間の大圏距離を効率的に計算できます。クエリ。
以上がMySQL のみを使用して大圏距離を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。