2010年1月18日 星期一

About WMS (Web Map Service)

前幾年一直覺得WMS一種普通的服務,說穿了就是用組合URL的參數去要一張地圖,而WMS伺服器就會用這些參數畫出一張圖給使用者。後來有機會用在Google Map上套疊使用wms圖層,效果很差。因為JavaScript會組合每張256X256 Tile的參數,不過Server往往來不及畫出所有的tiles,導致,地圖上出現一塊塊[x]的圖示。系統功能上都沒有問題,不過每次套疊WMS圖層,都會有一半的圖出不來,這樣的Web GIS算是不及格的,所以也沒有公開這樣的作品。從此就開始有點覺得WMS是個無用的服務,至少對我開發Web GIS是這樣的情形。

2008年年底時發現有人在玩WMS tile Caching的東西,小試了一下發現不得了,完全解決了WMS不夠即時繪圖的問題。於是2009就使用這樣的概念來實作系統及發表2篇文章。使用這樣的概念以解決了Web GIS常見的一些問題,有趣興的人可以找找我發表的文章。另外WMS Cache這樣好用的東西,也漸漸變成標準之一,詳細可以參考http://wiki.osgeo.org/wiki/WMS_Tile_Caching

最近有機會再回頭看一下OGC WMS,發現其實還蠻多功能的,只是沒有機會嘗試。就使用DM Solutions Group提供的WMS來說明吧。

首先http://www2.dmsolutions.ca/cgi-bin/mswms_gmap是提供服務的網址

加上SERVICE=WMS的參數,告訴Server我要你提供WMS的服務

REQUEST=GetCapabilities,則是尋問Server你有提供那些功能及服務

把網址及參數組合起來則是詢問Server你有提供WMS的那些功能及圖層服務。如下

http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?SERVICE=WMS&REQUEST=GetCapabilities

在QGIS中的設定如下圖,僅需給QGIS WMS URL網址,QGIS會自動將使用OGC WMS標準的方式詢問此Server有那些服務及功能,如同上面所解釋的。

WMS設定及密碼管控

如果此WMS服務需要輸入帳號及密碼,也可以在QGIS中設定。這意味著使用WMS的方發也可以使用帳號/密碼來管控所要提供的功能及圖層。有此需求的人可以在Server端加上帳號/密碼的認證功能,以提供更多元、個人化的服務。

2010-01-19_090657

樹狀結構的WMS圖層服務

在QGIS讀取DM Solutions Group的WMS服務後,畫面如下圖。我們可以發現此WMS提供影像輸出的功能有支援GIF、JPEG、PNG、TIFF;而座標系統有四個可用。最重要的圖層服務則可以使用樹狀結構來呈現,DM Solutions Group的例子就使用3層樹狀的架構來呈現。

2010-01-19_090641

如何作到以上樹狀的架構呢?直接看DM Solutions Group WMS提供及圖層服務的XML檔案,截圖如下。
紅色的框中是圖層名種及Layer Tags的位置,比較特別的是第三層為已套用樣式的圖層。若要設計分群的圖層,則可以使用OGC WMS標準內的Dimension Tag,來定義一個或多個圖層。若要整合多個WMS Server 則在Layer Tags中,可以使用cascaded屬性整合不同來源的WMS服務。

 

2010-01-19_095849

仔細看一下WMS XML 就可以知道其設計的方法,當然要懂一些HTML或XML語法會比較容易些。橘色的部分則是WMS Server所有供的座標轉換功能。若想更深入研究,可以參考http://www.opengeospatial.org/standards/wms 此網站。

2010年1月11日 星期一

QGIS 1.4正式版推出了

QGIS 1.4版本名稱是Enceladus,是希臘神話的人物名稱也是土星的衛星之一。由QGIS1.4開啟畫面來看應是指土星的衛星。

2010-01-12_094909

若沒有使用Grass,可以直接下載Windows 版的安裝,網址如 http://linfiniti.com/downloads/QGIS-1.4.0-1-No-GrassSetup.exe。 安裝方法與之前一樣,可以參考http://gis-tech.blogspot.com/2009/07/qgis-windows.html,或直接看以下影片。

也可以至此下載網頁,下載各種不同作業系統的 QGIS 1.4版本及包含Grass的版本。

2010-01-12_092635

地理空間數位化流程-使用Open GIS方法

這是我整理投稿的文章,採用CC授權,網址在http://content.teldap.tw/index/?p=1041

順便轉貼在此。

前言

如何將真實世界的物件數位化呢?聽起來很難,但是這僅GIS(Geographic Information System)領域中一個基本的作業程序。簡而言之,此過程是將真實世界中的物件使用二維的點、線及面(多邊形)轉化為電腦可以理解的數位化描述。最簡單的方式是使用GIS軟體可以簡單地畫出空間中的點、線及面的空間資料,之後再將空間物件加上其屬性資料。所以GIS常簡稱的數化,其實包涵兩種意義,即是空間描述的數位化與屬性資料的數位化。這樣的程序一般是使用Desktop GIS軟體進行空間資料的數位化,且需指定一個座標系統(作者選用常見的WGS84座標系統為例)及一個參考圖層。有了參考圖層為底圖就很容易以它為基礎畫出所要的空間幾何形狀。

一般來說較少人會有豐富的參考圖資(地圖資料),所以會從網路公開的地圖服務網站上取得參考資料。公開的地圖資訊,例如Google地圖或者Open Street Map等,其中Open Street Map是開放共享的地圖資訊服務,由網友自行編輯及分享,目前台灣的資料也愈來愈多。在新版的QGIS(Quantum GIS)中內建下載、編輯及上傳Open Street Map的圖層功能。若想在ArcGIS/ArcMap上使用Google地圖的圖資,可以使用中央研究院計算中心GIS組提供Google maps for ArcMap Extension (for 9.2及9.3) ,如圖1。

圖1. 中央研究院計算中心GIS組提供Google maps for ArcMap Extension (for 9.2及9.3)http://www.ascc.sinica.edu.tw/gis/ISTIS/tools.html

此擴充模組可以在ESRI ArcMap中載入Google Map的圖資(地圖、衛星圖、地形圖)作為空間數化的參考底圖,可以在基本底圖上面參考道路、河流等的資訊,數化出向量的空間資訊,如圖2。

2009-11-16_141617

圖2.在ArcMap使用Google maps for ArcMap Extension載入Google衛星影像,圖片來源:http://gis.ascc.net/ISTIS/program/AddMaps/AddMaps92.pdf

不過很可惜,這個工具僅供中央研究院使用,再加上取得正版的ESRI ArcMap費用驚人,此方法對一般大眾有很大的進入門檻,所以本文就不介紹,改介紹另一種使用Open GIS的空間數化方式。此方法的特色是軟體免費且圖資豐富,讓一般對GIS有興趣的個人及單位都可以按此方法自行數化空間資料。

準備及安裝軟體

請準備以下三項目

◆Google帳號
若無Google帳號,請至https://www.google.com/accounts/申請。

◆ Google 地球-免費版
請至http://earth.google.com/intl/zh-TW/download-earth.html下載安裝。

◆QGIS 1.3版以上-免費且開放源碼
請至 http://www.qgis.org/en/download/current-software.html 下載安裝,安裝教學請參考http://gis-tech.blogspot.com/2009/07/qgis-windows.html
QGIS 1.3版下載網址:http://download.osgeo.org/qgis/win32/QGIS-1.3.0-3-No-GrassSetup.exe

Quantum GIS(簡稱QGIS)是一個免費且開放原始碼的Desktop GIS軟體,正體中文版翻譯版本是由作者與人社中心地理資訊科學研究專題中心同仁完成。除了正體中文也支援多國語言的使用介面,目前有31國的語言。QGIS是Open Source Geospatial Foundation(OSGeo基金會)的一項專案計畫,使用GNU授權,任何人都可以免費下載使用。QGIS也是一個跨平台的GIS軟體,它支援Linux、Unix、Mac OSX與Windows作業系統。在GIS軟體常用的資料格式,QGIS同時支援ESRI 的Shape檔案格式與MapInfo的檔案。QGIS具有一般GIS軟體的基本功能及相關附加功能模組,非常適合大學、高中、社區及社團教學與研究使用。由於開放原始碼及開放架構的緣故,使用者可以自行開發所需的功能,且可以與大家分享。目前附加元件,已有非常多的GIS模組可供免費下載使用。更多Quantum GIS中文資訊可以參考作者Blog(http://gis-tech.blogspot.com)或地理資訊科學研究專題中心QGIS Blog(http://gis.rchss.sinica.edu.tw/qgis)。在本文的角色主要為空間屬性資料編輯及轉檔的工具。

空間數位化程序

之後要進行四主要程序,如圖3。

1. Google地圖 空間數位化
[我的地圖]中進行空間向量數化。

2. 下載正確的KML檔案
使用Google 地球取得真正的KML圖資。

3. QGIS 開啟KML,另存成ESRI Shape
KML轉成 Unicode的 ESRI Shape檔案。

4. QGIS編輯屬性資料
擴充欄位及編輯屬性資料。

圖3. 空間數化的程序

實際操作

使用Google地圖的好處之一是它有豐富的圖資,透過關鍵字搜尋所需的地標後進行數化。另外亦可透過[地圖小工作]套疊不同的圖層,例如台灣堡圖(1898~1904)等不同時代的地圖。透過以上兩種方式即可在Google地圖中進行快速查詢與套疊的數化動作。以下就數化台大醫院及二二八和平紀念公園的面形狀作為實例說明。

1. Google地圖 空間數位化

至Google Map網站(http://maps.google.com.tw)使用Google帳號登入,後按[我的地圖],進入我的地圖清單。

2009-11-16_143634

圖4.Google地圖

在Google地圖搜尋台大醫院後,地圖會出現相關的搜尋結果,放大及移動地圖至該處,之後再按[建立新地圖],進入編輯地圖頁面。透過反覆搜尋參考點及數化建立地標動作,即可建立豐富的圖資,以供後續研究使用。

2009-11-16_144127

圖5. 建立新地圖

在此步驟建議一次僅數化一種類型(點、線及面)的空間類型。除了基本的點、線及面的空間數位化之外,還可以匯入已存在的KML繼續編輯與找其他同伴一起協同編輯。這兩個功能對群體的創作很有大的功用。例如:社區資源的調查、社群義工調查特定主題、同儕建立生活環境地圖等。結合各個不同領域的專長,透過眾人的力量,讓資訊及資料空間化,以作為更深化的運用基礎。各種類型數化的詳細步驟可以直接參考Google地圖說明文件,網址在http://maps.google.com/support/bin/answer.py?answer=68480

注意1:思考清楚要不要公開此編輯的資料,在[隱私與分享設定]中選擇公開或不公開,選擇公開則日後一般網友可以搜尋到此內容。

注意2:KML檔案在QGIS開啟僅會有兩個欄位屬性,即是標題與描述。不過之後就可以使用QGIS來擴充與編輯欄位。

2009-11-16_145809

圖6. 多邊形數化

2.下載正確的KML檔案

編輯到一個段落按[儲存]之後,再按一下在Google地圖右上方附近的[在Google地球中檢視],由Google地球開啟,如圖7。若確定數化完成,最後要按[完成]。

2009-11-16_151243

圖7. 下載KML檔案之位置

使用Google 地球開啟KML後,會發現資料是放在此圖示之目錄中。該圖示即是代表連線至遠端主機中取得資料。分析KML檔案內容可以發現此檔是存放圖資之網址,Google地球透過該網址連線至Google的雲端主機中取得正式的資料。其原理類似Windows作業系統捷徑之功能。所以需將在雲端主機中數化的圖徵,移至另一個新建的資料夾後,再將該資料夾另存成KML亦可,過程如圖8 、圖9及圖10。

2009-11-16_152909

圖8. 建立新資料夾後,再數化內容移至新資料夾

2009-11-16_152947

圖9. 將資料夾另存為KML

2009-11-16_153017

圖10. 記得[存檔類型]選擇為KML

3. QGIS 開啟KML,另存成ESRI Shape

記得使用QGIS1.3以上的版本。QGIS 1.3版可以按此下載。QGIS的安裝請參考筆者錄製的影片,網址:http://www.youtube.com/watch?v=rmzKDVdbFZY。您也可以按下面的影片直接播放

影片1. Windows版QGIS安裝過程

執行QGIS後,按上方工作列[加入向量圖層]的按鈕後,來源種類選擇[檔案],編碼選[UTF-8]。之後在[資料集]中按[瀏覽]後,類型選取[OGR]kml(*.kml,*.KML),最後選擇之前在Google地球中另存的KML檔案,如圖11。

2009-11-16_151700

圖11. QGIS開啟KML檔案

在QGIS中開啟KML的畫面,如圖11。KML圖資除了有空間形狀的顯示之外,另外屬性資料也有兩個欄位,即是顯示步驟一-圖六中的標題(Name)與說明(Description)。此時亦可以按[加入WMS圖層],加入NASA的衛星圖層,確認空間資料的正確性。當然WMS圖層也可以是數化的參考圖層,但是公開的WMS圖資的解析度都不夠,所以僅能作簡單的比對參考。

2009-11-16_153529

圖12. QGIS開啟KML檔案

由於目前一般支援KML的軟體,尚未支援KML自訂欄位的功能,所以要先用QGIS將KML檔案[儲存為Shape檔],如圖13。之後就可以使用QGIS來擴充欄位。對於如何擴充KML欄位有興趣的人,可以參考此連結http://code.google.com/intl/zh-TW/apis/kml/documentation/extendeddata.html

2009-11-16_153813

圖13. QGIS將KML檔案另儲為Shape檔案

在將KML另存成Shape檔案時,檔案名稱、座標系統及編碼可自行決定。不過建議將座標系統選擇WGS 84、屬性資料使用UTF-8。因為KML是使用UTF-8編碼可以支援多國語言,所以在編碼的選擇也是選用UTF-8,若使用Big5編碼可能會有屬性資料中文缺字的風險。

4.QGIS編輯屬性資料

在QGIS編輯模式中可以編輯點、線及面之空間位置描述,也可以編輯屬性資料。本文在前面介紹Google地圖中進行空間數化的編輯方式,現在介紹屬性資料的編輯方式。一般來說空間資料都會有許多屬性資料,例如每筆行政區多邊形的資料,通常會有行政區名稱、隸屬行政區、面積、人口等屬性資料。所以僅有兩個欄位是不夠用的,透過QGIS即可以任意擴充屬性資料的欄位以供後續分析使用。

KML轉換成Shape檔案後,在QGIS中按[加入向量圖層]的按鈕,如圖14。

2009-11-16_154023

圖14. QGIS將Shape檔案開啟

在加入Shape圖層後,即可以開始編輯該檔案以擴充欄位。首先按右鍵點選Shape圖層後,再按[切換編輯狀態],進入QGIS編輯模式。

2009-11-16_154130

圖15. QGIS將KML檔案另儲為Shape檔案

進入QGIS編輯狀態後,再右鍵點取Shape圖層後按[屬性],如圖16。

2009-11-16_154157

圖16.按屬性進入圖層屬性對話方塊

開啟[屬性]即對話方塊後,至[欄位屬性設計]中新增、編輯欄位,如圖17。

2009-11-16_154310

圖17. 欄位屬性設計

在[欄位屬性設計]中有新增欄位按鈕、刪除欄位按鈕及切換編輯模式按鈕,可以用它們來新增/刪除屬性。ESRI Shape檔案格式是使用dBase的DBF檔案作為屬性資料儲存之用。而DBF檔案支援的資料類型為整數、實數及字串,如圖。其中實數的欄位寬度表示該實數之正數位數加小數點加小數位數之合,精確度即是小數點加小數位數,小數點佔1個位置。例如:1234.123此數之實數寬度為7,實數精確度為1+3。知道此原則後,設計欄位時就可按此方法正確地指定精確度的數值。

圖18. 新增屬性欄位

注意:擴充完所需欄位後,再按一次[切換編輯狀態]後,QGIS會知道您要結束編輯狀態,而問您要不要將剛剛編輯變更的動作儲存回檔案?這時當然是要選擇[儲存],如圖19。

圖19. QGIS詢問是否要儲存變更

擴充欄位完成後,若要填入新的數化資料,可以再按一次[切換編輯狀態],進入QGIS編輯狀後,再按[開啟屬性工作表],以填入新的欄位值,如圖19。

2009-11-16_154638

圖20. 編輯DBF屬性工作表

最後再按[切換編輯狀態]結束編輯,同樣地,QGIS會出現圖19的警告,記得要按[儲存]才會將之前的動作都儲存,這樣就完成了空間數化的動作。完成後的ESRI Shape圖資可以再使用GIS軟體的其他空間功能作進一步的空間分析使用。

結論

透過本文介紹的方式,可以在無成本下結合您的專業知識建立各種豐富的圖資。本文雖是用Google地圖作為空間數化的工具,同樣的也可以直接使用Google地球作為數化的工具,再用QGIS加強擴充屬性資料。

透過本文的方法,使用Google地圖上的豐富資源建立自己的空間圖資不需要龐大的軟體費用及複雜的程序。更特別的是Google地圖是一個公開的平台,歡迎大家分享各種資料,使得這個平台的內容可以繼續不斷的成長。例如,圖20即是套疊西元1904年台灣堡圖影像圖層後進行數化。

圖21.套疊台灣堡圖圖層後進行數化

類似此台灣堡圖地圖的影像圖層在Google小工具中還有許多資源可以使用,整理如表一。

表1.中央研究院 人文社會科學研究中心 地理資訊科學研究專題中心 在Google地圖上提供的地圖小工具

類別

名稱與超連結

1.台灣歷史圖層

台灣新舊地圖比對-台灣堡圖(1898~1904)

日治五萬分之一蕃地地形圖1907~1916

日治二萬五千分一地形圖1921~1928

日治五萬分一地形圖1924~1944

2.中國歷史圖層

商朝時期歷史地圖

西周時期歷史地圖

春秋時期歷史地圖

戰國時期歷史地圖

3.當代地圖

台灣地形起伏分層設色圖

4.地圖繪製工具

Web2Map-網頁繪製地圖

更多地圖小工具的資訊可以參考筆者寫的說明網站http://sites.google.com/site/yaogis/mapplet。更多Web GIS及QGIS的說明資料可以參考筆者的blog:http://gis-tech.blogspot.com

在符合Google地圖及Google地圖使用規範的條件下,可以免費取用Google豐富的圖資及服務,這樣某種程度上符合開放取用(Open Access,亦有翻成開放近用)的精神。當然最符合開放取用的精神是Open Street Map的圖資服務,不過不在此文介紹的範圍,有興趣的人可以參考網址http://openstreetmap.tw/。此方法使用的軟體是Quantum GIS,QGIS是一套Open Source的Desktop GIS軟體,免費且有中文介面很容易學習且合法取得。在Google地圖與QGIS軟體之間的溝通是使用OGC(Open Geospatial Consortium,http://www.opengeospatial.org)開放標準的KML(Keyhole Markup Language,http://www.opengeospatial.org/standards/kml)圖資格式。本文的方法使用Open GIS的三種面向–Open Standards、Open Source及Open Access,建立地理空間圖資,不僅符合開放標準且不須任何軟體費用,且有豐富的圖資可以參考使用。如此使用Open GIS的方法大大降低學習空間數化的門檻,使得每個人都可以有機會將自己感興趣的主題,數化後放在GIS軟體上作進一步的分析研究,甚至可以再將研究後成果分享至公開的地圖網站上。