我相信有看過本團隊於2012年出版的 Android手機程式超簡單-App Inventor入門卷 的朋友,對這個題目一定不陌生,加上鄉親朋友對本系列書籍的支持,讓這本書在銷售上有不錯的成績。也因此本團隊針對許多朋友對該書籍提出的建議以及小錯誤進行整理並修改,其中在使用LocationSensor定位的範例程式主要是由我-偉民老師負責,最近本人也針對此範例的距離計算失準問題進行修改。
在使用Google大神多次搜尋下,發現計算兩點經緯度的最短距離不再是使用畢氏定理這麼簡單,主要原因是經緯度的計算不是平面座標而是球面座標。在兩點經緯度已知的情況下,過去有學者提出兩種不同的方法來計算兩點的最短距離,分別是:
1. Great Circle Distance Method
http://en.wikipedia.org/wiki/Great-circle_distance
2. Haversine Method
http://en.wikipedia.org/wiki/Haversine_formula
本人主要是以Great Circle Distance Method為主進行程式的撰寫,該方法公式如下:
d = R x arccos(sin(a1)sin(a2)+cos(a1)cos(a2)cos(b2-b1))
其中d為兩點最短距離,R為地球半徑=6371Km,(a1,b1)和(a2,b2)為兩地經緯度,a為緯度,b為經度。
剛好本人最近有時間可以趴趴走,因此每到一個地方就用這個新程式進行測試,下圖是在永和成功路一段的位置進行的測試結果。之後本人會將修改完成的最終版程式上傳至App Inventor中文學習網(http://www.appinventor.tw/)的檔案庫中供大家下載測試,檔名為LocationSensorVer2,也請大家將測試的結果留言分享給我知道。
偉民老師您好,
經緯度通常標示為北緯X度X分X秒、東經X度X分X秒,地球半徑 6371 km,非 6.371Km。
(a1,a2)和(b1,b2)為兩地經緯度,無法清楚何者經度,何者緯度?
另外請教台北101經緯度引用何處資料?
最後的問題,套用你的資料,計算結果為 5.21045 km
謝謝Bridan大大指教,
以下針對你的問題進行說明:
1.經緯度通常標示為北緯X度X分X秒、東經X度X分X秒
A: 在螢幕上顯示的是App Inventor程式所回傳的經緯度表示方式。
2.地球半徑 6371 km,非 6.371Km
A: 這是本人在撰寫文章時的筆誤,已進行修正,程式中是以6371表示。
3.(a1,a2)和(b1,b2)為兩地經緯度,無法清楚何者經度,何者緯度?
A: 這也是本人的筆誤,已進行修正並加入說明。
4.另外請教台北101經緯度引用何處資料?
A: 我主要是用google地圖直接點選101上的經緯度,因此與實際上的經緯度會有些許的誤差。
謝謝偉民老師的回覆,
如果經緯座標以度分秒表示會比較專業,例如 Taipei 101 @ 25°2'1.28"N, 121°33'53.33"E
關於國際單位頭詞 (Metric Prefix), 公里的正確表示為 km,是小寫的 k,參閱維基百科
https://zh.wikipedia.org/wiki/%E5%9B%BD%E9%99%85%E5%8D%95%E4%BD%8D%E5%88%B6%E8%AF%8D%E5%A4%B4
套用你的數據用 EXCEL 及 App Inventor 計算結果都是 5.21045 km,您需要再確認
請問方便給.aia的格式嗎?我是新手,對方塊的組合及指令還不是很瞭解,謝謝您
您好,請留下您的 email 好嗎?