ホームページ  >  記事  >  データベース  >  ## MySQL で半径ベースの位置検索の精度を向上させるにはどうすればよいですか?

## MySQL で半径ベースの位置検索の精度を向上させるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-28 04:58:01551ブラウズ

## How to Improve the Accuracy of Radius-Based Location Searches in MySQL?

半径ベースの検索に対する MySQL の経度および緯度クエリの精度の向上

mySQL で半径ベースの位置検索を実行するときに発生する一般的な問題指定された半径から大幅に逸脱した結果が得られています。この不一致は、多くの場合、距離計算式のエラーによって発生し、不正確な距離測定につながります。

この問題を解決するには、わずかに異なる距離計算方法を利用する洗練されたクエリを検討してください。

SELECT
    `id`,
    (
        6371 *
        acos(
            cos( radians( :lat ) ) *
            cos( radians( `lat` ) ) *
            cos(
                radians( `long` ) - radians( :long )
            ) +
            sin(radians(:lat)) *
            sin(radians(`lat`))
        )
    ) `distance`
FROM
    `location`
HAVING
    `distance` < :distance
ORDER BY
    `distance`
LIMIT
    25

このクエリ内:

  • :lat と :long はユーザー定義の座標を表します。
  • lat と long はデータベースに保存されている座標を表します。
  • :距離は、マイル (3959 を 6371 に置き換える場合はキロメートル) 単位で測定される、指定された半径に対応します。

この式は、ハバーサイン式に基づいて距離を計算します。これにより、使用される式よりも正確な結果が得られます。元のクエリで。この改訂された式を組み込むことで、半径検索機能を改良し、返される結果が指定された半径範囲に確実に準拠するようにすることができます。

以上が## MySQL で半径ベースの位置検索の精度を向上させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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