2010年2月15日 星期一

QGIS的附加元件-Google Layers Plugin for QGIS

Open GIS = Open Standrads + Open Source + Open Access

QGIS是開放源碼(Open Source )的GIS軟體、也支援許多OGC的開放標準(Open Source ),如WMS、WFS、WCS、SLD…等。在開發的資源的存取(Open Access)亦支援Open Street Map。現在透過附加元件的形式也可以支援豐富的Google Map圖資。

QGIS支援WMS的圖資來源,之前有想過將影像金字塔的圖層(Tile Service)透過程式轉成WMS,再由QGIS讀取即可。不過上網查之後,果然有人作過此事,且被Google擋IP。若自己的像金字塔的圖層服務可以這麼處理,但是Google的圖資的使用有其規範,當我們要使用Google地圖的資源,就要遵守Google的使用條約,網址http://code.google.com/intl/zh-TW/apis/maps/。若繞過使用條款規範的方式存取Google圖資不僅犯規,且會被Google拒絕取存服務(網路上有人說,也有認識的人經歷過)。基於法律上及道得上,所以我一直不想寫類似的程式。

最近一個朋友又提到這件事,於是又告訴他上面那段話。不過還是把這件事放在心理中思考。過了幾天突然想新的方法,即是使用Google Static Maps API。這樣就可以放心合法存取Google Map的豐富圖資,而不違法。但是有以下的限制:

要使用「靜態地圖 API」,必須先註冊免費的地圖 API 金鑰。「地圖 API」金鑰可讓您使用「靜態地圖 API」以及標準的「地圖 API」。

「Google 靜態地圖 API」的使用有其限制,每位檢視者每天只能要求 1000 張不同的圖片。因為此限制的配額是每個「檢視者」而不是每個「金鑰」,因此大部分的開發人員應該都不需要擔心超過其配額。此外請注意,如果要求的是相同的圖片,一般而言就只會算成一張。

如果使用者超出上述的限制,則會顯示下列圖片,以指出超出配額:

之所以要有這個限制,是為了避免有人濫用「靜態地圖 API」和 (或) 用在其他目的。此限制以後如有變更,恕不另行通知。如果您已超過 24 小時內的使用上限,或是濫用服務,則會暫時無法使用「靜態地圖 API」。如果您持續超過上限,則會遭到封鎖,無法使用「靜態地圖 API」。

資料來源:http://code.google.com/intl/zh-TW/apis/maps/documentation/staticmaps/

簡單位的說,就是每人每天可以用1000張的不重複圖,且每張圖大小的上限為640X640。在此限制內就是Google API合理的使用範圍,超過Google會停止服務。

  • 程式=>Google圖資
    不合使用規定、甚至不合法
  • 程式=>Google API=>Google圖資
    符合使用規定,遵守限制,但可以存取豐富圖資

Picture1

想通了且合法了,於是動手研究QGIS python附加元件如何撰寫,深入研究後發現並沒有想像中的難,只是我不會python的語言,請教一些高手後終於比較清楚python寫法及架構。

目前初的成果,如下圖及影片。

2010-02-15_162458

沒錯,之後安裝好就只要按一個按鈕,就下載Google Map的圖資。
之前寫的地理空間數位化流程-使用Open GIS方法,在Google Map操作的部分可以刪掉,直接載入參考的圖層後(WGS84),或者移至感興趣的經緯度座標後,再按Google Layers的按鈕即可以載入Google Map的圖資。

目前支援的Google圖資,如下

  • roadmap:標準道路圖圖片,與一般在「Google 地圖」網站中顯示的一樣。
  • mobile:行動裝置道路圖圖片,圖徵和文字字型較大,方便高解析度、小螢幕的行動裝置顯示。
  • satellite:衛星圖片。
  • terrain:實際立體模型地圖圖片,可顯示地形和植被。
  • hybrid:衛星和道路圖的混合圖片,在衛星圖片上顯示一層透明的主要街道和位置名稱。

換個突度想,這也是QGIS + Google雲端運算圖資的應用之一。而且是跨平台的應用程式存取Google的用雲端運算出來的圖資,跟一般使用網頁的方式不同。

這樣的GIS工具相信對QGIS的推廣及運用會有更大的助力,甚至想使用GIS作為研究的工具應該更容易使用,且加快研究的速度。

不過Google Layers附加元件安裝過程還是較麻煩,若能在過年剩下的時間簡化安裝程序,再將程式及安裝程序一並公開至本網站。