iT邦幫忙

1

SQL 計算目前所在位置到某經緯度距離

  • 分享至 

  • xImage

我負責後端部分

前端會傳給我一串經緯度資料
這串資料代表我目前所在經緯度
例如:
lng:23.12345, lat:128.23456 //lng經度, lat緯度

接下來我會去資料庫撈某個地點的資料表
其中資料表中的欄位有table.lng和table.lat
代表該地點的經緯度

我想要計算目前所在經緯度到資料表中該地點的經緯度距離
同時select欄位時 另外as一個欄位叫做distance
並以公里為單位
請問該怎麼下公式

看更多先前的討論...收起先前的討論...
ch_lute iT邦新手 5 級 ‧ 2020-05-21 14:21:43 檢舉
國中數學的"點—點距離公式",想用理解的話就是在直角平面座標上點出2個點,座標(x1,y1)和(x2,y2)然後分別劃出鉛直線和水平線到X,Y軸,對長方形和三角形的邊長做計算
該死....問了蠢問題.....
看到經緯度就想多了......= =
還要考慮地球不是平面 不過短距離應該誤差不大
開平方SQR( (經度相減)^2 + (緯度相減)^2 )
靠近赤道的經度距離最大,平均每個經度111公里,靠近南北極就直接歸零,所以經度差還要乘上緯度差,網上有公式....我來亂的

https://wywu.pixnet.net/blog/post/26533759
勾股、畢氏定律..........兩股次方和開方得距離
誒誒誒~~所以不是只有兩點球直線距離這麼簡單喔...= =
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
通靈亡
iT邦高手 1 級 ‧ 2020-05-21 14:29:56
最佳解答

公式:
sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
φ 代表兩地點緯度相減,λ 代表兩地點經度相減
φ1 代表地點1的緯度,φ2 代表地點2的緯度

https://www.movable-type.co.uk/scripts/latlong.html

程式碼實作(14個語言應有盡有,包含SQL):
https://www.geodatasource.com/developers/mssql

我要發表回答

立即登入回答