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

MySQL空間函數(shù)ST_Distance_Sphere()的使用方式

 更新時(shí)間:2022年11月17日 15:37:24   作者:站在墻頭上  
這篇文章主要介紹了MySQL空間函數(shù)ST_Distance_Sphere()的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

空間函數(shù)ST_Distance_Sphere()的使用

返回球體上兩個(gè)點(diǎn)和/或多點(diǎn)之間的最小球面距離(以米為單位)

官網(wǎng)(https://dev.mysql.com/doc/refman/5.7/en/spatial-convenience-functions.html

測(cè)試

表結(jié)構(gòu)如下:

create table t_geo_test
(
    ID    int auto_increment
        primary key,
    NAME  varchar(64) not null,
    SHAPE geometry    not null
)
    engine = InnoDB
    charset = utf8;

測(cè)試數(shù)據(jù):(插入坐標(biāo)時(shí),以下兩種寫(xiě)法都可以)

INSERT INTO t_geo_test VALUES (1, '測(cè)試', POINT(121.590347, 31.388094));
INSERT INTO t_geo_test VALUES (2, 'somewhere', ST_GeomFromText('POINT(121.366961 31.190049)'));

計(jì)算距離:

SELECT st_distance_sphere(POINT(121.590347, 31.388094),SHAPE) AS distant FROM t_geo_test;

查詢到某點(diǎn)的距離小于一個(gè)值的所有數(shù)據(jù):

SELECT *, ST_Distance_Sphere(POINT(121.590347, 31.388094),SHAPE) AS distant FROM t_geo_test WHERE ST_Distance_Sphere(POINT(121.590347, 31.388094),SHAPE) < 1000 ORDER BY distant;

注意:

坐標(biāo)不能隨意寫(xiě)測(cè)試數(shù)據(jù),注意官網(wǎng)中的說(shuō)的條件:

  • 幾何參數(shù)應(yīng)由指定(經(jīng)度,緯度)坐標(biāo)值的點(diǎn)組成:
  • 經(jīng)度和緯度分別是該點(diǎn)的第一和第二坐標(biāo)。
  • 兩個(gè)坐標(biāo)均以度為單位。
  • 經(jīng)度值必須在(-180,180]范圍內(nèi)。正值位于本初子午線以東。
  • 緯度值必須在[-90,90]范圍內(nèi)。正值位于赤道以北。

否則則會(huì)報(bào)錯(cuò):

[HY000][1210] Incorrect arguments to st_distance_sphere

st_distance_sphere計(jì)算兩坐標(biāo)點(diǎn)距離

最近項(xiàng)目中需要計(jì)算一個(gè)坐標(biāo)點(diǎn)與多個(gè)點(diǎn)的距離,發(fā)現(xiàn)用Python來(lái)實(shí)現(xiàn)效率很低。經(jīng)同事推薦,將這些坐標(biāo)點(diǎn)存入了Mysql數(shù)據(jù)庫(kù),然后用數(shù)據(jù)庫(kù)自帶的方法st_distance_sphere計(jì)算距離。經(jīng)過(guò)比較發(fā)現(xiàn)確實(shí)效率提高了很多,特此記錄一下。

注意:使用st_distance_sphere需要Mysql數(shù)據(jù)庫(kù)版本為5.7及以上。

例子

現(xiàn)數(shù)據(jù)庫(kù)表中有如下坐標(biāo)點(diǎn)數(shù)據(jù):

需要找出與第一個(gè)坐標(biāo)點(diǎn)(113.8064049, 22.7300434)相距小于3500米的坐標(biāo)點(diǎn)(表中共有3500個(gè)點(diǎn))。

sql實(shí)現(xiàn):

select t.num,t.city,t.wgs84_lng,t.wgs84_lat,
  TRUNCATE(st_distance_sphere(point (113.8064049, 22.7300434),point(t.wgs84_lng,t.wgs84_lat)),2) as distance
	from moran_point t
	where t.city = '深圳' 
	HAVING distance > 0 and distance < 3500
	ORDER BY distance;

查詢結(jié)果:

可以看到,共找出41個(gè)滿足條件的坐標(biāo)點(diǎn),且耗時(shí)僅為0.066秒,效率提升非常多。

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

相關(guān)文章

  • 完美轉(zhuǎn)換MySQL的字符集 解決查看utf8源文件中的亂碼問(wèn)題

    完美轉(zhuǎn)換MySQL的字符集 解決查看utf8源文件中的亂碼問(wèn)題

    本人轉(zhuǎn)換過(guò)好多數(shù)據(jù)了,也用過(guò)了好多的辦法,個(gè)人感覺(jué)最好用的就是使用MySQL命令導(dǎo)出導(dǎo)入中將字符集轉(zhuǎn)換過(guò)去
    2011-11-11
  • Mysql數(shù)據(jù)庫(kù)增量備份的思路和方法

    Mysql數(shù)據(jù)庫(kù)增量備份的思路和方法

    MySQL數(shù)據(jù)庫(kù)增量備份,在這之前修改我們的數(shù)據(jù)庫(kù)配置文件/etc/my.cnf開(kāi)啟bin-log日志功能即可,下面小編給大家分享Mysql數(shù)據(jù)庫(kù)增量備份的思路詳解,一起看看吧
    2017-09-09
  • 淺析mysql union和union all

    淺析mysql union和union all

    union 是對(duì)數(shù)據(jù)進(jìn)行并集操作,不包括重復(fù)行,同時(shí)進(jìn)行默認(rèn)排序而Union all 是對(duì)數(shù)據(jù)進(jìn)行并集操作,包括重復(fù)行,不進(jìn)行排序,下面給大家詳細(xì)介紹mysql union和union all,感興趣的朋友一起看看吧
    2017-10-10
  • mysql表添加索引的幾種實(shí)現(xiàn)方法

    mysql表添加索引的幾種實(shí)現(xiàn)方法

    本文介紹了在MySQL中使用ALTER?TABLE語(yǔ)句為表添加索引的幾種常見(jiàn)方式,包括普通索引、唯一索引、主鍵索引和全文索引,感興趣的可以了解一下
    2024-11-11
  • MySQL提示表不存在的解決error:1146:Table doesn‘t exist的原因和解決方法

    MySQL提示表不存在的解決error:1146:Table doesn‘t exist的原因和解決

    在使用MySQL的過(guò)程中,有時(shí)會(huì)遇到“Table doesn't exist”(表不存在)的錯(cuò)誤,錯(cuò)誤代碼通常為1146,這個(gè)問(wèn)題可能由多種原因引起,本文將幫助你診斷和解決這個(gè)問(wèn)題,如果遇到同樣問(wèn)題的小伙伴跟著小編一起來(lái)看看吧
    2024-12-12
  • SQL執(zhí)行步驟的具體分析

    SQL執(zhí)行步驟的具體分析

    這篇文章主要介紹了SQL執(zhí)行步驟的具體分析的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握SQL是如何執(zhí)行的,需要的朋友可以參考下
    2017-10-10
  • MySQL筆記 —SQL運(yùn)算符

    MySQL筆記 —SQL運(yùn)算符

    這篇文章主要介紹了SQL運(yùn)算符,在sql語(yǔ)言中常用的運(yùn)算符有這幾種:算術(shù)運(yùn)算符、賦值運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符,下面面基于記住運(yùn)算符資料展開(kāi)文章內(nèi)容,需要的小伙伴可以參考一下
    2022-01-01
  • innodb如何巧妙的實(shí)現(xiàn)事務(wù)隔離級(jí)別詳解

    innodb如何巧妙的實(shí)現(xiàn)事務(wù)隔離級(jí)別詳解

    隔離是ACID(Atomicity,Consistency,Isolation,Durability)的重要部分,下面這篇文章主要給大家介紹了關(guān)于innodb如何巧妙的實(shí)現(xiàn)事務(wù)隔離級(jí)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-11-11
  • MySQL 使用SQL語(yǔ)句修改表名的實(shí)現(xiàn)

    MySQL 使用SQL語(yǔ)句修改表名的實(shí)現(xiàn)

    這篇文章主要介紹了MySQL 使用SQL語(yǔ)句修改表名的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • MySQL 優(yōu)化設(shè)置步驟

    MySQL 優(yōu)化設(shè)置步驟

    mysql的一些運(yùn)行效率等優(yōu)化設(shè)置,建議擁有服務(wù)器的朋友,可以測(cè)試。
    2009-03-03

最新評(píng)論

祁东县| 镇安县| 清镇市| 吉安市| 丹阳市| 专栏| 韶山市| 临泽县| 垣曲县| 泰和县| 平度市| 宁强县| 通道| 冀州市| 平乡县| 温宿县| 南木林县| 奉贤区| 宁河县| 措勤县| 潼关县| 房山区| 于田县| 理塘县| 苍梧县| 阿鲁科尔沁旗| 光山县| 台中县| 得荣县| 无锡市| 峨眉山市| 余干县| 塔城市| 蒙阴县| 西安市| 扎赉特旗| 廊坊市| 嘉鱼县| 水富县| 唐海县| 江北区|