當前位置:首頁 » 編程語言 » sql根據經緯度計算距離
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql根據經緯度計算距離

發布時間: 2022-04-29 07:19:30

⑴ mysql中怎麼根據經緯度計算距離

DROP FUNCTION IF EXISTS func_calcDistance ;
CREATE FUNCTION func_calcDistance(
origLng DECIMAL(20,6), -- 目的地經度
origLat DECIMAL(20,6), -- 目的地緯度
longitude DECIMAL(20,6), -- 當前所在地點經度
latitude DECIMAL(20,6) -- 當前所在地點緯度
)
RETURNS DOUBLE
BEGIN
DECLARE result DOUBLE DEFAULT 0;
SET result = round(6378.138*2*asin(sqrt(pow(sin(
(origLat*pi()/180-latitude*pi()/180)/2),2)+cos(origLat*pi()/180)*cos(latitude*pi()/180)*
pow(sin( (origLng*pi()/180-longitude*pi()/180)/2),2)))*1000);
RETURN result;
END ;

⑵ 怎麼知道經緯度算距離,

北京緯度為39°54′N,馬來西亞緯度為1°22′N,則兩地緯度差為38°32′,根據緯度相差1度,緯度1秒的長度,地球的子午線總長度大約40008km。

平均:緯度1度 = 大約111km;緯度1分= 大約1.85km;緯度1秒= 大約30.8m。那麼距離相差111km的規律,計算得兩地南北距離為4281km。

經度分為360度,每15度1個時區,其中0度的叫本初子午線,是第一個進入新一天的地方,然後向西每過1個時區就相差1小時。

例如是早上5點,那麼向西一個時區就是早上4點,再過1個時區就是早上3點,依此類推,向東則相反,一直到本初子午線,也就是說本初子午線兩側剛好相差23個小時,從赤道向兩級,緯度越來越高。赤道是劃分南北兩半球的分界線。

經緯度1度=60分=3600秒,這個六十進制是古巴比倫人定製的,我們今天仍然在使用,只要關於角度和圓都是一樣。

赤道的緯度為0°,將行星平分為南半球和北半球。緯度是指某點與地球球心的連線和地球赤道面所成的線面角,其數值在0至90度之間。位於赤道以北的點的緯度叫北緯,記為N,位於赤道以南的點的緯度稱南緯,記為S。

緯度數值在0至30度之間的地區稱為低緯地區,緯度數值在30至60度之間的地區稱為中緯地區,緯度數值在60至90度之間的地區稱為高緯地區。赤道、南回歸線、北回歸線、南極圈和北極圈是特殊的緯線。

(2)sql根據經緯度計算距離擴展閱讀:

經緯度計算方法

在地球上任何地點,只要有隻表,有根竹竿,一根捲尺,就可知道當地經緯度。但表必須與該國標准時校對。

方法如下:

1、先算兩分日

比如在中國某地,桿影最短時是中午13點20分,且桿長與影長之比為1,則可知該地是北緯45°(tgα=1),東經100°(從120°里1小時減15°,4分鍾減1°)桿長與影長之比需查表求α,這里用了特殊角。

2、再算兩至日經度的演算法不變 緯度在北半球冬至α+23.5°,夏至α-23.5°在任意一天加減修正值即可。

3、修正值演算法:就是距兩分或兩至日的天數差乘以94/365. 比如2013年2月17日,2013年3月22日春分差33天,即太陽直射點在南緯

33×94/365=8.5°

所以今天正午時得到的緯度是(arctgα+8.5)°

tgα= 桿長/影長

參考資料來源:網路-經緯度

⑶ oracle 根據已知的點的經緯度查詢數據中距離該點500米的經緯度點,用sql怎麼查呢

猜猜你的資料庫列大致的格式為:經度,緯度,餐廳。 。 。 估計經緯度應該有精確的控制,你可以根據需要設置查詢 1。矩形(簡單):減去經度,緯度和一個固定值的減法運算的一個固定值,條件是在這個范圍內 2設置。圓(復雜):經度和平方和的平方根的緯度,條件設置 在此范圍內的資料庫的估計要大,所以輸出音量加一個限制是必要 SQL,甲骨文 SELECT TOP 10 *從'表名,其中
選擇*從

限M,N,其中
>從一開始就M,取n個

⑷ sql語句怎麼寫算坐標經緯度之間的距離

declare @x1 float
declare @x2 float
declare @y1 float
declare @y2 float
set @x1 = 5
set @x2 = 10
set @y1 = 5
set @y2 = 10
select power(power((@x1-@x2),2)+power((@y1-@y2),2),0.5)

⑸ 如何計算經緯度之間的距離

計算經緯度之間的距離方法如下:

計算地球上經緯度之間的距離d,已知地球上兩點的經度、緯度:(X1,Y1), (X2,Y2),其中X1,X2為經度,Y1,Y2為緯度;

視計算程序需要轉化為弧度(*3.1415926/180)地球半徑為R=6371.0 km,則兩點距離d=R*arcos[cos(Y1)*cos(Y2)*cos(X1-X2)+sin(Y1)*sin(Y2)]。

假設在中國某地,桿影最短時是中午13點20分,且桿長與影長之比為1,則可知該地是北緯45°(tgα=1),東經100°(從120°里1小時減15°,4分鍾減1°)桿長與影長之比需查表求α。再算兩至日經度的演算法不變 緯度在北半球冬至α+23.5°,夏至α-23.5°在任意一天加減修正值即可。

(5)sql根據經緯度計算距離擴展閱讀

經緯分度:

經度分為360度,每15度1個時區,其中0度的叫本初子午線,是第一個進入新一天的地方,然後向西每過1個時區就相差1小時。例如是早上5點,那麼向西一個時區就是早上4點,再過1個時區就是早上3點,依此類推,向東則相反,一直到本初子午線。

緯度赤道的緯度為0°,將行星平分為南半球和北半球。緯度是指某點與地球球心的連線和地球赤道面所成的線面角,其數值在0至90度之間。位於赤道以北的點的緯度叫北緯,記為N,位於赤道以南的點的緯度稱南緯,記為S。

緯度數值在0至30度之間的地區稱為低緯地區,緯度數值在30至60度之間的地區稱為中緯地區,緯度數值在60至90度之間的地區稱為高緯地區。

⑹ 怎樣計算兩個經緯度之間的距離 百度百科

地球赤道上環繞地球一周走一圈共 40075.04公里,而一圈分成360°,每1°(度)有60'。每一度一秒在赤道上的長度計算如下:

40075.04km/360°=111.31955km

111.31955km/60'=1.8553258km=1855.3m

每一分又有60秒,每一秒就代表 1855.3m/60=30.92m,任意兩點距離計算公式為:

d=111.12cos{1/[sinΦAsinΦB十 cosΦAcosΦBcos(λB-λA)]}(A點經度,緯度分別為λA和ΦA,B點的經度、緯度分別為λB和ΦB,d為距離)。

地球上所有地方的緯度一分的距離都是約等於1.86公里,也就是一度等於1.86*60=111公里。不同緯度處的經度線上的一分的實際長度是不同的,219國道基本在東經29-38度之間,29度處的一分經線長約1.63公里,38度處的一分經線長約1.47公里。


(6)sql根據經緯度計算距離擴展閱讀:

在地球儀上,由經線和緯線就組成了經緯網;如果把經緯網地球儀展開,就形成了一幅平面的地圖。確定位置,在航空、航天、航海以及氣象等方面都有作用。「船在海上遇到危險時,如何去營救」等等,都要用到經緯網地圖。

經度 :為了區分地球上的每一條經線,人們給經線標注了度數,這就是經度。經度每15度1個時區。 實際上經度是兩條經線所在平面之間的夾角。國際上規定,把通過英國首都倫敦格林威治天文台原址的那一條經線定為0°經線,也叫本初子午線。

從0°經線算起,向東、向西各分作180°,以東的180°屬於東經,習慣上用「E」作代號,以西的180°屬於西經,習慣上用「W」作代號。東經180°和西經的180°重合在一條經線上,那就是東西180°經線。緯度:從赤道向北量度為「北緯」(N);向南量度為「南緯」(S)。

在地圖上判讀經度時應注意:從西向東,經度的度數由小到大為東經度;從西向東,經度的度數由大到小,為西經度;除0°和180°經線外,其餘經線都能准確區分是東經度還是西經度

⑺ sql語句怎麼寫算坐標經緯度之間的距離我是mysql資料庫。 請詳細點!謝謝!

這單用SQL語句是辦不到的吧
應該先把坐標從資料庫中取出,再用三角函數計算。
或者在存入資料庫之前,先把距離計算出來,一並存入。

⑻ sql怎麼將一系列點經緯度坐標匹配到某市

ORACLE獲取數據,根據定位的數據,計算用戶的經緯度。
根據經緯度計算地球上兩點之間的距離的SqlServer函數,單位是千米。mysql距離計算,單位m,以及排序lon經度,lat緯度,一般地圖上顯示的坐標順序為,緯度在前(范圍-90~90),經度在後(范圍-180~180),首先新建一張表,裡麵包含經緯度。
結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,所以具有完全不同底層結構的不同資料庫系統,可以使用相同的結構化查詢語言作為數據輸入與管理的介面。結構化查詢語言語句可以嵌套,這使它具有極大的靈活性和強大的功能。

⑼ 如何根據經緯度計算兩地間的距離

1、地球赤道上環繞地球一周走一圈共40075.04公里,而@一圈分成360°,而每1°(度)有60,每一度一秒在赤道上的長度計算如下:

40075.04km/360°=111.31955km

111.31955km/60=1.8553258km=1855.3m

而每一分又有60秒,每一秒就代表1855.3m/60=30.92m

任意兩點距離計算公式為

d=111.12cos{1/[sinΦAsinΦB十cosΦAcosΦBcos(λB—λA)]}

其中A點經度,緯度分別為λA和ΦA,B點的經度、緯度分別為λB和ΦB,d為距離。

2、分為3步計算:

第1步 分別將兩點經緯度轉換為三維直角坐標:

假設地球球心為三維直角坐標系的原點,球心與赤道上0經度點的連線為X軸,球心與赤道上東經90度點的連線為Y軸,球心與北極點的連線為Z軸,則地面上點的直角坐標與其經緯度的關系為:

x=R×cosα×cosβ

y=R×cosα×sinβ

z=R×sinα

R為地球半徑,約等於6400km;

α為緯度,北緯取+,南緯取-;

β為經度,東經取+,西經取-。

第2步 根據直角坐標求兩點間的直線距離(即弦長):

如果兩點的直角坐標分別為(x1,y1,z1)和(x2,y2,z2),則它們之間的直線距離為: L=[(x1-x2)^2+(y1-y2)^2+(z1-z2)^2]^0.5

上式為三維勾股定理,L為直線距離。

第3步 根據弦長求兩點間的距離(即弧長):

由平面幾何知識可知弧長與弦長的關系為:

S=R×π×2[arc sin(0.5L/R)]/180

上式中角的單位為度,1度=π/180弧度,S為弧長。

3、1度的實際長度是111公里。但緯線的距離會越考兩端越小,他的距離就會變成111乘COS緯度數,經度不變。

4、南北方向算出兩點緯度差,一度等於60海里,1分等於1海里,海里與公里換算關系1海里等於1.852公里。東西方向量出距離到兩點間緯度附近量出緯度差,得出海里數,再乘以1.852換算成公里。可按直角三角形原理求出兩點間距離。

5、度的實際長度是111公里。但緯線的距離會越考兩端越小,他的距離就會變成111乘COS緯度數,經度不變(如果在同一經度)

⑽ sql (mysql)實現查詢某一個經緯度周圍500米距離的餐館,資料庫存放所有餐館的經緯度。

樓上回答的不詳細,代碼如下,正巧我做到相關項目,雖然回答有點晚,但是為了幫助後續搜索的人。。。
$user_lat='41.749034'; //傳過來的緯度
$user_lng='123.46017';//傳過來的經度
$store_mod=db("store"); //資料庫
$storelist=$store_mod->query("SELECT *,ROUND(6378.138*2*ASIN(SQRT(POW(SIN((".$user_lat."*PI()/180-【store_latitude】*PI()/180)/2),2)+COS(".$user_lat."*PI()/180)*COS(【store_latitude】*PI()/180)*POW(SIN((".$user_lng."*PI()/180-【store_longitude】*PI()/180)/2),2)))*1000) AS distance FROM store HAVING 【搜索條件如 state=1】 distance<【周圍距離多少米 如 500】 ORDER BY distance ASC");
var_mp($storelist);
【】sql語句中括弧的store_latitude,store_longitude為你資料庫存的商家經緯度的欄位名,其餘的為注釋