數據庫:計算地球上兩個坐標點之間里程

今天給大家分享計算地球上兩個坐標點之間里程不同數據庫版本的腳本。

1、SQLServer腳本

–-計算地球上兩個坐標點(經度,緯度)之間距離sql函數 
CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL
, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL)
RETURNS FLOAT
AS
BEGIN
–-距離(千米)
DECLARE @Distance REAL
DECLARE @EARTH_RADIUS REAL
SET @EARTH_RADIUS = 6378.137
DECLARE @RadLatBegin REAL,@RadLatEnd REAL,@RadLatDiff REAL
,@RadLngDiff REAL
SET @RadLatBegin = @LatBegin *PI()/180.0
SET @RadLatEnd = @LatEnd *PI()/180.0
SET @RadLatDiff = @RadLatBegin - @RadLatEnd
SET @RadLngDiff = @LngBegin *PI()/180.0 - @LngEnd *PI()/180.0
SET @Distance = 2 *ASIN(SQRT(POWER(SIN(@RadLatDiff/2), 2)
+COS(@RadLatBegin)*COS(@RadLatEnd)*POWER(SIN(@RadLngDiff/2), 2)))
SET @Distance = @Distance * @EARTH_RADIUS
RETURN @Distance
END
--使用方法如下:
SELECT dbo.fnGetDistance(25,30,12.56,15.5) ;

2、MySQl腳本

–-計算地球上兩個坐標點(經度,緯度)之間距離sql函數 
CREATE FUNCTION [dbo].[fnGetDistance](@LatBegin REAL, 
@LngBegin REAL, @LatEnd REAL, @LngEnd REAL)
RETURNS FLOAT
AS
BEGIN
–-距離(千米)
DECLARE @Distance REAL
DECLARE @EARTH_RADIUS REAL
SET @EARTH_RADIUS = 6378.137
DECLARE @RadLatBegin REAL,@RadLatEnd REAL,@RadLatDiff REAL
,@RadLngDiff REAL
SET @RadLatBegin = @LatBegin *PI()/180.0
SET @RadLatEnd = @LatEnd *PI()/180.0
SET @RadLatDiff = @RadLatBegin - @RadLatEnd
SET @RadLngDiff = @LngBegin *PI()/180.0 - @LngEnd *PI()/180.0
SET @Distance = 2 *ASIN(SQRT(POWER(SIN(@RadLatDiff/2), 2)
+COS(@RadLatBegin)*COS(@RadLatEnd)*POWER(SIN(@RadLngDiff/2), 2)))
SET @Distance = @Distance * @EARTH_RADIUS
RETURN @Distance
END
--使用方法如下:
SELECT dbo.fnGetDistance(25,30,12.56,15.5) ;

3、Orcale腳本

CREATE OR REPLACE FUNCTION GetDistance
(lat1 number, lng1 number,lat2 number,lng2 number) 
RETURN NUMBER is earth_padius number := 6378.137; radLat1      number := Radian(lat1); radLat2      number := Radian(lat2); a            number := radLat1 - radLat2; b            number := Radian(lng1) - Radian(lng2); s            number := 0; 
begin s := 2 * Asin(Sqrt(power(sin(a / 2), 2) + cos(radLat1) * cos(radLat2) * power(sin(b / 2), 2))); s := s * earth_padius; s := Round(s * 10000) / 10000; return s; 
end; 
--使用方法
select GetDistance(25,30,12.56,15.5) from dual

以上是分享內容,感謝閱讀,歡迎收藏、點贊、轉發。您的支持是我最大的創作動力,有問題可以留言大家共同進步!

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270971.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270971.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270971.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

jvm 崩潰日志設置_JVM致命錯誤日志(hs_err_pid.log)分析(轉載)

當jvm出現致命錯誤時,會生成一個錯誤文件 hs_err_pid.log,其中包括了導致jvm crash的重要信息,可以通過分析該文件定位到導致crash的根源,從而改善以保證系統穩定。當出現crash時,該文件默認會生成到工作目錄下&#x…

使用entrySet遍歷Map類集合KV,而不是keySet方式進行遍歷

使用entrySet遍歷Map類集合KV,而不是keySet方式進行遍歷

【Qt開發】Qt Creator在Windows上的調試器安裝與配置

Qt Creator在Windows上的調試器安裝與配置 如果安裝Qt時使用的是Visual Studio的預編譯版,那么很有可能就會缺少調試器(Debugger),而使用MSVC的Qt對應的原生調試器是CDB(對應MinGW的Qt使用GDB調試器)。本文…

linux rsync 帶密碼,Linux配置ssh無密碼驗證,rsync

1.我先聲明主機pangzhiminglinux 192.168.200.129CentOS2 192.168.200.130方法大概是這樣:如果想從pangzhiminglinux的普通用戶無驗證登錄到CentOS2的普通用戶(單方向的),那么就要在兩個主機都建立一個相同名字,相同密碼的普通…

Java:Lombok插件用法筆記

1、Lombok是什么東東?官方介紹Lombok項目是一個Java庫,它可以自動嵌入你的編輯器和構建工具中,從而減少你的代碼量。永遠不要再寫另一個getter或equals方法,它帶有一個注釋的你的類有一個功能全面的生成器,自動化你的日…

bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序對)

題目大意:給出n個數的序列,每次可以交換相鄰的兩個數,問把序列變成編號i在編號i1左邊,編號1在編號n右邊(一個環)最少需要多少步。如:35421最少交換兩次變為34512。 一開始看到這題,只會O(n),后來…

sap實施和開發哪個前景_2021年了!還不知道 SAP顧問的職業前景?

一、先說什么是SAP。百度詞條的解釋:SAP有兩個意思一為“System Applications and Products”的簡稱,是SAP公司的產品——企業管理解決方案的軟件名稱。也代指SAP公司。二為SAP開發的ERP(Enterprise-wide Resource Planning)軟件名…

Linux找最大最小值的命令,Linux中awk命令正確的求最大值、最小值、平均值、總和...

test.txt文件內容&#xff1a;911352142118求最大值&#xff1a;awk BEGIN {max 0} {if ($10 > max0) max$1} END {print "Max", max} test.txtMax 118求最小值&#xff1a;awk BEGIN {min 65536} {if ($10 < min0) min$1} END {print "Min", min}…

?分布式數據庫技術基礎:數據分布介紹

1、數據分布的定義數據分布是指在分布式環境中通過合理分布數據&#xff0c;提高數據操作自然并行度&#xff0c;以達到最優的執行效率的目的。在構建分布式數據庫系統運行環境時&#xff0c;必須考慮數據如何分布在系統的各個場地上。數據分布主要關注的問題是在分布式數據中&…

uname命令 linux,Linux uname命令詳解

Linux uname命令用于顯示系統信息。uname可顯示電腦以及操作系統的相關信息。語法參數&#xff1a;uname [參數]參數&#xff1a;-a或--all&#xff1a;顯示全部的信息&#xff1b;-m或--machine&#xff1a;顯示電腦類型&#xff1b;-n或-nodename&#xff1a;顯示在網絡上的主…

ios開發text kit_IOS開發入門之TextKit詳解

本文將帶你了解IOS開發入門iOS 開發 富文本詳解之TextKit詳解&#xff0c;希望本文對大家學IOS有所幫助。textkit結構textkit使用步驟#Mark - 1. 自定義label --class CZLabel: UILabel---四個屬性//1.屬性文本存儲private lazy var textStorage NSTextStorage()//2.負責文本…

分布式數據庫技術基礎:數據分片介紹

1、數據分片定義數據分片也成為數據分割&#xff0c;是分布式數據庫的特征之一。一般在一個分布式數據庫中&#xff0c;全局數據庫是由各個局部數據庫邏輯組合而成的&#xff0c;反之各個局部數據庫是由全局數據庫的某種分割邏輯而得的。數據分片得到的各部分元組成為該關系的邏…

9.02

1.input標簽&#xff1a;<input> 標簽用于搜集用戶信息。根據不同的 type 屬性值&#xff0c;輸入字段擁有很多種形式。 輸入字段可以是文本字段、復選框、掩碼后的文本控件、單選按鈕、按鈕等等。例如&#xff1a;Frist name:<input type"text" name"…

分布式數據庫技術基礎:分布透明性相關知識

1、分布透明性介紹數據分布獨立性&#xff1a;主要是指用戶或用戶程序使用分布式數據庫如同使用集中式數據庫那樣&#xff0c;不必關系全局數據的分布情況。也就是說全局數據的邏輯分片、片段的物理位置分配、各場地數據庫的數據模型等情況對用戶和用戶應用程序是透明的。因此分…

宏基4750網卡驅動linux,宏基4750g網卡驅動下載

宏基4750g網卡驅動是宏基筆記本上網驅動&#xff0c;驅動可以幫助用戶體驗便捷上網功能&#xff0c;只需要的雙擊驅動安裝就可以完成&#xff0c;網卡驅動是筆記本必備程序&#xff0c;歡迎用戶來當易網下載體驗&#xff01;驅動介紹Acer宏碁Aspire 4750G筆記本網卡驅動14.4.0.…

python request post 數組_[pve][python]用python3獲取pve狀態信息

手頭的Proxmox VE集群和節點越來越多&#xff0c;需要考慮統一管理了&#xff0c;先定一個小目標——集中狀態監控。以前寫過檢測ceph并用釘釘報警的bash腳本&#xff0c;這次換上洋氣的方式&#xff0c;用python來通過pve的api獲取其狀態信息。首先參考proxmox官方的api(實際上…

分布式數據庫管理系統介紹

1、分布式數據庫管理系統分類綜合型體系結構&#xff1a;主要是指在分布式數據庫建立之前&#xff0c;還沒有建立獨立的集中式數據庫管理系統&#xff0c;設計人員根據用戶的需求&#xff0c;設計出一個全新的完整的數據庫管理系統。聯合型體系結構&#xff1a;主要是指每個節點…