Android GNSS Measurements API

之前介紹過 Google 在 Android 7 (Nougat) 中推出 GNSS measurements API ,由於這個功能受限於硬體韌體設計,暫時只有某些晶片才能支援,包含了 Exynos、Qualcomm、Broadcom BCM4774、Intel WCS2x00 等。預計今年之後會出現越來越多支持 GNSS Measurements API 的手機。

開發者網站提供一個參考列表,包含市面上幾個旗艦手機的對於 Pseudo-range and pseudo-range rate、Navigation messages、Accumulated delta range or carrier、Hardware (HW) clock 等支援現況,也提供了範例程式給開發者參考。

歐洲的全球衛星定位系統 Galileo ,也辦了兩次黑客松,參與者 Lukasz Kosma Bonenberg 博士分享一些應用發想,像是 Differential GNSS/RTK、窮人的衛星訊號干擾偵測、窮人的地震感應器、或是用 GNSS Shadowing 改善都市叢林的定位。他也將相關的程式碼發布到 github 上。

依照最近的實驗研究,智慧手機的天線與接受器設計明顯比不上專業的量測儀器,即使有良好的衛星訊號,量測結果仍有一個數量級的差距。但是與過往只有五公尺到十公尺的精確度,已經可以作到公尺等級的精確度。如果硬體設計上可以解決 duty cycling 的侷限,便有機會透過手機做出精度到公分級的低成本 RTK 測量儀器,適合一些不介意耗電速度的使用場景。

L5, Safety of Life 訊號

另外一個值得一提的是,由於近幾年 GPS、Galiao、QZSS 等支援 L5/E5 10Mhz 訊號的衛星總數到達了三十顆,相較於 L1 1Mhz 的定位訊號,10Mhz 在都市叢林中造成的多重路徑傳播影響較小。GPS L5 訊號是一個刻意保留的頻道,更不容易受到干擾。結合 L1,L2 雙頻定位可以作到更高的定位精度。

IIlustration: Broadcom

 

L5 從 Block IIF satellites 之後的新型衛星開始送訊號,第一台是 2009 上線的USA-203。之前支援 L5 的衛星數量不夠多,其覆蓋率未到大眾可用的商業規模。早些時候只有一些專業的量測工具提供 L5 訊號支援,但是 Broadcom 率先針對智慧型手機推出支援 L5 訊號 BCM47755 晶片,受惠於足夠的衛星訊號,可以大幅改善智慧手機的定位精度。預期其他的競爭對手的產品應該可以逐步趕上,希望在 2018 年看到更多支援此功能的的手機硬體產品。

政府開放資料的挑戰

2016/09/09 台灣政府內政部發布開放全臺及澎湖地區的20公尺網格DTM,這真是政府開放地理資訊之一大里程碑!

在此筆資料發布之前,台灣政府已經陸陸續續發布了相當多以 WMSKML、GeoJSON 等格式的地圖資料集,特別是七月底發布的經建版地形圖數值檔 (比例尺為2萬5千分之1、5萬分之1及10萬分之1),一舉將原本每幅圖檔收費150元(非加值型)、600元(加值型)改成以政府資料開放授權條款散布!

內政部部國土測繪中心的「經建版地形圖數值資料檔(比例尺為二萬五千分之一、五萬分之一及十萬分之一)」前經「105年行政院資料開放諮詢小組第2次會議」列為甲類資料,並經本部105年7月26日台內地字第1051306149號令修正發布「國土測繪成果資料收費標準」第2條附表附件2,開放資料供免費下載使用,授權條款採用行政院「政府資料開放授權條款-第1版」

這批 2016/07/28 釋出的圖檔包括二萬五千分之一經建版地形圖計262幅、五萬分之一經建版地形圖計80幅及十萬分之一經建版地形圖計7幅,共計349幅。

不含等高線圖層,但是包含水系、道路、行政界線、鐵道、高壓線、建築區等圖層,及圖例、中文註記等向量圖層。

雖然這批經建版地形圖數值檔的部份圖檔年代久遠,座標系統部份因為製圖時偏好,選用了 TWD67(119分帶)TWD67(121分帶)TWD97(121分帶) 等等不同的座標系統,格式也是需要私有軟體 AutoCAD 2013/2014 的 AC1027,實務上仍需要整理之後才有使用價值。

但是這項開放政策代表政府機關終於願意改變預設立場,將此圖資所能帶來的歲入財源,換取開放資料活化應用的經濟價值。而這種預設立場是過往法條的規範所造成的,例如規費法第7條與第8條明定:「為特定對象之權益辦理下列事項,應徵收行政規費;交付特定對象或提供其使用下列項目,應徵收使用規費。」,在「特定對象」的授權前提下,依據規費法所定義的各種政府資料管理辦法就會變成

  • 限制利用目的;
  • 禁止將資料或加值/衍生產品自由移轉、散布;
  • 要求利用人之委託人管制資料的利用。

以至於降低各種資料再度利用的可能性。如果今天這筆資料沒有以政府資料開放授權條款發布,我也無法依照測繪圖資供應收費基準透過購買加值型授權後,將資料初步處理後開放給 OSM 社群再產製程其他格式的地圖。

社群交流

這不是一夜之間發生的事情,前前後後有來自不同的非營利組織的許多專家、學者與政府官員開會交流。

以開放街圖社群為例子,社群代表早在 2014 年中開始與行政院接觸,前前後後開了不少次會議

這些會議的主題基本圍繞著

目的是逐一針對釋出資料的可行性等等討論。

最初的會議相當令人挫折,很多時候會由於雙方對於期待「開放」的程度不同,討論難以有交集,加上具體需要調適的繁複法規,以及對於變動政策後難以預期的民意反應等等,往往讓進度難以快速推進,所幸一直有積極的政務官支持推進。

即使有最高層級的官員支持,從願意採納意見到實際釋出資料,還要好長一段時間。

這些工作包含要調適法規,包含釋出的資料必須仍在個人資料保護法、著作權法之下,以及行政罰法、規費法等等都會影響各機關的支持度。法規不甚完備,加上政府機關的缺乏積極動機,維持資料正確與即時性需要透入預算與資源,但是政府機關往往並非資料利用的受益者,公開資料只會帶來違法的風險。

數值地形模型資料的應用

其實內政部100公尺網格數值地形模型資料是最早開放的資料,但是 100 公尺的精度缺乏實用價值,且早在 2011 年就有學者建議國安單位應該逐步開放更高精度的 DTM 資料。許多使用開放圖資的用戶使用 NASA Shuttle Radar Topography Mission (SRTM) 的 DEM 資料,它的理論精度是 1 arc/second (30公尺),但由於它是插點處理,仍有缺陷。但是那是一般研究單位或是 OpenStreetMap 可以拿到的免費資料,也因此許多拿 OpenStreetMap 為底圖做戶外運動的使用者會拿 SRTM 作為等高線地形圖的參考資料。

作為一個以登山為主要應用的開放街圖使用者,在 2014/07/27 在行政院開的第一次會議上,我就提議將數值地形模型優先開放。

第一次會議後足足過了兩年,終於等到這筆20公尺網格DTM數值地形模型

這批資料的 HDR 資料顯示是 2006 年測製,由財團法人成大研究發展基金會使用 5M 網格資料疏化重製 20M 網格資料。座標系統則是 TWD97 / TM2 zone 121DTM數值地形模型 不只是可用於產製等高線 (Contour lines) 與彩色暈渲圖 (Hillshade map),尚可用於工程模擬、地形查詢、立體地形圖、坡度計算等等。

以目前台灣的登山社群而言,可以立刻用於取代原本的 SRTM 地圖資料。
例如地圖產生器在 v4.02 即已經使用此數據作為地形高度查詢的參考資料
也可以用於產生 Mapsforge 離線向量圖資,目前台灣社群已經長期供應的有 Jing 的 ASTER.OSM綠野遊蹤離線圖資來源。這些圖資將可以用於手機的 OsmAndLocus MapOruxMaps綠野遊蹤等軟體。

也可以產製成 Garmin 裝置所需的地圖格式,台灣有 ASTER.OSM台灣登山地圖 – Taiwan TOPO 等。

由於這批資料的座標系統是 二度分帶(TWD97,中央經線121度),為了使用方便,我將原始的 GeoTIFF / ASCII gridded XYZ raster datasets 一律轉成 WGS84,以方便再度後製使用。

目前轉好的格式有

  • GeoTIFF 與 LZW 壓縮版 GeoTIFF。可用於產生彩色暈渲圖、地形查詢等。
  • Shapefile – 分成 10公尺、20公尺、50公尺、250公尺間距的等高線向量圖。可用於 QGIS 或其他 GIS 軟體。
  • Postgres/PostGIS SQL – 分成 10公尺、20公尺、50公尺、250公尺間距的 MULTILINESTRING 等高線圖層。可以用 PostgreSQL/PostGIS 接上 QGIS 顯示,或是透過 mapnik/CartoCSS 等工具輸出成圖磚 (slippy map).
  • SRTM HGT – 由於 HGT 格式需求此為 downsampling 成 3601×3601 版本。可以放進手機,部份軟體支援直接畫出等高線或地形圖。由於是縮減取樣處理,不建議作為再產製原料。
  • OSM PBF – 10 公尺間距的等高線資料。可以用於合併 OSM 圖資,生成手機用的離線 Mapsforge 圖資或是 Garmin 版本地圖。

相關格式的圖資以及轉換的命令語法,請於此下載 http://goo.gl/Wku11y

如果有圖資應用上的問題,歡迎到 OpenStreetMap台灣 社群討論。如果有手機使用此版圖資的問題,可以洽詢手機GPS登山推廣計畫及其經驗交流聯誼會,或是別讓自己迷失(手機GPS應用)以及正在籌備成立的福爾摩沙山難預防協會

此資料集以 CC0 授權。使用者利用此資料,受有損害或損失,或致第三人受有損害或損失,而遭求償者,不負任何賠償或補償之責。

圖資預覽

目前已知的幾個問題,一是外海部份由於有負數高程,導致海岸線出現方框或人工痕跡。另外無論是分幅雲林縣資料或不分幅全台資料,在 (120.682650, 23.608483) 與 (120.682283, 23.604167) 兩處有高達六千公尺的奇怪外星建築。

外星建築

與 SRTM 比對發現可用性高很多。以往 SRTM 圖資精度不足,使許多河谷的等高線錯誤,容易將河谷誤判為稜線。

SRTM 版本

內政部版本

以下與 2001 的經建三版兩萬五千分之一紙圖比對。可能很多山友會在登百岳的時候購買上河文化的地圖,或是在爬中級山的時候,使用地圖產生器印出經建三版的紙本地圖,然後用膠帶防水貼好帶上山。

經建三版套疊等高線

透過內政部這次釋出的資料搭配 OSM 的山岳路線,山友將可以搭配使用產生出具備高即時性,使用便利的手機或專業手持衛星定位裝置離線地圖。

感謝這一路以來,努力謀求共識的各位政府機關、專家朋友們!

工人智慧之協同合作

無國界醫生組織 (Doctors Without Borders/Médecins Sans Frontières) 在七月份發表了一個新的手機軟體 MapSwipe,這個軟體的功能是讓志工可以透過手機協助預分析衛星圖 (pre-screen satellite imagery),協助醫療團隊判斷哪些偏遠地區的群聚部落,以便派人前往提供疫苗接種等醫療服務。

MapSwipe 是一個開放原始碼軟體使用方式非常簡單,透過後端系統將衛星圖切好豆腐,透過手機介面讓志工選出地圖上可能的道路或建築物。這個計畫可以與 OpenStreetMap 的 Humanitarian TeamMissing Maps Project 合作,在大型災害發生時,透過最新的衛星圖資料,讓志工可以快速的區分出尚存的建築物。然後再發布於 HOT Task Manager 上,由後續的圖客 (Mapper) 接手進行細部的地圖繪製工作。可以爭取時效由全球的志工,為地面隊伍提供更新過得地圖情報。

機械學習用於社經發展判讀

然而,這是使用工人智慧進行衛星圖,利用大量的人力來做地圖判讀。

大型的科技公司如 Facebook ,為了達成他們的連結全世界遠景,也必須找出人口分布,這是傳統的人口統計無法提供的資訊。於是他們與衛星影像公司 Digital Global 合作,利用 machine learning 的影像處理技術找出人造建築,來推算人口分布度。Facebook Connectivity Lab 的技術文章說明了技術的概念

至於非營利組織與學術界,只好利用開放的資料。類似的工作有 Arnhold Institute for Global Health 的 Senior Data Analyst, Patrick Doupe 使用 LANDSAT7 的衛星圖,計算預測特定區域社經狀態。初期的程式碼已經發布在 github 上。

Standford 大學的研究學者 Marshall BurkeStefano Ermon 的團隊,則是更的藉由分析白天和夜間的衛星影像來建立模型,因為電力的基礎設施可以反應出當地的經濟水平,然後再以地面的基礎設施作為 filters,將模型轉移成預測貧困地區 (中文)。透過這套技術,可以以衛星影像取代過往利用大量人力普查的成本,長期的觀察偏遠區域的發展現況。然而,衛星資料仍有其侷限性,研究團隊也在考慮如何蒐集行動電話的 metadata作為原始數據. 論文中以 R 3.2.4 與 Python 2.7. 實做的程式碼與配置教學已經放到 github 上。

深度學習的特徵搜尋

這些技術使用的都是 convolutional neural network,有別傳統的 Geographic Object-Based Image Analysis 技術,有更多應用場景。

像是快速搜索衛星圖中的特定影像特徵。

Terrapattern 提供了一個普羅大眾都可以輕易使用的反向搜尋引擎。透過 OSM 標籤分類衛星圖像,以 Deep Convolutional Neural Network 訓練,但他的目的不是自動區分出建築物的類型。而是讓使用者可以快速透過 Cover Tree 的依據影像特徵快速搜尋地景,最好用來搜尋哪些不容易出現在地圖上的設施,像是廢氣泳池、冷氣機組等等。同樣的技術也可以用在受災區域的空照圖,可以很快的辨識出毀損的建築與橋樑道路等。程式碼是以 MIT 授權發布,網站上的資料也很有參考價值

人工智慧實踐自動與偵錯

本文開始提到的以工人智慧方式檢測衛星影像,以便加速急難救助時候的繪圖速度,其實也可以透過人工智慧的技術加速處理。Stanford 的同學 Lars Roemheld 在他的學習課程 CS231n: Convolutional Neural Networks for Visual Recognition 的報告,詳細的描述了他嘗試的方法,以及碰到的問題

Development SeedAnand Thakker 在 2016 的 SoTM US 的演講 Skynet 則成功的展示如何利用 Machine Learning 找出道路。他提到、雖然 OSM 圖資中已經有許多的道路可以作為訓練資料,但是由於道路的寬度並未正確得標注,所以仍需要一些調整後才能正確的訓練出模型。細節請參考投影片測試資料程式碼

光是標注出路線只完成了一小份工作,人工智慧與衛星影像並無法提供路名。

Facebook 在某些區域,已經開始使用 OSM 當作地圖基本資料,作為打卡的基礎地圖,Sadi Khan, Yin Wang, Luke Walsh 等幾位 Facebook 工程師在 SoTM US 上分享了他們針對埃及所進行的一些實驗,預測可以增加 20%-30% 道路網絡,並開始測試從 POI 取出路名,然後讓使用者回報選擇正確的路名,進一步提高資訊的完整度。雖然已經匯入部份部份路網,但是由於程序問題且品質不佳,已經回退修改

其他的社群實驗還有 GeometalabSamuel Kurath 做的 Crosswalk-Detection,用於偵測馬路上的斑馬線,據說目前已經有了 98% 的準確率

在開放街圖社群已經有社群將技術用於改善圖資品質。專門做專業登山地圖軟體 Gaia GPSTrailBehind, Inc,利用 TensorFlow 開發自動偵錯工具 DeepOSM,利用衛星影像識別道路,並與現有的圖資對照是否正確。這是最早將類神經網路技術利用於 OSM 的計畫之一。

未來發展

深度學習/機械學習的進入門檻越來越低,主要的線上雲端服務供應商包含 Amazon, Microsoft Azure, Google 都陸續推出適合類神經網路計算使用的 GPU 伺服器。可以很方便的取得計算資源,進行一些實驗開發。
除此之外,DigitalGlobe, CosmiQ Works 與 Amazon 合作推出SpaceNet 資料集。這些圖資來自 DigitalGlobe 的 WorldView-2 商業衛星,50 cm 的高畫質圖資,包含八個波段多光譜影像 (8-band multispectral data)。以及 220,594 組建築物圖像可以作為人工智慧訓練資料。

從 Development Seed 的分享,社群已經開始將技術用在完善 Dar es Salaam 路網或是與 World Bank 合作。但是這些新技術在 OSM 社群中引起一些政治衝突,OSM 社群一直都是由志工徒步踏查從無到有畫出來的,這些志工很珍惜透過聚會所建立的社群,只須要宅在家裡的鍵盤畫圖活動一直都不太受到歡迎

而現在到達了一個 機械化編輯 (Robot mapping) vs 人力編輯 (Craft mapping) 的十字路口

作為一個實用主義者,我個人相信機械化編輯可以大幅降低成本的維持高品質的圖資資料,而人力編輯可以相輔相成的專注於提供本地知識。

OpenStreetMap 從 2012/09/12 後的資料,是使用 ODbL (Open Database License)[1] 散布。ODbL 條款[2][3][4]有寬鬆的授權模式 (permissive license)、 Copyleft 授權等特性,這些特性影響到利用 OSM 為基礎開發的其他作品是否也該以 ODbL 授權方式 (條款 4.4 節) 再次散布,或是只要聲明資料來自使用 ODbL 的 OSM 資料庫 (條款 4.3 節)。

而作品的區分方式分為

  • Produced Work 產製作品
  • Derived Work 衍生作品

例如把 OSM 輸出成圖檔或是紙本地圖,這即是「產製作品」。如果是直接改造原始資料庫,則為「衍生作品」。

給行動裝置用的向量圖資 (Garmin img 或 MapsForge[9]) 是一個模糊的地帶,因為實際上地圖並非以圖檔格式 (raster graphic) 散布,而是將原始 OSM 資料庫轉換成另外一種資料庫型態散布。但是由於這些向量圖檔的主要用途仍是離線顯示地圖,在 OSM 社群的討論[8][9]上,是被認可為「產製作品」[6]。除非新增額外的資訊到資料庫或增修其向量圖檔,或將其作為資料庫使用,則會被視為「衍生作品」[11]。

所以如果你散布的是未經過增修的向量圖資則請按照 4.3 節規定,在授權處說明

並請於輸出註明 “© OpenStreetMap contributors” [12]

[1] Open Database License – OpenStreetMap Wiki – https://wiki.openstreetmap.org/wiki/Open_Database_License
[2] Open Database License (ODbL) v1.0 | Open Data Commons – http://opendatacommons.org/licenses/odbl/1-0/
[3] 20121120-ODbL-1.0非官方正體中文翻譯 | Lu-six Person’s Notes – http://lucien.cc/?p=2358
[4] 20121120-DbCL-1.0非官方正體中文翻譯 | Lu-six Person’s Notes – http://lucien.cc/?p=2360
[5] 20121018-從開源軟體到開放資料-論 Open Database License v1.0 | Lu-six Person’s Notes – http://lucien.cc/?p=2348
[6] Licence/Community Guidelines/Produced Work – Guideline – OpenStreetMap Foundation Wiki – http://wiki.osmfoundation.org/wiki/Licence/Community_Guidelines/Produced_Work_-_Guideline
[7] Open Data License/Produced Work – Guideline – OpenStreetMap Wiki – https://wiki.openstreetmap.org/wiki/Open_Data_License/Produced_Work_-_Guideline
[8] [OSM-legal-talk] Garmin maps and license – https://lists.openstreetmap.org/pipermail/legal-talk/2016-February/008382.html
[9] Selling routable OSM maps for garmin – OSM Help – http://help.openstreetmap.org/questions/48251/selling-routable-osm-maps-for-garmin
[10] 台灣 MapsForge 圖資檔案 – osmtw.hackpad.com – https://osmtw.hackpad.com/%E5%8F%B0%E7%81%A3-MapsForge-%E5%9C%96%E8%B3%87%E6%AA%94%E6%A1%88-tcm2Owggcqb
[11] Legal FAQ – OpenStreetMap Wiki – https://wiki.openstreetmap.org/wiki/Legal_FAQ#3c._If_I_make_something_with_OSM_data.2C_do_I_now_have_to_apply_your_license_to_my_whole_work.3F
[12] Legal FAQ – OpenStreetMap Wiki – https://wiki.openstreetmap.org/wiki/Legal_FAQ#3._Using

去年在 OpenStreetMap Taiwan Webinar 的題目「自己的圖磚自己刻」之後,注意到其實從頭到尾創建一個圖磚伺服器,要安裝、設定的軟體相當多,要設定資料庫、匯入海岸線 Shp、安裝 mapnik 相關的軟體、寫好 style sheet 等。為了簡化所有的程序,方便入門 2015 年已經先以 Docker 建立初版圖磚伺服器,這個伺服器將資料庫建立、匯入、軟體安裝等等合而為一,入門開發者只要三十分鐘內就可以配置好一個伺服器開始嘗試開發。就算不是 Linux 的開發者,也可以透過 Docker Machine 或其他虛擬機方式設定 docker 開發環境。

不過由於當初把所有的軟體擺在同一個映象檔 (docker image) 中,導致不容易抽出再做延伸的利用開發。 從「自己的圖磚自己刻」講者吳政璋 (小璋丸)的筆記中,可以初步理解要完成一個圖磚 (slippy map) 伺服器所需要的軟體堆疊 (Software stack) 大概可分為編輯後的原始資料、後台資料庫、繪圖輸出 (rendering) 以及前端視覺。

 

最近嘗試進一步的改善 Docker images 的實踐方式,將每個軟體元件拆分成獨立的 image,以便互相疊加應用。由於 Open Source geospatial software 的發展迅速,迭代頻繁,在過渡時期,偶爾會發現新版的函式庫的 Python binding 已經故障,反而是 node.js 的延伸開發迅速,反之新的技術實踐無法搭配舊伺服器使用。透過 Docker 技術可以很快的「解決」這些軟體版本的相依問題,直接搭配正確的 Linux Distro 版本使用,方便一個軟體服務同時使用新舊科技。希望可以陸續把 Linux 上 常用 Open Source geospatial software 也整理出來,方便進階開發者使用。

目前已經完成 PostGIS, osm2pgsql, mapnik, mod_tile, tilestache, gdal 以及幾個常見的 featured tiles. Docker images 都已經發布到 Docker Hub 上的 OpenStreetMap Taiwan 群組中,原始碼發布於 Github Group中,歡迎試用。

以下分享一些入門的實踐典範,可以供一般 GIS 從業人員或軟體開發者簡便利用開放街圖資料。

首先,對於一般 GIS 資料處理人員,利用 OSM 最初步的工作就是建立一個 Database Replication. 設定 OSM 資料庫並與最新的資料保持同步,並接取到桌面的軟體上進行處理。首先,你需要 PostgreSQl/PostGIS 與 osm2pgsql,其中 osm2pgsql 已經設計成每個十分鐘會抓取一次最新的資料,並匯入資料庫中。

操作的指令可以參考 osmtw/osm2pgsql 的說明,基本上只需要兩個指令

  1. 以環境參數設定資料庫名稱、帳號、密碼後,啟動 osmtw/postgis instance
  2. 以 link 參數連結 postgis/osm2pgsql,並以環境帶入想要匯入匯入的區域與更新頻率。

osmtw/osm2pgsql 會負責下載最新的 OSM PBF 檔案,並匯入 osmtw/postgis 資料庫。大概只要十分鐘內,就可以建立好包含最新台灣圖的資料庫,並可以透過 qgis 連上進行查詢,並做後續處理。

qgis connect to docker

QGIS

有了資料庫之後,接下來是做出 Slippy Map Server,線上即時產生圖磚。從這裡開始,就可以像是疊積木一樣,依照需求配合不同的軟體來搭建。
常見的組合有有 Mapnik/Cascadenik/Carto/Millstone 搭配圖磚處理服器如 mod_tile/Tilestache 輸出成 Raster Image,或是直接以 Mapnik API 輸出成圖。網站伺服器則可以用 nginx/apache2.

透過 Docker Compose 可以很容易的組成所需的軟體結構。依照 OpenStreetMap 標準的圖磚為例子,包含傳統使用 Mapnik xml style, Cascadenik XML 的 OpenStreetMap 標準圖磚,以及使用 Carto CSS style 相當簡潔漂亮的 Mapbox OSM-Bright。前端界面則配合 LeafletJS 做出使用者界面,方便切換幾個不同的底圖。網站服務器則用 mod_tile+apache2. 相關的程式碼與操作請見 github

本地街圖

osm-bright

另外一個例子則是小璋丸手刻自創的鬼島地圖,他使用 Cascadenik 語法產生樣式,並以 tilestache 產圖以及 uwsgi 作為網站伺服器。

鬼島圖磚-1

鬼島圖磚-2

 

這幾個樣式大多是僅透過 SQL 取出 PostGIS 中的圖徵,然後配上 stylesheet 產出。有時候會需要做一些資料的前製處理後,才能搭配輸出到圖中。例如等高線圖與地勢圖,就可以從 DEM 資料中計算得出,這個時候可以用 gdal 等工具將原始資料轉成 TIF 或是 SQL,再套疊到地圖上,這樣就可以做出地勢顏色與等高線圖等效果。

2016-06-10 14-20-37 的螢幕擷圖 2016-06-10 14-20-48 的螢幕擷圖

20160609-本地街圖

 

最後,光是做出 Slippy Map / Raster Image 其實是很空洞的平面地圖,許多地圖的使用者往往希望可以取得特定 POI 的詳細資料。這個時候就需要搭配向量圖磚來豐富地圖上的資訊量,雖然像是 Mapzen, Mapbox 商業公司已經提供現成的接口可用,但是常常比不上自己下 SQL 語法來的有彈性。

我們可以透過 OpenStreetMap 圖資與 TileStache 來輸出支援 GeoJSONTopoJSONMapBox Vector (MVT) 等格式。請參考飲水地圖 vector tile server 的實做方式,從資料庫中搜尋 amenity=’drinking_water’ 的 POI ,並以 LeaftletJS 將資料繪製到地圖上。由於他使用本地資料庫,所以會比飲水地圖官方網站透過 overpass 撈取資料快速許多。

Leaflet GeoJSON Example