ホームページ > データベース > mysql チュートリアル > 緯度と経度を使用して、指定された半径内で最も近い地理的記録を検索するにはどうすればよいですか?

緯度と経度を使用して、指定された半径内で最も近い地理的記録を検索するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-18 16:07:13
オリジナル
965 人が閲覧しました

How to Find the Nearest Geographic Record Within a Specified Radius Using Latitude and Longitude?

緯度と経度データベース内の距離を決定します

緯度と経度の座標が与えられた場合、そのタスクは、距離が指定されたしきい値内に収まるようにしながら、最も一致する緯度と経度を持つレコードをデータベースから取得することです。距離が指定された制限を超える場合、レコードは返されません。

提供されるテーブル構造には、経度、緯度、その他の位置関連情報の列が含まれています。これを行うには、次の SQL クエリを使用します:

<code class="language-sql">SELECT latitude, longitude, SQRT(
    POW(69.1 * (latitude - [startlat]), 2) +
    POW(69.1 * ([startlng] - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM TableName HAVING distance < [radius]</code>
ログイン後にコピー

このクエリでは、[startlat][startlng] は測定距離の開始座標を表します。距離の計算は、球 (この場合は地球) 上の 2 点間の距離を正確に決定するハーバーサインの公式を使用して実行されます。 POW() 関数は開始座標とターゲット座標の差を二乗し、COS() 関数は地球の曲率を考慮します。最終的な結果はマイル単位の距離です。

HAVING 句に「距離 < [半径]」という条件を含めることで、指定した半径 [半径] よりも距離が小さいレコードのみが返されるようになります。

以上が緯度と経度を使用して、指定された半径内で最も近い地理的記録を検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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