sql 資料庫計算經緯度

2021-07-03 17:54:52 字數 2431 閱讀 6939

**1.**也是從網路上找的方法辣

實質就是在 資料庫 建立乙個函式,供呼叫啦

create function [dbo].[fngetdistance]

--latbegin 開始經度

--lngbegin 開始維度

(@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

--在這裡判斷 如果資料有問題的話 就直接返回出去

if @latbegin = 0 or @lngbegin =0 or @latend= 0 or @lngend = 0

begin

set @distance = 10000

end--沒有問題就繼續 計算

else

begin

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

set @distance = round(@distance * 1000, 3) / 1000

endreturn @distance

end

在網路上看到的那個方法,沒有做輸入資料的判斷,因為有時可能會傳入0,或者是 null 這樣的引數, 但是萬一傳入了,我試了下。還是會有輸出值的,所以就稍微判斷了一下

當輸入的是 0 的時候 就直接給他 返回 10000 就好啦。

呼叫方法

` select id,companyname,companyadress,companycontact,latitude,longitude,phone,companydescribe,companyshort,officephone , round(dbo.fngetdistance(

#,#,tb_firminfo.longitude,tb_firminfo.latitude

),2) as distance from tb_firminfo

where companytype = 3`

傳入的是 精度,緯度, 精度,緯度 進行計算出來的乙個值,

然後我又在外面 round 取了一下精度 ,小數點後2位,

這個函式算出來的是千公尺單位。

2.再就是寫**的方法了。 有時候也會用到 在計算經緯度這裡。

public static final double range = 3.0;//地球半徑

private static final double earth_radius = 6378.137;//地球半徑

private static double rad(double d)

//計算使用者和出租司機距離

// double dis = commonutil.getdistance(double.valueof(latitude), double.valueof(longitude),

// double.valueof( resultmap.get(i).get("latitude").tostring()),

// double.valueof( resultmap.get(i).get("longitude").tostring()));

public static double getdistance(double lat1, double lng1, double lat2,

double lng2)

經緯度計算

define earth radius,6371 地球半徑,平均半徑為6371km 計算某個經緯度的周圍某段距離的正方形的四個點 param lng float 經度 param lat float 緯度 param distance float 該點所在圓的半徑,該圓與此正方形內切,預設值為0.5...

經緯度計算 筆記

經緯度之間距離計算 返回單位 公尺 function distance lon1,lat1,lon2,lat2 echo distance 116.368904,39.923423,116.387271,39.922501 die 高德計算距離 deg2rad 函式將角度轉換為弧度。rad2deg ...

經緯度計算距離 經緯度計算,別讓數學拖你後腿

已知乙個的經度 緯度 long1,lat1 距離d 以km為單位 和方位角 以度為單位 求新的經度 緯度 long2,lat2 這個問題在大地測量學中非常受歡迎。舉個例子 點a 123.2329 32.5946 求北偏東45度方向,200千公尺處的點b long2,lat2 經緯度。在計算之前,首先...