亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

測試

表結(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;

測試數(shù)據(jù):(插入坐標時,以下兩種寫法都可以)

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

計算距離:

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

查詢到某點的距離小于一個值的所有數(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;

注意:

坐標不能隨意寫測試數(shù)據(jù),注意官網(wǎng)中的說的條件:

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

否則則會報錯:

[HY000][1210] Incorrect arguments to st_distance_sphere

st_distance_sphere計算兩坐標點距離

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

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

例子

現(xiàn)數(shù)據(jù)庫表中有如下坐標點數(shù)據(jù):

需要找出與第一個坐標點(113.8064049, 22.7300434)相距小于3500米的坐標點(表中共有3500個點)。

sql實現(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個滿足條件的坐標點,且耗時僅為0.066秒,效率提升非常多。

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

相關(guān)文章

  • mysql主從復制讀寫分離的配置方法詳解

    mysql主從復制讀寫分離的配置方法詳解

    一般來說mysql都是通過 主從復制(Master-Slave)的方式來同步數(shù)據(jù),再通過讀寫分離(MySQL-Proxy)來提升數(shù)據(jù)庫的并發(fā)負載能力 這樣的方案來進行部署與實施的。
    2018-04-04
  • MySQL8.0.28數(shù)據(jù)庫安裝和主從配置說明

    MySQL8.0.28數(shù)據(jù)庫安裝和主從配置說明

    這篇文章主要介紹了MySQL8.0.28數(shù)據(jù)庫安裝和主從配置說明,具有很好的參考價值,希望杜大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • JDK1.7下測試ConnectorJ連接MySQL8.0的方法

    JDK1.7下測試ConnectorJ連接MySQL8.0的方法

    MySQL?Connector/J是一個JDBC?4型驅(qū)動程序。Type?4標志意味著驅(qū)動程序是MySQL協(xié)議的純Java實現(xiàn),不依賴于MySQL客戶端庫,這篇文章主要介紹了JDK1.7下測試ConnectorJ連接MySQL8.0,需要的朋友可以參考下
    2022-10-10
  • Mysql之SQL執(zhí)行流程全面解析

    Mysql之SQL執(zhí)行流程全面解析

    MySQL的執(zhí)行流程包括查詢緩存、解析器、優(yōu)化器和執(zhí)行器,首先,查詢緩存檢查是否存在查詢結(jié)果,如果存在則直接返回;如果不存在,則進入解析器進行語法和語義分析,解析器將SQL語句轉(zhuǎn)換為語法樹,并進行詞法和語法分析,接著,優(yōu)化器確定最佳執(zhí)行路徑
    2024-12-12
  • mysql8.0.27配置步驟以及注意事項

    mysql8.0.27配置步驟以及注意事項

    這篇文章主要給大家介紹了關(guān)于mysql8.0.27配置步驟以及注意事項的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-03-03
  • MySQL  外鍵(foreign key)約束的作用和使用

    MySQL  外鍵(foreign key)約束的作用和使用

    外鍵約束是用于建立兩個表之間關(guān)系的一種約束,本文主要介紹了MySQL外鍵約束詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • mysql多實例部署實例教程

    mysql多實例部署實例教程

    這篇文章主要介紹了mysql多實例部署,主要包括軟件下載、配置用戶并解壓二進制程序至/usr/local下及創(chuàng)建各實例數(shù)據(jù)存放的目錄,本文給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • MySQL Sleep連接過多問題解決方法

    MySQL Sleep連接過多問題解決方法

    這篇文章主要介紹了MySQL Sleep連接過多問題解決方法,MySQL Sleep連接過多一般多為客戶端沒關(guān)閉連接導致的,解決方法很簡單,修改一下配置文件即可,需要的朋友可以參考下
    2015-05-05
  • 用shell寫一個mysql數(shù)據(jù)備份腳本

    用shell寫一個mysql數(shù)據(jù)備份腳本

    本篇文章教給大家用shell寫一個mysql數(shù)據(jù)備份腳本,這是一個簡單備份MYSQL數(shù)據(jù)庫的方法,一起跟著學習下吧。
    2017-12-12
  • Java的Struts框架中的主題模板和國際化設(shè)置

    Java的Struts框架中的主題模板和國際化設(shè)置

    這篇文章主要介紹了Java的Struts框架中的主題模板和國際化設(shè)置,Struts是Java的SSH三大web開放框架之一,需要的朋友可以參考下
    2015-12-12

最新評論