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

SQL を使用して、指定された半径内で最も近い緯度と経度を見つけるにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-18 15:56:10657ブラウズ

How to Find the Nearest Latitude and Longitude within a Given Radius Using SQL?

SQL クエリを使用して最も近い緯度と経度を検索します

地理空間データを操作する場合、多くの場合、特定の地点からの距離に基づいてレコードを取得する必要があります。これは、2 点間の距離を計算し、指定された半径内にあるレコードを取得する SQL クエリを使用することで実現できます。

データベース テーブルにさまざまな場所の緯度と経度の座標が含まれているとします。特定の緯度と経度について、最も近い緯度と経度のレコードを取得したいとします。ただし、特定の点と取得されたレコードの間の距離が指定されたしきい値を超える場合、レコードは取得されません。

これを行うには、次の 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 < 25 ORDER BY distance</code>

このクエリでは、[startlat][startlng] は特定の地点の緯度と経度を表します。 distance 列は、Haversine 式を使用して、指定された点とテーブル内の各レコードの間の距離を計算します。 HAVING 句は、距離が 25 (指定されたしきい値) を超えるレコードをフィルターで除外します。最後に、ORDER BY 句は結果を距離で並べ替え、最も近い緯度と経度のレコードを最初に返します。

このクエリにより、近くの場所を効率的に取得でき、返される結果が目的の距離範囲内に収まることが保証されます。

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

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