欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

MySQL 通過經緯度計算距離

傅智翔2年前11瀏覽0評論
MySQL 通過經緯度計算距離 MySQL 是一款廣泛使用的關系型數據庫管理系統,它可以通過經緯度計算距離,為地理定位應用提供了很大的便利。以下是使用 MySQL 計算距離的示例。 查詢兩點距離 首先,我們需要創建一個包含經緯度信息的表:
CREATE TABLE `locations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`latitude` decimal(10,8) NOT NULL,
`longitude` decimal(11,8) NOT NULL,
PRIMARY KEY (`id`)
);
然后,插入一些示例數據:
INSERT INTO `locations` (`id`, `name`, `latitude`, `longitude`)
VALUES
(1, 'New York City', 40.7128, -74.0059),
(2, 'Los Angeles', 34.0522, -118.2437),
(3, 'San Francisco', 37.7749, -122.4194);
現在,我們可以使用以下查詢來查找兩點之間的距離:
SELECT
id,
name,
(
3959 * acos (
cos ( radians(37) )
* cos( radians( latitude ) )
* cos( radians( longitude ) - radians(-122) )
+ sin ( radians(37) )
* sin( radians( latitude ) )
)
) AS distance
FROM locations
HAVING distance< 30
ORDER BY distance;
其中,角度轉弧度可以使用 radians() 函數,弧度轉角度可以使用 degrees() 函數。3959 是地球半徑,使用的單位是英里。HAVING 子句用來過濾距離小于 30 英里的地點。 計算圓形區域內的地點 有時候,我們需要查詢一個圓形區域內的地點。我們可以使用上面的查詢算法,但是需要在 WHERE 子句添加限制條件。以下是一個示例查詢:
SELECT
id,
name,
latitude,
longitude
FROM locations
WHERE
(
3959 * acos (
cos ( radians(37) )
* cos( radians( latitude ) )
* cos( radians( longitude ) - radians(-122) )
+ sin ( radians(37) )
* sin( radians( latitude ) )
)
)< 30
ORDER BY distance;
該查詢將返回距離經緯度為 37 和 -122 的點距離小于 30 英里的地點。 總結 MySQL 可以通過經緯度計算距離,提供了方便和靈活的地理信息計算能力。需要注意的是,距離計算是基于球形地球模型的,與實際地球表面的形狀和海拔高度差異有關。