ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。