大量地址轉換經緯度的方法

如果手上有一批地址資料需要顯示在地圖上,要先將這些資料轉換成經緯度才行。而中文地址轉換成經緯度,目前應該只有Gooe Map API做得到,我試過其他各家的API,例如MapQuest、ArcGPS、MapBox等,都不支援中文地址(這裡有詳細的Geocoder API清單)。

使用JavaScript Google Map API

Google May API提供了Geocoder的方法,以下是範例:

Google Map API使用API Key的話,會有一天2500個查詢的限制,若不使用API Key,則查詢沒有上限。根據Google官方文件的說法,這是為了舊版API的相容性。而這樣的設計這也算是個漏洞,如果要做大量的批次轉換,就不用給API Key。可是這種方式不允許短時間內大量的查詢,否則有些查詢會失敗。解決方法是,每個查詢間隔一秒(用setTimeout)。

以JavaScript來說,要寫成批次程式可以使用Node.JS。但Node.JS本身是非同步執行,也就是說,Function A還沒執行完畢,可能Function B就已經開始執行了。幸好Node.JS有不少流程控制的套件可以處理非同步的問題。比較著名的套件是q,這個套件實作了JavaScript Promise。我自己寫過之後覺得,用Node.JS寫批次的眉眉角角很多,如果熟悉Python的話,用Python來寫批次應該會比較合適。

批次轉換工具

如不想自己寫程式做批次查詢,網路上有兩個工具可以使用。

1. 我自己寫的Batch Geocoder小工具

這是用JavaScript寫的,沒有查詢筆數的限制。它是1秒查詢一筆資料,等於一小時只能產生3600筆,而且要開著瀏覽器等待,比較適合少量資料的查詢。

2. 內政部TGOS全國門牌地址定位服務

這個網站產生的經緯度比Google精確,可是需要上網申請帳號,個人帳戶的限制是,每天可批次查詢一萬次,機關及學校單位另可申請公司帳戶,每個月可查詢三十萬次,也可使用該網所提供站的即時API。


相關文章

如何將電腦畫面經由 Chromecast 投放到電視螢幕上

Chrome 的檔案續傳功能

隱私權政策產生器 Privacy Policy Generator

使用 Vysor 在電腦上控制 Android 裝置