OpenStreetMap Taiwan 的第六場 Webinar,輪到我分享整合 OpenStreetMap 資料與 Leaflet 的應用。
以下是簡報與影片
觀看嘉農的時候,總會有些細節想弄清楚,例如
這些情報都在地圖上,台灣政府許多機關藏有許多寶貴圖資,各縣市、中央單位不只保存每一階段的量測成果,許多更早以前的紙本圖資也已經被數位化。像是中央研究院、人社中心地理資訊科學研究專題中心的台灣百年歷史地圖系統,即藏有日治時代堡圖、地形圖等。臺北市都市發展局的臺北市歷史圖資展示系統也提供了寶貴的歷史圖資。
很可惜的,有更多的寶貴圖資被藏在政府機關中,許多圖資的品質比商業圖資更佳,即便有像是國土資訊系統或中華民國交通部公路總局資訊室 Safe Taiwan 單位積極整合,但卻因為授權不明,造成民間難以存取使用。
前陣子發掘了一些潛在的資訊,整理於 台灣開放街圖 社群筆記中。
其中一個發現是中央研究院嘉義百年歷史地圖 WMTS 服務,它包含了五筆重要的歷史地圖
為了方便使用,我做了一份線上疊圖,並標註幾個電影中重要的景點,歡迎指教。程式碼可於 github 免費下載。
經過連續四次的每月線上技術會議 (Webinar #1, #2, #3, #4) 後,二月決定移師台北外出走走,mcdlee, Louis Liu 兩位資深志工特地從高雄一天來回台北參加此次活動。2014/02/15 的台北象山 Mapping Party 總共有十六位朋友參加,所幸未因雨取消活動。
Mapping Party 的主要目的是希望帶領一些新朋友熟悉繪圖工具,因步道仍溼滑,本次活動不行攀岩路線,依照體能分成兩隊,一隊走四獸山步道,另外一隊則走南港山稜線步道。由於規劃的時間有限,並未針對原地圖標示 tag:fixme 的未明路線的進行踏查,主要仍行大眾路線,並沿路紀錄需繪記的地標。並於約下午兩點回到 Mozilla Space 進行現場繪製與經驗分享。
本次修改主要是沿途道路的情報更新,新增黃蟬園路線與位址、修正高壓電塔路線、改善松山家商一帶的資訊、調整四獸山區域的林木線,每次一點點的小更新,都會讓地圖更加完善。以下是本次活動的編修紀錄
以下跟 Google Map 的圖資比較
很明顯開放街圖在山區的詳盡度大勝 Google Map,雖然涵蓋的路線仍尚未覆蓋全台百岳或知名路線,道路品質也尚未能夠進行導航規劃,但登山之人行步道與道路的識別度已高於非戶外專用的圖資。比起 Garmin 等台灣商業圖資,在市區的詳盡度仍有很大的改善空間。
相較於幾年前,開放街圖的資料已經大幅提高。但仍須志工投入,無論是使用或是回報問題或是成為繪圖志工。就像 2014 年冬季奧運的所在地 – 索契一樣,集結眾人的力量完成詳細度大勝商業圖資的免費地圖!
如果您有任何操作上的問題,歡迎參加以下的活動或透過線上網站發文,志工們都很樂意回答您的問題。
歡迎加入台灣開放街圖社群!
大約是 2008 年的時候,為了 OpenStreetMap 活動,跟著 KaLUG 團購,一起買了 HOLUX M-241,當時大部分行動裝置並沒有內建 GPS,只有某些高單價的 PDA 有全球定位系統功能。相對 M-241 在當時的市場性價比很高,使用 MTK 技術,很驚訝居然到目前為止仍持續銷售。
實際使用上經歷一些技術問題
後來又陸續買了 Garmin Dakota 20, Nokion AW100, 智慧型手機 iOS, Android 等等包含 GPS 功能的裝置來紀錄軌跡。
這篇文章分享一些個人對於衛星定位系統的理解,希望可以幫助其他朋友採購的作為參考依據。
這幾年的 GPS 裝置的入手價格越來越低,參與 OpenSteetMap 的門檻也越來越低。有些朋友想購買新的 GPS 裝置,來紀錄踏查軌跡,到底購買的時候要考量哪些產品條件?
以下是我認為構成一個好產品的評估要件
這些條件取決於產品定位與設計。當然,準確性是最主要的評估要件,而硬體本身就是最大的侷限,從技術面來分析,大約可以分成下面幾項
以下逐一討論。
從過去 GPS Receiver Chip 通常是一棵獨立的元件,到現在行動裝置流行的市場,衛星定位系統已經逐漸變成整合進 SoC 的基本功能。衛星定位系統 (Satellite navigation) 遠在約 20,000km 以外的衛星軌道,定位訊號廣播穿送到地表後,強度約在 -125dBm to -130dBm.
在接收到衛星傳送的導航資訊之後,接收器會得到以下的資訊
在訊號抵達地表成功判讀前,有許多原因會造成誤差,其中天氣與量測環境是最容易影響收訊的因子
這些 RF 誤差需要再處理,像是常見的因為建築物或地面造成訊號反射誤差,可以用 Narrow Correlator Spacing 來處理,大氣效應產生的電離層誤差也可以透過韌體來做修正。
然評估晶片效能,優先考慮的是靈敏度 (Sensitivity),感度越高,越能處理微弱的訊號,在室內或遮蔽時有顯著的差異,另外新型晶片設計也可以抑制多重路徑誤差,提高準確度。
衛星系統會發出數種無線電訊號頻道,這些頻道各帶有不同的資訊。要完成定位功能,只需要 L1, L2 頻道。L1 頻道中帶有捕獲碼 aka (C/A, Coarse/Acquisition Code) 與測距碼 (P碼),若支援 L2 頻道之資料,則可計算出電離層全電子含量(Total Electron Content, TEC) 所造成的延遲,或是使用於 OPUS 等 GPS post-processing service 系統提高定位準確度。
但受到美國軍方管制,一般民用定位系統只支援 L1 (1575.42Mhz±5MHz, GLONASS 1602±8MHz)。但即便無法對 L2 解碼,民間定位系統仍可以分析載波 (carrier wave) 的方式進行即時動態測量 (Real Time Kinematic correction),估算大氣效應誤差。因應民用需求,2005 年後,新的 Block-IIR-M GPS 衛星會送出 Civilian L2 (L2C) 訊號,但要到 2016 年後 Next Generation Operational Control System (OCX) 才正式啟用。
上述系統談的是美國 NAVSTAR Global Positioning System (GPS),在 2013 年四月前,全球定位系統只支援 NAVSTAR,但現在市場已經有 Russian 的 GLONASS 系統可用。另外在 2020 年還有中國的北斗衛星導航系統、歐洲的 Galileo 系統。現在新款的晶片也可以支援 Multi-GNSS,市面上的手持產品有 Garmin eTrex 等,至於手機產品如 Qualcomm Snapdragon 400 等也同時支援 GPS 與 GLONASS.
更新頻率 (Update rate /Fix Rate),這是指從感應晶片傳來的定位頻率有多高, 通常是一秒 1 點到 10 點間 (1-10 Hz),例如 M-241 可程式化成 1 到 5Hz. 一般登山步行一秒一點很夠用,但是如果你用來紀錄賽車或無人飛行器軌跡,就會發現精度不足囉。
另外一個值得考慮的是晶片可以支援的處理頻道數量,理論上只要三個衛星就可以計算出平面定位,取得四顆衛星能取得 3D 定位。也就是說,裝置最低需要同時處理四個 L1 頻道訊號。但是在成功取得定位前,裝置必須搜索所有可能訊號,以找出最接近的衛星,在首次定位前,同時間能夠處理的衛星訊號數越多,首次定位也就越快、越省電,定位之後也能有效率的鎖定衛星訊號。以前只有美國系統,加上地表角度,天空最多同時可以看到一打以內的衛星,所以大概只需要十二組頻道。但是若加上俄國等系統,你也就需要更多的「處理頻道」。
簡而言之,處理頻道的益處是減短定位時間、減少因遮蔽失去訊號的機會、提高省電。但必須認識的是,處理頻道是很容易誤解的銷售詞彙,各家廠商定義不同。要注意產品規格上說的處理頻道是支援 L1, L2, 那些衛星系統、哪些輔助定位系統。千萬小心那些灌水的數字。
除了晶片性能外,另外一個嚴重影響接收能力的是無線射頻接收設計,衛星訊號在抵達晶片前,會通過天線、射頻前端模組等,然後才會轉成中頻進到數位處理的階段。
由於全球定位系統的頻譜位於 VHF 頻段,與 ANT、電信網路、藍牙或無線網路不同,使用獨立的接收天線,在小型的裝置上常見使用平板天線 (patch antenna),專業一點的手持裝置則可能選用四臂螺旋式天線 (Quadrifilar Helix Antenna),看起來像是傳統黑金剛的大型天線,收訊效能比平板天線好。
不同的天線設計造成優劣有別的增益效果,不過技術演進使晶片感度大幅提昇,處理訊號反射誤差等等能力提高,在開闊環境效能可能十分接近,但是若是大樓林立的都市環境或樹林中,才會看出明顯差異。有些手持式衛星定位系統甚至保留外接接頭,可以外接主動式天線來提高收訊效果。例如裝於汽車上,為了避免車廂金屬屏蔽,可以拉線到車輛外面,但必須注意天線的線路會因為長度增加增加衰減。
通過天線進入射頻前端模組時又可再分成以下幾個元件來評估。
通過天線,進入 RF Front end 後會依序進入上述元件進行訊號增強、過濾、轉換,但這些元件皆已經高度模組化,使用者很難從外觀去判斷性能差異或是進行客觀的評估,畢竟缺乏測試設備,也難以獨立的對每個元件進行測試,但是只要其中一個元件設計失誤,就會影響使用效能。特別是整合到電路板上後造成的訊號干擾問題,在在考驗製造商的工藝技術。
前提是製造商願意重視數位定位的性能。由於目前在智慧型手機,許多使用者的用途都是在室內打卡、查詢附近路徑,大部分的時候只要壟統的位置資訊即可滿足,更重要的是電話通信的訊號必須良好。也因此衛星定位的天線的優先值總是被排到最後,而且依照市場需求,外型是消費者採購的優先考量,為了配合機構設計,天線可能會移到勉強可用的位置。也因此,有些手機必須手持螢幕朝向臉部才能夠成功定位。
甚至有些產品是沒有經過嚴謹測試就上市了。像是 2012 年推出的 ASUS Eee Pad Transformer Prime,大膽採用金屬外殼,結果導致 GPS 功能無法接收訊號失效。
金屬會屏蔽電波訊號,請不要再弄清楚手機天線位置前隨便安裝金屬製造的外框阿。
談完了基頻處理的硬體,接下來來談談韌體。全球定位系統有許多可以縮短定位時間或提高定位精準的技術,這些技術並非全部在韌體中,也可能以軟體導航實作,許多技術也需要依賴硬體的資訊才能完成。以下逐一討論
Assisted-GPS 或 A-GPS 是第一個最容易讓人混淆的的名詞了,最基本的概念是不從衛星抓取衛星星曆 (Almanac) 與星曆表 (Ephemeris),而是透過 IP 網路或離線取得可用的星曆資料,甚至透過其他技術預先取得大致位置,再利用此粗估位置推算可見衛星,避免緩慢的猜測行為,如此就可加速第一次定位的時間。
若沒有預先快取的星曆資料,就必須等待定位時透過衛星訊號下載,如此會增長第一次定位時間。若關機一段時間,星曆資料已經過期,也必須重新下載 (cold start)。
容易令人混淆的是在電信網路協定中,除了使用 TCP/IP 最多採行的 OMA 協定 “Secure User Plane Location” (SUPL) aka Mobile Station Based 外,還有另外一種 Mobile Station Assisted, Control Plane Protocol 則是透過基地台計算行動電話位址,然後將位址資訊傳送回手機。這兩種技術是完全相反的。
除了透過電信網路的協定外,另外一種作法是網路輔助定位 (network-assisted positioning)。在 Android 的 GPS HAL 中,你也可以發現有 XTRA 支援的 API,可以透過網際網路下載星曆資料,然後再透過其他的 Geolocation 系統透過 WiFi ESSID 或 Cell ID 取得約略位址,餵回給 GPS 以加速定位速度。然而 XTRA 是 Qualcomm 的技術,其他晶片廠商各有不同的作法,如 MTK 則叫做 EPO (Extended Prediction Orbit)。在有線上資源的加持下,手機在首次定位的速度常常贏過手持式 GPS 裝置。像是 Garmin 的裝置,若你拜訪另外一個國家,它常常會只利用上次使用的快取搜尋衛星,導致非常第一次定位非常久。
協定與方式不同,但是都是透過線上網路取得星曆與粗略位置。也有產品是使用離線星曆的方式,像是我手上持有的 Nikon AW100 三防相機,就支援離線 aGPS,Nikon 的星曆只有七天,每七日得重新下載進 SD Card,並從相機選單中更新資料至衛星定位模組。
全球衛星導航增強系統 (GNSS Augmentation System) 是利用差分全球定位系統 (Differential GPS, DGPS) 技術,簡單講是在地面設立數個參考基站,由於基站位置是固定的,因此可以透過差分改正(Deviation Correction) 推算大氣延遲、時鐘漂移 (clock drift)。這種增強系統又分為衛星式系統 (satellite-based augmentation system, SBAS) 與陸地系統 (Ground-based augmentation system, GBAS).
衛星式系統又稱為 WADGPS, wide-area DGPS,是將陸地基站的資訊再透過衛星廣播出去。其中比較知名的是歐洲 European Geostationary Navigation Overlay Service (EGNOS)、日本的 Multi-functional Satellite Augmentation System (MSAS)、美國的 Wide Area Augmentation System (WAAS),像 WAAS 為例子,可以定位到平面 1 公尺、垂直 1.5 公尺 的精確度。
由於使用的頻段一致,可以以韌體實作不需要額外的無線接收硬體,不少產品支援 WADGPS。至於陸地系統 (Ground-based augmentation system, GBAS) 使用的頻譜不同,一般民用消費性產品並不支援。
另外一個有顯著差別的是慣性導航系統 (Inertial navigation system),由於定位時時常會通過林木遮蔽處或隧道等環境,此時會遺失衛星訊號,部份系統的作法是在重新取得定位前,不予紀錄。但是也有作法是利用利用輔助感應器 (Sensors) 的情報來做航位推算 (Dead Reckoning, deduced reckoning)。
一般在定位系統或智慧型手機上常可看到以下感應器
這些感應器可以提供高度、方向、加速度、角速度、速度等移動資訊,透過這些資訊即可以慣性推算運動的位置。當然準確度是很可疑的,但是可以作為暫時遺失訊號的備用機制,彌補無法錄記軌跡的問題。部份民用衛星定位系統支援慣性導航功能。
市面上的產品大致可以分為三類
若要購買專門的器材,第一優先依照使用需求購買,市面產品多樣,有適合方便跑步紀錄的手錶、自行車等專用產品,產品大小對於運動類型有很大的影響,某些自行車專用可以順便紀錄踏頻、輪圈,都已經整合妥當,使用起來也比較方便。特別注意某些舊款產品能收的處理頻道較少、或是沒有數位羅盤功能,這都會造成定位較慢或不容易使用。像是 HOLUX M-241 就沒有數位羅盤,功能中的行進方向是透過軌跡計算出運動方向。
如果會進行兩天以上深山的行程,可能會進入濃霧、大雨的惡劣氣候中,而且無法當天撤退,筆者建議購買防水的手持式衛星導航系統,最好是附有四臂螺旋式天線的產品。因為在山中,必須用到衛星定位系統就是視線不良,無法透過地圖判讀與目標定位的時候。特別是天候狀況不佳、攸關性命時,更不想依賴可能進水損壞或只有特定角度收的到訊號的裝置。
若是輕鬆且避開惡劣天候的行程,手機可以取代大部分的 GPS 功能,而且性能強大,撥看地圖效率遠比傳統手持定位系統好。無論是 MTK 平台或是 Qualcomm,衛星定位功能皆已整合,Qualcomm 平台宣稱可以精準至 2 公尺 (應搭配 WADGPS) 精確度與省電比起兩三年前大幅提昇許多。但是購買時,仍須注意產品的無線接收設計,如果以性能為優先考量,就別考慮好看的金屬外殼機種吧。
使用上必須注意的是手機有數種定位方式,可以透過網路 (WiFi, Cell Id) 或是 GPS 訊號,但由於 GPS 訊號往往定位較慢且耗電,許多開發者會使用預設的網路定位方式,這會造成切換電信基地台或收到其他無線網路基地台時,產生漂移的問題,也因此我們會看到迷路的悲劇。若要導航使用,建議使用專門的軟體,像是 OruxMaps,功能強大也可以預載離線地圖,以免沒有網路可存取線上圖資系統。
除了參考本文寫的各項要點外,在購買的時候,規格上常常會寫一些令人困惑的精確度,例如 Garmin Dakota 20
<10公尺,95%、RMS、Typical,無S/A干擾下,單機定位
這是指,這個測量有 95% 的信心度,RMS 指大約有 63%-69% 是在十公尺之內的精確度。無 S/A 干擾指無美國的誤差干擾 Selective availability,這項干擾措施已經於 2000 年 5 月停止,單機定位指沒有利用 DGPS 的定位增強系統定位。這個測試應該是在開闊區域進行,若進入如在深谷中,由於收到訊號的角度太窄,更容易產生計算誤差,要小心地形所造成的誤差,不能只看表面規格。很遺憾,市場上沒有手機在規格上標明衛星定位精確度。
另外則是紀錄軌跡的精度功能,其實一般通用的 GPX (GPS Exchange Format) 檔案格式可以包含精度情報,例如定位的類型 (fix) 是 2d, 3d 還是 DGPS, 收到幾顆衛星 (SAT), 精度因子 (Dilution of precision, DOP) 等。定位時可能產生的錯誤太多,就算可以收到數顆衛星資訊,推算過程中必定產生誤差,精度因子是透過衛星的位置算出可能的錯誤範圍,藉此可以得知該軌跡點的可信賴度。
仍而一般戶外休閒用手持衛星追蹤裝置並未提供此資訊,另外在手機,如果直接使用標準程式界面,精確度也會被轉換成以公尺為距離的誤差。能夠取出完整資訊的只有 NMEA 格式,但 NMEA 需要再次被處理過才好分享給其他軟體使用。
無論是使用手機或專門導航系統,記得要多帶電池。多日行程也請攜帶紙本地圖與指北針。電子產品有可能失效,而多個小事故累積起來往往會產生悲劇。
養了很多 Debian/Ubuntu 機器時,時常得利用 apt 大量更新軟體。最常見的需求是 Security updates,所有伺服器都會抓取同一份軟體,機器量一大用掉的頻寬也很可觀。為了省下這些頻寬,得在伺服器區域網路設定一組快取伺服器,讓全區域網路下載一次。
有得人會自己建一份 archive mirror.
但是 Debian/Ubuntu 套件眾多,全部映射一份實在很費空間。我個人偏好只快取曾經抓過得檔案。
Debian/Ubuntu 中已經有幾個選項可用
approx – caching proxy server for Debian archive files
apt-cacher – Caching proxy for Debian package and source files
apt-cacher-ng – caching proxy server for software repositories
apt-p2p – apt helper for peer-to-peer downloads of Debian packages
debtorrent – bittorrent proxy for downloading Debian packages
apt-transport-debtorrent – an APT transport for communicating with DebTorrent
squid-deb-proxy – Squid proxy configuration to optimize package downloads
squid-deb-proxy-client – Automatic proxy discovery for apt based on avahi
其中 apt-p2p 與 debtorrent / apt-transport-debtorrent 是大約 2006-2008 年 p2p 技術熱門時的嘗試。而 debtorrent 直接利用 bittorrent 協定,而 apt-p2p 使用 kademlia DHT 協定來處理分散檔案,需要安裝 Twisted. 兩個概念都很有趣,但是我並不想在每台機器上架設 p2p server,純粹只是需要供應新的安裝檔案。
個人評估之後,選了 apt-cacher-ng. 設定簡便,apt-get 安裝完即可用,不相依於其他網站伺服軟體。還有簡易的管理界面可以看快取效率唷!
由於它基本上是個 http proxy,所以你可以用 transparent proxy 來導引所有的下載,或者在 /etc/apt/apt.conf.d/90aptcacher-ng 加入以下設定即可。
Acquire::http { Proxy "http://10.11.11.254:3142"; };
除了可以透過預設網頁來看快取狀態,也可以在 console 跑 /usr/lib/apt-cacher-ng/distkill.pl
來看硬碟上佔用了多少空間。
AptProxyCache – Ubuntu Wiki https://wiki.ubuntu.com/AptProxyCache
這是 2013 年進行聖母峰基地營與 Gokyo 湖區健行,十一月從尼泊爾回國之後,應山友邀請整理的一份簡報。出發前很大程度的依賴網路山友的路線情報,知道目前網路上已經有很多攻略,於是便不公告逐日旅記。
這份簡報主要著重於個人的心得,希望可以涵蓋一些較少討論的事宜。
敬請指教。
照片分享
軌跡檔