sql 已知兩點的經緯度,求距離

2021-07-09 19:37:09 字數 1857 閱讀 2386

sql server

查詢已知座標方圓500公尺的記錄

test表名

id    varchar(50)    unchecked

name    nvarchar(50)    checked

jing    varchar(50)    checked

wei    varchar(50)    checked

已知點的經度 113.914619

已知點的緯度 22.50128

select * from test where sqrt(  

(  ((113.914619-jing)*pi()*12656*cos(((22.50128+wei)/2)*pi()/180)/180)  

*  ((113.914619-jing)*pi()*12656*cos (((22.50128+wei)/2)*pi()/180)/180)  

)  +  

(  ((22.50128-wei)*pi()*12656/180)  

*  ((22.50128-wei)*pi()*12656/180)  

)  )<500

oracle

自定義函式(獲得弧度的函式)

create or replace function radian(d number) return number

ispi number :=3.141592625;

begin

return  d* pi/180.0;

end ;

自定義函式(根據經緯度計算距離)

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('123.421784','41.841746','123.421326','41.841785') from aa

aa表名

id    varchar(50)    unchecked

name    nvarchar(50)    checked

jing    varchar(50)    checked

wei    varchar(50)    checked

已知某點的經緯度,查詢方圓500公尺的資料

select id,name,jing,wei,cc from(select id,name,jing,wei,getdistance(jing,wei,'123.421302','41.841873') cc from aa) where cc<0.5;

給定經緯度計算距離 根據兩點經緯度計算距離

根據兩點經緯度計算距離 這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地 球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩 極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯 圈 構成這些圓圈的...

Python版本 根據兩點經緯度求距離

傳入兩點經緯度,求出距離 def calcdistance lng a,lat a,lng b,lat b 根據兩個點的經緯度求兩點之間的距離,注意需要乘以1000,因為返回的單位為千公尺 param lng a param lat a param lng b param lat b return ...

根據兩點經緯度計算距離

這些經緯線是怎樣定出來的呢?地球是在不停地繞地軸旋轉 地軸是一根通過地球南北兩極和地球中心的 假想線 在地球中腰畫乙個與地軸垂直的大圓圈,使圈上的每一點都和南北兩極的距離相等,這個圓圈 就叫作 赤道 在赤道的南北兩邊,畫出許多和赤道平行的圓圈,就是 緯圈 構成這些圓圈的線段,叫做緯線。我們把赤道定為...