oracle得到任意2個經緯度之間的距離

2022-04-09 08:43:33 字數 1291 閱讀 9359

在開發android lbs定位的時候,得到乙個點(經緯度),業務要求要得到附近一公里的商家,這些商家都在本地庫中,並且還標有經度和緯度,那就是要得到這個點和資料庫中的經度和緯度的距離,距離小於1公里的就檢索出來;

先寫2個函式:

1.獲得弧度的函式。

sql** 

create or replace function rad(d number) return number 

is pi number :=3.141592625; 

begin  

return  d* pi/180.0; 

end ; 

select rad(360) from dual; 

2.根據經緯度計算距離。

sql** 

create or replace function getdistance(lat1 number, 

lng1 number, 

lat2 number, 

lng2 number) return number is 

earth_padius number := 6378.137; 

radlat1      number := rad(lat1); 

radlat2      number := rad(lat2); 

a            number := radlat1 - radlat2; 

b            number := rad(lng1) - rad(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; 

根據百度拾取座標來獲得經緯度:

東方明珠塔的經緯度是:121.506656,31.245087

陸家嘴地鐵站的經緯度是:121.508883,31.243481

得到這2點的距離,得出的距離是千公尺!

sql** 

select getdistance('121.506656','31.245087','121.508883','31.243481') from dual; 

結果是:0.2649千公尺

作者「劉亞飛」

sql語句查詢經緯度範圍 Oracle

指定乙個經緯度,給定乙個範圍值 單位 千公尺 查出在經緯度周圍這個範圍內的資料。經度 23.33 緯度 34.66 範圍 2000km sa longitude為資料表經度字段 sa latitude為資料表緯度字段 select from sy store address where sqrt 2...

sql server 根據經緯度求任意兩點的距離

create function dbo.getearthdistance lat為緯度,lng為經度,ab為任意兩點 lata real,lnga real,latb real,lngb real returns float asbegin 所求距離 千公尺 declare distance rea...

根據經緯度 角度 距離獲取另乙個點的經緯度

這就需要根據獲取到的經緯度獲取計算半徑內4個點的座標 計算方法 phppublic static function getrandlnglat lng,lat,angle,distance 其實高德地圖提供了方法,使用很簡單 amap.event.addlistener placesearch,ma...