QGIS - 空間數位化的好用工具
Tags: RIA, gis, 地圖, 地理, 搜尋 發表: 2010-03-22, 點閱: 25,317 , 加入收藏櫃 , 列印 , 轉寄
Quantum GIS(簡稱QGIS)是一個開放且免費的地理資訊系統,裡面提供了許多GIS(Geographic information system)常用的功能。同時QGIS也是一個開放的平台,可以在QGIS上呈現網路上的各種圖資(地圖資料如:WMS、WFS…等)及各種功能。所以QGIS中許多GIS功能的來源主要是其它開放源碼的專案或會寫程式的網友貢獻的。這次就把QGIS當作GIS工具,介紹三種空間資料處理最常使用功能–向量地圖資料格式轉檔、資性資料編碼轉換及空間座標系統轉換。QGIS可以在此網址http://qgis.org/en/download/current-software.html免費下載。QGIS在Windows7中安裝可以參考此影片,網址是http://www.youtube.com/watch?v=rmzKDVdbFZY。若需測試的圖資檔案可以在交通部運輸研究所-研究專題-下載專區取得,網址是http://www.iot.gov.tw/ct.asp?xItem=154896&ctNode=1091。以下示範操作的影片都有高解析度(1280 x 720)版本,請用滑鼠點擊影片後,會自動至Youtube網站中,即可以高品質解析度觀看此影片。
通常向量圖資檔案包含主要二個部分,即是空間資料與屬性資料。空間資料即是使用特定座標系統來描述幾何空間的狀況。例如以WGS 84座標系統描述台北火車站這個地點,即是(25.047916, 121.515127);以TWD97 二度分帶座標系統描述此地點則是(2771183.7691, 301977.1856)。屬性資料則可能紀錄此點的相關資料,如名稱、電話、地址…等文字、數字類型的資料。
以常見的向量圖資ESRI Shapefile檔案格式為例,通常它由三至四個檔案組成。檔名用*代替,解釋如表1。
表1. ESRI Shapefile檔案格式說明
檔名 |
英文全名 |
用途 |
*.shp |
Shapefile shape format |
存放空間資料,點、線、面…等,幾何圖形資料。一定要有此檔案。 |
*.dbf |
Shapefile attribute format |
dBase表格檔案,儲存資性資料。通常臺灣是使用Big5編碼,因為在臺灣ESRI ArcMap預設僅支援Big5編碼。一定要有此檔案。http://en.wikipedia.org/wiki/DBase |
*.shx |
Shapefile shape index format |
空間索引檔,一定要有此檔案。 |
*.prj |
Shapefile projection format |
定義*.shp之中的空間資料是使用何種座標系統,若沒此檔案,可在GIS軟體中指定座標系統即可。 |
*.sbn |
Shapefile spatial index format |
二進位的空間索引快取檔,僅有ESRI使用,可有可無。 |
由ESRI Shapefile格式可以看得出,屬性資料是使用dBase的表格檔案。由於此格式之限制,所以無表格關連功能。要處理不同表格之間的關連,通常還得借由GIS軟體額外的功能來達成。不過若使用空間資料庫就無此限制。
另外一常見的向量圖資是KML(Keyhole Markup Language)。1962年Keyhole原本是一個美國間諜衛星的代號,用來監控蘇聯、中國地區。後來一家衛星資料提供的公司,將公司名稱取名為Keyhole,且提供Keyhole 3D地球軟體,讓一般人都可以瀏覽衛星圖資,其儲存空間資料的標籤語言就是Keyhole Markup Language。2004年,Google將Keyhole公司買下,也將軟體改名成Google地球。為了讓KML能更廣泛的使用,不僅常常擴充其功能且提交給OGC(Open Geospatial Consortium),希望能成為地理界通用的標準之一。於2008年4月14日,KML 2.2正式成為OGC的開放標準之一。
KML為XML為基礎的文字資料,為了節省儲存及加快資料傳輸會將KML壓縮,壓縮後的資料為KMZ。若您有一個KMZ檔案,您可以將副檔名改成zip後,再使用解壓縮軟體解開,即可以看到裡面的KML檔案。KMZ中也可能會有影像的資料,如JPG或PNG圖檔。KML檔案裡會用XML方式描述空間資料及屬性資料,且通常是使用UTF-8編碼,支援多國言語及較少缺字問題。標籤<coordinates>中是空間線資料的描述;標籤<name>及標籤<Description>則是屬性資料的欄位,如圖1。
圖1. KML檔案內容
由此例也可以發現KML屬性資料欄位通常僅有name與description兩欄。通常是不夠使用的, KML也有擴充欄位的方法,詳細說明在http://code.google.com/intl/zh-TW/apis/kml/documentation/extendeddata.html。不過除了Google地球之外,少見其它軟體有支援此方法。比較常見的作法還是將KML檔案轉換成ESRI Shape檔案後,再擴充欄位,這樣的處理流程可以http://content.teldap.tw/index/?p=1041。
有了對於圖資的基本認識,接下來就可以介紹遇到以下問題怎麼辦。
● 有人拿到一個圖資檔案給我,不知道要用什麼軟體開啟?
● 圖資檔案的座標系統都不一樣,要怎麼辦?
● 要怎麼同時輸出多國語言的地圖,例如外籍配偶生活地圖(中文/泰文/印尼文/越南文)?
● 地名缺字如何處理?
以上問題都可以透過QGIS解決,以下就分三部分介紹。
QGIS在加入向量圖層可以直接開啟ERSI Shapefiles(*.shp)、Mapinfo File(*.mif *.tab)、Spatial Data Transfer Standard(*catd.ddf)、S-57 Base file(*.000)、Microstation DGN(*.dgn)VRT-Virtual Datasource(*.vrt)、Atlas BNA(*.bna)、Comma Separated Value(*.csv)、Geography Markup Language(*.gml)、GPX(*.gpx)、KML(*.kml)、GeoJson(*.geojson)、GMT(*.gmt)、SQLite(*.sqlite)、ESRI Personal GeoDatabase(*.mdb)、X-Plane/Flighgear(*apt.dat *nav.dat *fix.dat *awy.dat)及Arc/Info ASCII Coverage(*.e00)。原則上,使用QGIS開啟以上檔案後,在圖層中按右鍵,直接就可以[儲存為Shape檔],如圖2與圖s。以這樣的方式就可以簡單轉換檔案格式。
圖2. 加入向量圖層及選擇圖層的編碼
圖3. 儲存為Shape檔之功能
若以上的方式還不能解決您的問題,可以使用[附加元件]中的[OGR檔案轉換工具],它支援互轉的更多的向量圖層,如AVCBin、AVCE00、BNA、CSV、DGN、ESRI Shapefile、GML、GMT、GPX、GRASS、GeoJOSN、Geoconcept、KML、MapInfo File、Memory、MySQL、ODBC、OGDI、PGeo、PostgreSQL、REC、S57、SDTS、SQLite、TIGER、UK.NTF、VRT及XPlane。以上檔案格式可以互相轉換。其中空間資料庫的部分,如MySQL、ODBC、PostgreSQL、SQLite…等支援非常完整。
以常見的ESRI Shape檔案轉換為例,圖文步驟解說如下。
a.如下圖按[執行OGR的檔案轉換工具]。
圖4. OGR檔案轉換工具
b.接下來選擇來源/目標的格式及來源/目標檔存放的位置。
注意:轉換的來源及目標的檔名及路徑不能含有中文。若來源或目標是資料庫則是需要輸入更多的認證資料。
圖5. 轉換操作畫面
c.按[確定]即完成檔案格式轉換。
學會這幾個簡單的步聚就會近三十種資料互轉的方式。花個時間練習一下吧。不過還是要注意一下,轉換資料的編碼、空間及屬性資料的存放方式。暸解這些基本資訊,轉換也更容易簡單。若對資料編碼概念不清楚則可以參考本文之後的說明。以下是向量圖資轉換的影片。
http://www.youtube.com/watch?v=C4cFBP28fKA
影片1. QGIS向量圖資轉換操作
中央研究院計算中心的GIS研究支援工具裡有一些檔案轉換的工具,也可以免費下載使用,例如shp2kml…等。下載網址在:http://gis.ascc.net/ISTIS/tools.html。
QGIS支援EPSG(European Petroleum Survey Group)定義的三千多種的座標系統之間的相互轉換,若所需的座標定義沒有在EPSG中,可以自行輸入參數後,就可以與EPSG的座標系統互換。QGIS使用的參數是Proj4的格式,因為QGIS也是使用proj4的開放源碼程式庫。Proj4是開放源碼的座標轉換工具,給它正確的座標參數它就可以作各種座標的轉換。以下表提供臺灣二度分帶TWD67、TWD97及Google 900913的proj4參數,如表2。其中TWD67-TM2 的參數各家廠商的作法及定義可能不同,可能會有些許的誤差。
表2.臺灣及常用座標系統參數
座標系統名稱 |
Proj4參數 |
TWD97 -TM2 |
+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs |
TWD67 - TM2 |
+proj=tmerc +ellps=GRS67 +towgs84=-752,-358,-179,-.0000011698,.0000018398,.0000009822,.00002329 +lon_0=121 +x_0=250000 +k=0.9999 +to +proj=tmerc +datum=WGS84 +lon_0=121 +x_0=250000 +k=0.9999 |
Google 900913 |
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs |
如何在QGIS中增加自行定義的座標系統可以參考以下的圖文示符說明或影片。
新增自行座標系統圖文說明
a.[設定]=>[自訂座標參考系統(CRS)…]
圖6. QGIS 新增自定座標系統
b.新增各種座標系統的Proj4參數
為了初學者方便使用起見,作者在正體中文的介面中加入了臺灣常用的Proj4參數。您可以依照QGIS軟體上的Proj4參數輸入手動輸入或者直接複製表2的名稱及參數貼上後使用。使用方式很簡單,磁片按鈕代表儲存自訂的Proj4參數;星形按鈕代表新增一個座標系統定義;箭頭按鈕代表移動不同筆座標資料。
圖7. QGIS 新增自定座標系統
以上圖片說明若還是不明白,可以觀賞一下影片2中的操作方法。
http://www.youtube.com/watch?v=cgmxINIV9a0
影片2. QGIS 新增座標系統
設定好後,若要在整個專案中使用,請至[設定] =>[專案屬性]中,將[座標參考系統(CRS)]選擇[使用者定義的座標]項下的座標系統名稱,如圖。若不同圖層的座標系統不一樣,請在[座標參考系統(CRS)]中[開啟即時CRS轉換],QGIS就會自動將各種不同的座標系統圖層作即時換算套疊。
圖8. QGIS 專案屬性
圖9. 選擇座標參考系統(CRS)
在開啟沒有指定座標系統的ESRI Shape檔案時,請記得馬上指定該圖層的座標系統。在轉換不同座標系統時,也請先確定來源的圖層是何種座標系統。指定圖層座標系統的的方式如圖10 與圖11。
圖10. 按圖層的[屬性(P)]
圖11. [一般]的設定中可以指定座標系統
以上介紹了新增臺灣常用的座標系統及定義專案及特定圖層座標系統的方法。接下來就可以說明如何轉換圖層座標系統。再次提醒,若來源圖層的座標系統未指定是無法轉換的,若該圖有指定座標系統,最好在轉換之前照上述的方式再確認一次。如果以上的注意事項都作到了,就可以將座標系統轉換成不同的座標系統。作者以ESRI Shape檔案原本使用WGS84座標系統,將其轉換成二度分帶的TWD97為例,說明如圖12、圖13及圖14。
使用滑鼠右鍵按圖層名稱會出現針對該圖層的功能選點,這時請按[儲存為Shape檔…],可將原本的來源圖層另存成另外一個ESRI Shape檔案,同時可以指定屬性資料的編碼方式、空間資料的座標系統與檔案名稱,如圖13。
圖12. 滑鼠右鍵按圖層名稱
圖13.圖層另存畫面
在輸入檔案名稱後,可以選擇屬性資料的編碼方式。之後,按下[儲存(S)]後會馬上出現指定新的ESRI Shape檔案座標系統的操作畫面。這時可以選擇EPSG三千多種的座標系統之一或者使用之前定義座標系統。以這個例子是選用自訂的臺灣的TWD97二度分帶座標系統,如圖14。
圖14. 指定圖層的座標系統
同樣地,中央研究院計算中心GIS研究支援工具裡亦有座標轉換的工具,可以支援臺灣常用的座標系統轉換,例WGS84_TM2…等,網址在:http://gis.ascc.net/ISTIS/tools.html。
QGIS支援的編碼有system(作業系統預設,臺灣是Big5)、BIG5、BIG5-HKSCS、EUCJP、EUCKR、GB2312、GBK、GB18030、JIS7、SHIFT-JIS、 TSCII、UTF-8、UTF-16、KOI8-R、KOI8-U、ISO8859-1、ISO8859-2、ISO8859-3、 ISO8859-4、ISO8859-5、ISO8859-6、ISO8859-7、ISO8859-8、ISO8859-8-I、ISO8859-9、 ISO8859-10、ISO8859-13、ISO8859-14、ISO8859-15、IBM 850、IBM 866、CP874、CP1250、CP1251、CP1252、CP1253、CP1254、CP1255、CP1256、CP1257、 CP1258、Apple Roman及TIS-620。以上編碼都可以QGIS在互相轉換。轉換方式與轉換座標系統相似,僅需在圖層另存畫面時選擇不同的編碼方式,說明如下圖:
圖15.開啟屬性編碼為Big5的向量檔案
圖16.另存成ESRI Shape檔案
圖17.圖層另存時請選擇您想要的編碼方式
經過以上的程序之後會顯示圖14之畫面,可以選擇不同的座標系統。若要順便轉換座標系統可以在這時選擇不同的座標系統。
在維基百科中(http://zh.wikipedia.org/zh-tw/Big5)說明Big5編碼是1984年由中華民國財團法人資訊工業策進會為五大中文套裝軟體所設計的中文內碼,大約有13,060字。UTF-8(Unicode)則包含了超過十萬個字元的編碼除了支援較多中文字元外,更支援正體中文、簡體中文、日文…等多國語言文字的支援。所以將ESRI Shape之編碼由Big5轉換成UTF-8可以解決大部份中文缺字問題及支援多國語言的功能。但是如果將UTF-8編碼之圖資轉換Big5編碼,會有遺失屬性資料的風險。此外,KML幾乎都是使用UTF-8編碼,ESRI Shape大多使用Big5編碼,所以兩個檔案格式轉換很容易會有編碼及缺字問題。由於ESRI ArcGIS軟體在臺灣的電腦中預設僅支援系統內定的編碼Big5。所以將UTF-8之RESI Shape檔案在ArcGIS開啟,屬性資料表中的文字會出現亂碼。讓ESRI支援Unicode的解決的方法可以參考此網址:http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&d=21106。此網頁內說明的方式是更改Windows系統的登錄檔,而且每次切換不同的編碼,可能就要改一次Windows系統的登錄檔再重新開啟ArcGIS。因為改Windows系統的登錄檔是屬於高風險的行為,可能會導致Windows無法使用。請將重要資料及作業系統備份,再請一個電腦高手一同按網頁的說明操作。
以下在使用日據時期的臺灣堡圖為例介紹改屬性資料 ,QGIS的程序及圖片說明如下。
●點選UTF-8(Unicode)圖層
●按開啟[屬性工作表]按鈕
● 按[切換編輯狀態]按鈕
●找到要編輯的資料
臺灣堡圖例子是 蕃薯“藔”廳,「藔」字在Big5中無此字。
· 關閉且儲存資料
圖18.編輯屬性資料
圖19.儲存修改資料
若以上圖文說明還不夠清楚,可以參考轉換座標系統及屬性編碼的操作影片,如影片3。
http://www.youtube.com/watch?v=RZ8AAxBNWWs
影片3. QGIS轉換座標系統及屬性資料編碼之操作
在電腦網路尚未普及時,資訊的來源主要是透過出版品,例如書籍、報紙雜誌…等。這些出版品是使用宋朝發明的活字印刷術,所以沒有缺字問題,若有缺少的字,就再造一個字或者用活字的方法來組成。這些罕見字出現在印刷出版品的出現的機會與其常用的字是相同的,只要有需要就可以被製造使用。現今電腦資訊網路發達的年代,常見的字都有數位化的身份,但是罕見字卻成為電腦缺字問題。隨著資訊爆炸這中文缺字往往用其已數位化的字或詞替代,罕見字本身也快速地進入文字生命週期的末期。同樣的例子也發生在地圖的地名上,有罕見字的地名也僅出現在印刷品上,在數位化的資訊平台上卻無看到亦無法搜尋到。而且在數位化的呈現往往用其它相進的字替代,對地名來說不僅會失去原意,甚至會被誤解。在民國九十七年十月二十二日聯合報新聞中報導指出發現IDF經國號戰機失事殘骸在澎湖南“塭”東北淺灘。這新聞有救難及搜尋之急迫性,但是看到這則新聞的地理描述會令人誤會發生地點是在澎湖島上南方某個陸地上的“魚塭”旁的東北淺灘,真照如此安排交通工具可能會而喪失黃金救援的時間。正確位置在1/25000經建版地形圖紙本上有印出來,圖20所示。
圖20. 南(石昷)之正確位置
地名中的字往往含有當地形或地理景觀的含意,地名未能精準且正確地表其用字就會產生很大的誤導。但因為此處的正確地名無法在網路上搜尋,僅能使用不正確的「塭」字找到少數一兩筆的資料。目前此地名有逐漸消失的趨勢。可惜目前常用的地圖網站,如Google地圖、Yahoo地圖…等,都無法顯示、查詢此地名缺字。作者在地名缺字呈現與檢索之研究(臺灣地區地名查詢系統成果發表暨學術研討會,2009年1月15日)此論文中提出可以在Web GIS中呈現及查詢中文缺字之方法,有興趣的人可以參考此文章。
當代的地名還有許多Big5不支援的字,也逐漸消失中。如以下的例子。
●澎湖縣湖西鄉「菓」葉村,「菓」字在Big5中無此字。
●宜蘭縣壯圍鄉「廍」後,「廍」字在Big5中無此字。
●台中縣梧棲鄉一「槺」榔、二「槺」榔、三「槺」榔,「槺」字在Big5中無此字。
除了地名的例子,還有一般常見的Big5缺字例子,如臺灣教育部視「着」為「著」的異體字,故Big5沒有收錄「着」字;另外,像常見的人名用字:「堃」(前中華民國前行政院長游錫堃)、「煊」(中華民國監察院院長、前財政部長王建煊)、「栢」(歌手張栢芝)、「喆」(歌手陶喆)等,也沒有收錄到Big5之中。這些字都有可能出現在屬性資料中。
使用QGIS處理向量圖資可以解決大部分的缺字問題,使用正確、精確的文字描述空間資料,不致於產生地名失義、失字及無法查詢的情形。除此之QGIS外在常見的空間座標轉換及檔案格式轉換上亦是個一強大的工具,使得在整合不同圖資來源成為簡單的事。除了上述的原因再加上QGIS是免費的GIS軟體,使用每個單位及個人都有能力使用QGIS處理空間數位化的作業。讓一般使用者或研究者都可以將現有的網路上的資源或自己的空間資料處理後作為更有創意的加值運用與分享。
十一月 6th, 2010 at 7:23 pm
您好
這篇文章讓我收穫很多
有2個問題想請教您
第一個是kmz轉換為kml後仍無法以qgis處理
以及以qgis進行dgn轉檔失敗等二個問題
想請您提供意見
謝謝
十一月 8th, 2010 at 10:07 am
可能是OGR程式庫未支援新的OGC KML,建議安裝最新版的QGIS1.6後,
a‧直接開啟kml
b.用OGR檔案傳換工具,轉換KML或DGN