mysql根據經緯度求兩地距離

来源:https://www.cnblogs.com/hdwang/archive/2018/11/21/9994153.html
-Advertisement-
Play Games

第一個函數是計算平面坐標系下,兩點的距離,就是 如果用於計算地球兩點的距離,帶入的參數是角度(0-360度),則計算的單位也是相差的角度,用此角度計算距離不准。緯度距離約111km每度,經度距離在赤道平面上是111km每度,隨緯度的升高逐漸降低為0。 第二個函數是計算球面距離的公式,傳入的參數是經緯 ...


#1.兩點距離(1.4142135623730951)
select st_distance(point(0,0),point(1,1));
select st_distance(point (120.10591, 30.30163),point(120.13026,30.25961));
mysql 5.6 添加 #2.兩點球面距離(
157249.0357231545m) select st_distance_sphere(point(0,0),point(1,1)); select st_distance_sphere(point (120.10591, 30.30163),point(120.13026,30.25961));
This function was added in MySQL 5.7.6.

 

第一個函數是計算平面坐標系下,兩點的距離,就是

  • formula

 如果用於計算地球兩點的距離,帶入的參數是角度(經緯度),則計算的單位也是相差的角度,用此角度計算距離不准。緯度距離約111km每度,經度距離在赤道平面上是111km每度,隨緯度的升高逐漸降低為0。

 

第二個函數是計算球面距離的公式,傳入的參數是經緯度(經度-180~180,緯度-90~90),返回的值以m為單位的距離。

ST_Distance_Sphere(g1g2 [, radius])

 

 

如果mysql版本不支持上述函數怎麼辦?自己實現嘍!下麵是我自己寫的球面距離函數

delimiter //
drop function if exists Spherical_Distance;
create function Spherical_Distance(jin1 double,wei1 double,jin2 double,wei2 double) returns double
NO SQL
BEGIN
  declare j1 double;
  declare w1 double;
  declare j2 double;
  declare w2 double;
  declare R double;
  set j1 = jin1*PI()/180;
  set w1 = wei1*PI()/180;
  set j2 = jin2*PI()/180;
  set w2 = wei2*PI()/180;
  set R = 6370986;
  return R*acos(cos(w1)*cos(w2)*cos(j1-j2)+sin(w1)*sin(w2));        
END
//
delimiter ;

調用方式

select Spherical_Distance(120.10591,30.30163,120.13026,30.25961);

計算出的值和st_distance_sphere函數計算結果相差不大。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 歡迎大家前往 "騰訊雲+社區" ,獲取更多騰訊海量技術實踐乾貨哦~ 本文由 "columneditor" 發表於 "雲+社區專欄" 2018年12月15日,首屆“騰訊雲+社區開發者大會”即將在北京隆重舉行,騰訊雲邀請廣大開發者共同探討雲端新技術、新能力。屆時,騰訊雲將邀請超過40位行業內的技術專家, ...
  • redis持久化概念 Author:SimpleWu 什麼是持久化? 概念:把記憶體的數據保存在磁碟的過程。 Redis的持久化? redis是記憶體資料庫,它把數據存儲在記憶體中,這樣在加快讀取速度的同時也對數據安全性產生了新的問題,即當redis所在伺服器發生宕機後,redis資料庫里的所有數據將會全 ...
  • oracle 函數中 decode (state,'false','異常','true','正常') status 等價於 case when state='false' then '異常' when state=‘true’ then '正常' end status 當 status 為 fals ...
  • SQL代碼: SELECT t.* FROM pt_org_info t START WITH t.id = 1 CONNECT BY t.par_id = PRIOR t.id ORDER SIBLINGS BY t.id; 效果圖: ...
  • 此文章對開放數據介面 API 之「全國天氣預報信息數據 API」進行了功能介紹、使用場景介紹以及調用方法的說明,供用戶在使用數據介面時參考之用,並對實戰開發進行了視頻演示。 ...
  • 連接資料庫: try { SqlConnection conn = new SqlConnection(); conn.ConnectionString = "Data Source = (local); Initial Catalog =manage; Integrated Security = ...
  • 本文是對Hadoop2.2.0版本的MapReduce進行詳細講解。請大家要註意版本,因為Hadoop的不同版本,源碼可能是不同的。 以下是本文的大綱: ...
  • 摘要:第一階段:Linux課程講解Linux基礎操作,講的是在命令行下進行文件系統的操作,這是Hadoop學習的基礎,後面的所有視頻都是基於linux操作的。鑒於很多學員沒有linux基礎,特增加該內容,保證零linux基礎入門。如果你從沒有使用過linux,別擔心,本節內容可以讓你入門。Linux ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...