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