使用SQL找出最近經緯度的查詢
本文將探討如何利用SQL從資料庫中擷取到給定參考座標一定範圍內的最近經緯度。
問題描述:
您已知經緯度值,希望提取資料庫中與該經緯度最匹配的記錄。但存在距離閾值:如果計算出的距離超過此閾值,則不應檢索任何資料。
表格結構:
列名 | 数据类型 |
---|---|
id | 整数 |
纬度 | 十进制 |
经度 | 十进制 |
地名 | 字符串 |
城市 | 字符串 |
国家 | 字符串 |
州 | 字符串 |
邮编 | 整数 |
海拔 | 整数 |
查詢語句:
為了完成此任務,我們使用下列SQL查詢:
<code class="language-sql">SELECT 纬度, 经度, SQRT( POW(69.1 * (纬度 - [startlat]), 2) + POW(69.1 * ([startlng] - 经度) * COS(纬度 / 57.3), 2)) AS distance FROM 表名称 HAVING distance < 25 ORDER BY distance ASC;</code>
說明:
此查詢使用大圓距離公式計算參考座標([startlat], [startlng])與表中每個記錄之間的距離。如果計算出的距離小於指定的閾值(在此範例中為25公里),則該記錄將包含在結果中。查詢也會根據距離按升序對結果進行排序,確保首先傳回最接近的記錄。
以上是如何使用 SQL 找出給定距離內最近的緯度和經度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!