使用MySQL的geometry型別處理經緯度距離問題的方法
阿新 • • 發佈:2020-01-09
建表
CREATE TABLE `map` ( `id` int(11) NOT NULL,`address` varchar(255) NOT NULL DEFAULT '',`location` geometry NOT NULL,PRIMARY KEY (`id`),SPATIAL KEY `idx_location` (`location`) )
插入
INSERT INTO map (id,address,location) VALUES (1,'somewhere',ST_GeomFromText('POINT(121.366961 31.190049)'));
注意必須使用 ST_GeomFromText 函式,且 POINT() 裡面是:經度+空格+緯度
查詢
1. 檢視經緯度
SELECT address,ST_AsText(location) AS location FROM map;
2. 計算兩點之間的距離
SELECT ST_Distance_Sphere(POINT(121.590347,31.388094),location) AS distant FROM map;
算出來的結果,單位是米
注意現在POINT()裡面經緯度之間是逗號分隔的
3. 查詢距離小於1000m的地點,並由遠及近排序
複製程式碼 程式碼如下:SELECT id,ST_Distance_Sphere(POINT(121.590347,location) AS distant FROM map WHERE ST_Distance_Sphere(POINT(121.590347,location) < 1000 ORDER BY distant;
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。