mysql計算附近的地鐵站
問題描述
如圖有兩張表,小區表(xiaoqu)和地鐵表(metro),現在小區表里面小區附近的地鐵站(圖片中紅色字段)是空的。想批量完善這個字段,求助。附近的定義是:離小區最近,并且在1000米以內的一個地鐵站。例如:北京的華騰園小區,附近1000米有雙井和勁松兩個站,但是勁松距離較近,所以華騰園那一行對應的就是勁松站。
目前已經自定義了兩個經緯度之間距離的函數。getdistance(緯度1,經度1,緯度2,經度2),函數代碼如下:
-- getdistance(Lat1 ,Lon1,Lat2 ,Lon2)BEGIN DECLAREdis DOUBLE ; SET dis = ACOS(SIN((Lat1 * 3.1415) / 180) * SIN((Lat2 * 3.1415) / 180) + COS((Lat1 * 3.1415) / 180) * COS((Lat2 * 3.1415) / 180) * COS( (Lon1 * 3.1415) / 180 - (Lon2 * 3.1415) / 180) ) * 6370996.81;RETURN dis ;END
問題解答
回答1:我的思路是:獲取目標點坐標->以一定范圍r來查看地鐵表中哪些地鐵在r中,如果有,進行比較距離,如果沒有增大r,重復直到r距離超過最大范圍->結束。
我覺得效率的關鍵在于計算、比較距離這塊。
回答2:我覺得這種不應該用SQL去實現。
我去做的話:
獲取小區信息,獲取屬于哪座城市。
用SQL把當前城市地鐵數據搜出來。
然后可以用各種算法(或規則,例如你上面的方法)計算最近地鐵。
SQL應該是用來存儲和獲取數據的,不應該承載太多邏輯功能
相關文章:
1. java中返回一個對象,和輸出對像的值,意義在哪兒2. css - chrome下a標簽嵌套img 顯示會多個小箭頭?3. vim - docker中新的ubuntu12.04鏡像,運行vi提示,找不到命名.4. docker網絡端口映射,沒有方便點的操作方法么?5. mysql - 在不允許改動數據表的情況下,如何優化以varchar格式存儲的時間的比較?6. mysql 為什么主鍵 id 和 pid 都市索引, id > 10 走索引 time > 10 不走索引?7. css3 - 純css實現點擊特效8. css - 網頁div區塊 像蘋果一樣可左右滑動 手機與電腦9. javascript - Img.complete和img.onload判斷圖片加載完成有什么區別?10. javascript - 有適合開發手機端Html5網頁小游戲的前端框架嗎?
