2013年10月25日 星期五

10/24 QGIS課程七

這次上課我們是利用MAPINFO這個軟體施作屬性資料查詢
一開始先將圖打開,然後打開屬性表

選擇Find selection可以找尋你在表格所選的地點


現在開始尋找我們所需的資訊,我們要找出人口密度>500的國家,選擇SQL select,然後從旁邊的選項選出我們需要的條件,表格上需要country、pop1994、(pop1994/AREA)density,從WORLD這個表格找資料,條件是 pop1994/AREA>500,這樣就可以跑出我們需要的資料表格


可以在counrty或pop1994後面加上"中文名稱",表格上的名稱即可顯示中文,EX:"人口"、"人口密度"。


再來是製作世界人口密度,要先將人口總合跟面積總和算出來,才能算出世界人口密度,並不能一起算,如下圖三。


圖三
再來是製作各大洲的人口總合及面積總和,Group選擇洲,Order是排序,我是以洲的名字排序
從上圖可以發現有一個洲的名稱是空白的,沒人口,面積也很小,沒辦法利用Find selection找出位置,所以我們利用SQL select,找出原來是巴拿馬運河



再來我們製作大台北地區的道路中心樁,看看有經過哪些鄉鎮,找出我們需要的資料。我們先將EXCEL打開,裡面有許多點位,然後選擇create point,選擇台灣的座標系統TWD67,之後點選new map window,會跑出表格中點位的中心樁,按下S(SNAP)鍵可以鎖點,選擇polyline將各個點用線連起來,記得要先打開編輯模式








之後將中心樁關掉留下線段,選擇Save Cosmetic Objects,將線段另存,然後將大台北地圖匯入,剛匯入會發現無法完整顯示大台北地圖,因為他只有顯示線段經過的鄉鎮,必須要自己打開



將線段的可編輯打開,選擇線段再選擇Set Target,然後將大台北地區全部選起來,選擇Split,將線段依照鄉鎮市切開









































之後要建立表格,選擇Table Structure,新增鄉鎮及線段長度,新增完發現線段不見,可以打開屬性表,將線段加回來。再選擇Table Structure,將ID欄位刪除,線段會再次不見,依照之前的步驟把線段加回來




再來是計算長度,選擇Update Column,將設定設好,選擇Assist選擇ObjectLen,將單位mi改為m(公尺)





再來就要製作表格,跟前面一樣是利用SQL Select,製作出有線段經過的鄉鎮及線段長度,即完成這次的課程


接著我們自己回家用QGIS來做練習。QGIS不支援直接對TAB檔進行修改,所以必須將TAB檔轉成可編輯的SHP檔。首先選擇加入向量圖層將TAB檔打開,之後對左邊圖層下的項目WORLD按右鍵點選"另存為",格式選ESRI Shape檔,選擇另存位置,按OK就完成了。



接著尋找人口密度>500的國家,將剛剛另存的SHP檔打開,切換到編輯狀態,然後對左邊WORLD圖層按右鍵選擇開啟屬性工作表,然後按一下新增屬性欄位,新增面積AREA,新增完執行OpenFieldCalculator,選取更新已存在的欄位,選擇AREA,在運算符號項目選擇面積,我們將面積換成平方公里,所以除以1000000,完成之後依照上面的步驟新增密度Density,選擇POP_1994/AREA,完成後將內容儲存,然後選取進階搜尋,選擇Density>500,即可找到。








接下來我們查詢歐洲人口密度大於150。先打開屬性工作表,選擇RemoveSelectionButton取消上個density>500的指令,之後按一下進階搜尋,選擇Density>150,按一下AND,選擇Continent(洲別)選擇=,再按一下查詢欄位取樣值,選擇Europe;最後為:Density>150 AND Continent = Europe。



再來我們利用QGIS製作道路中心樁,將其連成一條線,計算距離及所經過的鄉鎮市區
首先我們將有紀錄座標的Excel打開,在第一列新增一欄位,輸入欄位名稱,因為將檔案匯入QGIS時,程式會自動將第一列作為屬性表欄位名稱。將Excel匯入QGIS時必須先轉為純文字檔.csv。

再來將剛剛存的CSV檔打開,點選上面的圖層,選擇新增CSV純文字檔圖層,也可以點選左下角的藍色圖案開啟,按下瀏覽,打開檔案,中心樁即出現。


將中心樁連起來,此步驟要先載入附加工具Points2One,按一下附加元件,點選Python附加元件,選擇Points2One,按下安裝附加元件後關閉,再按下附加元件,選擇附加元件管理,勾選Points2One。點選Points2One,選擇中心樁圖層,選擇輸出為Lines(線段),設定輸出位置及檔名按下OK後關閉,中心樁即連起來。





接著將大台北地區圖層加入,按下加入向量圖層,打開大台北地區的圖,之後點選Vector,選擇地理空間運算工具,選擇交集。輸入向量圖層欄位選擇線段圖層(針對哪一格圖層做交集),交集圖層欄位選擇大台北地區的圖層(依據哪個圖層做範圍),設定輸出位置及名稱,即完成


接下來再屬性表格新增一長度(Length)欄位,在上個步驟中製作的圖層上按右鍵,點選開啟屬性工作表,點選切換編輯狀態,再點選新增欄位,新增Length欄位,之後點選OpenFieldCalculator,勾選更新已存在的欄位,選擇Length,按下長度,即完成分段長度計算。




將線段經過的個別鄉鎮以不同顏色分出來,一樣對剛剛的圖層按下右鍵,選擇屬性,之後的步驟就跟網路上的影片不太一樣。我選擇分類設定,行選擇TNAME,按下分類,再按下OK即完成以不同顏色分類。



做完QGIS和MAPINFO,我覺得QGIS比較簡單明瞭,MAPINFO感覺比較複雜,之後如果偶有類似的練習,我會選擇用QGIS來操作。



我想知道QGIS在災害上的應用,就找到了這篇關於火災的文章,裡面是葡萄牙因火災,造成嚴重的損失,所以政府要對於防火擬定對策,他們製作了2張圖,危害及風險高低的主題圖。一開始我在想危害跟風險製作出來的主題圖應該是很類似的,但是這兩張圖卻完全不一樣,我認為解釋上可能是哪些地方有容易發生火災的風險和哪些地方如果發生火災會造成危害,再看這2張圖,第1張圖為危害,主要分布在外圍。第2張圖為風險,主要分布在內部都市地區,我認為都市地區比較容易發生火災。
參考文獻 http://qgis.org/de/site/about/case_studies/portugal_pinhel.html

沒有留言:

張貼留言