解決 QGIS 因編碼無法執行 Extract by attribute 與各種運算工具箱的問題

 

之前朋友遇到奇怪的 QGIS 問題,他想用 Extract by attribute 工具將特定「屬性」的向量圖徵萃取出成新圖層,卻發現執行後沒有產出相對應的檔案,因此跑來向我求助。

 

聽到這裡,我心裡大概有個底了。

 

 

一定又是編碼搞的鬼


其實這種問題,多半是編碼所造成的結果。畢竟 QGIS 是外國人開發的軟體,用英文和數字紀錄欄位資料和運算時通常不會出什麼差錯,但亞洲使用者 (台、日、韓國等) 在編碼沒有正確轉換的情況下,就很常出現這種狀況。

 

即便 QGIS 支援 UTF-8 編碼,讓各種語言都能正常顯示,但在實際執行 Processing Toolbox 時,編碼還是常造成其他語系的圖層運算錯誤。

 

而這位朋友所使用的圖層是 Big5 編碼,QGIS 的運算工具箱當然看不懂。解決方法也很簡單,主要有三種方式。

 

 

用 GDAL 工具轉換圖層編碼

於終端機輸入以下指令,轉換目標圖層的編碼。

 export SHAPE_ENCODING="Big5"
 ogr2ogr out.shp inp.shp -lco ENCODING=UTF-8

 

 

改變圖層編碼

圖層按右鍵 > Layer Properties > Source > Data source encoding 選擇 UTF-8 編碼

 

或使用處理工具箱 Processing Toolbox > Set layer encoding 輸入 UTF-8 改變圖層編碼

 

 

匯出成 gpkg 圖層

Shapefiles 算是相當古早的檔案格式了,雖然它是目前最通用的空間地理交換格式,但對於其他國家的編碼字元仍不太友善。因此如果你用前面兩種方式轉換後,發現資料出現亂碼的現象,可以將圖層轉換為較現代的 gpkg 來解決這個問題。

 

目標圖層按右鍵 > Export > Save Features as... 選擇存檔位置,將編碼 (Encoding) 改為 UTF-8 匯出即可。

 

之後就能用各種函數和運算工具來「玩弄」你的圖層了。

 

 

d(´∀`)b

 

 

 

延伸閱讀

更多 QGIS

更多 GDAL 工具箱小技巧 

 

 

留言

這個網誌中的熱門文章

寶鐘瑪琳中之人前世照片、年齡分析