最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql空間函數(shù)計算坐標距離方式

 更新時間:2025年02月13日 09:24:00   作者:worilb  
文章介紹了如何使用MySQL的空間函數(shù)`st_distance`和`st_distance_sphere`計算兩點之間的距離,并對比了兩種方法的準確性,`st_distance`函數(shù)計算的是兩點間的度數(shù),需要乘以111195轉換為米,但因每度長度不一致會有誤差

mysql空間函數(shù)計算坐標距離

有一張表,表中有每個人所在位置及經(jīng)緯度,現(xiàn)在求表中所有人離指定經(jīng)緯度的位置。

DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `longitude` decimal(9, 6) NULL DEFAULT NULL,
  `latitude` decimal(9, 6) NULL DEFAULT NULL,
  `address` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES (1, '張三', 116.397755, 39.903179, '天安門');
INSERT INTO `teacher` VALUES (2, '李四', 116.397029, 39.917840, '故宮');
INSERT INTO `teacher` VALUES (3, '王五', 116.190595, 39.876665, '園博園');
INSERT INTO `teacher` VALUES (4, '趙六', 116.410829, 39.881983, '天壇公園');

假設本人目前在人民 大會堂,經(jīng)度116.393823,緯度39.905024,現(xiàn)在要查詢表中四個人距本人多少米。

現(xiàn)在用Mysql提供的空間函數(shù)演示計算。

1. st_distance函數(shù)

st_distance函數(shù)計算:

SELECT
	*,
	ROUND( st_distance ( point ( longitude, latitude ), point ( 116.393823, 39.905024 ))* 111195, 2 ) dis 
FROM
	teacher

2. st_distance_sphere函數(shù)

st_distance_sphere函數(shù)計算:

SELECT
	*,
	round( st_distance_sphere ( point ( 116.393823, 39.905024 ), point ( `longitude`, `latitude` ) ), 2 ) dis 
FROM
	teacher 
ORDER BY
	dis

比較兩種查詢結果,距離有不小的偏差。因為第一種st_distance函數(shù)計算的是兩點間的度,所以在計算出度數(shù)后再乘以111195得出米,而每度的長度并不一致所以有誤差。第二種st_distance_sphere函數(shù)直接計算兩點間的距離,更加準確。

對比下地圖測距:

3. st_distance_sphere取值范圍問題(極易踩坑)

在st_distance_sphere 函數(shù)中使用point計算經(jīng)緯度時有限制取值范圍,其中緯度為大于等于-90度小于等于90度,而經(jīng)度卻是大于-180度且小于等于180度。

如下所示:

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • MySQL事務隔離級別和一致性詳解

    MySQL事務隔離級別和一致性詳解

    文章講解了數(shù)據(jù)庫事務的隔離性及四個級別(讀未提交、讀提交、可重復讀、串行化),不同級別解決不同并發(fā)問題,強調一致性需用戶與數(shù)據(jù)庫共同保障
    2025-08-08
  • MySQL表類型 存儲引擎 的選擇

    MySQL表類型 存儲引擎 的選擇

    這篇文章主要介紹了MySQL表類型存儲引擎的選擇,文章圍繞MySQL表類型存儲引擎的選擇的相關資料展開內容,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11
  • sql注入數(shù)據(jù)庫原理詳情介紹

    sql注入數(shù)據(jù)庫原理詳情介紹

    這篇文章主要介紹了sql注入數(shù)據(jù)庫原理詳情介紹,文章圍繞主題展開詳細的內容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-09-09
  • mysql 提示INNODB錯誤的解決方法

    mysql 提示INNODB錯誤的解決方法

    解決The‘InnoDB’feature is disabled; you need MySQL built with ‘InnoDB’ to have it
    2011-09-09
  • mysql數(shù)據(jù)庫自動添加創(chuàng)建時間及更新時間

    mysql數(shù)據(jù)庫自動添加創(chuàng)建時間及更新時間

    在實際應用中我們時常會需要用到創(chuàng)建時間和更新時間這兩個字段,下面這篇文章主要給大家介紹了關于mysql數(shù)據(jù)庫自動添加創(chuàng)建時間及更新時間的相關資料,需要的朋友可以參考下
    2022-05-05
  • sql索引的介紹以及使用規(guī)則詳析

    sql索引的介紹以及使用規(guī)則詳析

    索引是一種數(shù)據(jù)結構,可以加快我們查詢的效率,但是創(chuàng)建索引需要復制數(shù)據(jù),會占用資源,下面這篇文章主要給大家介紹了關于sql索引的介紹以及使用規(guī)則的相關資料,需要的朋友可以參考下
    2023-04-04
  • mysql存儲過程實現(xiàn)split示例

    mysql存儲過程實現(xiàn)split示例

    這篇文章主要介紹了mysql存儲過程實現(xiàn)split示例,需要的朋友可以參考下
    2014-05-05
  • Mysql樹形結構的數(shù)據(jù)庫表設計方案

    Mysql樹形結構的數(shù)據(jù)庫表設計方案

    樹形結構對大家來說應該都不陌生,在日常開發(fā)中經(jīng)常會遇到,下面這篇文章主要給大家介紹了關于Mysql樹形結構的數(shù)據(jù)庫表設計的相關資料,文中通過示例代碼的非常詳細,需要的朋友可以參考下
    2021-09-09
  • MySQL數(shù)據(jù)庫索引以及失效場景詳解

    MySQL數(shù)據(jù)庫索引以及失效場景詳解

    索引是一種數(shù)據(jù)結構,為了應對不同的場景會有多種實現(xiàn),下面這篇文章主要給大家介紹了關于MySQL數(shù)據(jù)庫索引以及失效場景的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • MySQL空間數(shù)據(jù)存儲及函數(shù)

    MySQL空間數(shù)據(jù)存儲及函數(shù)

    這篇文章主要介紹的使MySQL空間數(shù)據(jù)存儲及函數(shù),MySQL提供了數(shù)據(jù)類型geometry用來存儲坐標信息,MySQL為空間數(shù)據(jù)存儲及處理提供了專用的類型geometry,下面就和小編一起學習下文吧
    2021-09-09

最新評論

墨玉县| 潼关县| 文安县| 五大连池市| 方正县| 三河市| 乐至县| 苍溪县| 吉水县| 霍州市| 旬阳县| 荆州市| 富裕县| 佛坪县| 息烽县| 鲁山县| 灵寿县| 湖南省| 汕头市| 鄂尔多斯市| 芜湖县| 炉霍县| 饶河县| 山阳县| 呼玛县| 新绛县| 吴川市| 东乡族自治县| 青海省| 灌云县| 石泉县| 平阳县| 大英县| 布尔津县| 屯昌县| 甘德县| 双辽市| 嘉定区| 泰州市| 靖安县| 五河县|