2021年8月16日 星期一

QGIS技術-影像計算(Raster calculator),將WMTS圖磚轉換為向量資料

 「WMTS圖層服務上面有很多資料,可是我沒辦法取用他,有什麼方法可以把上面的資料擷取下來呢?」


    臺灣的WMTS服務算是非常不錯,像是臺灣通用電子地圖與國土利用調查成果圖,兩個WMTS地圖皆是由國土測繪中心進行發佈。臺灣通用電子地圖可說是臺灣版的地圖百科全書,上面記載了許多POI,像是門牌資料、公共建設點位、街廓......等,而國土利用調查成果圖對於都計來說很重要,如果要進行分析則需要花費大量金錢向國土測繪中心購買,當範圍很大時金額便會很可觀,而自己進行數化又會花費太多時間......,因此便有了以下幾種方法。


    目前QGIS影像向量化的方式有兩種,一種為使用外掛魔術棒工具(magic wand),這個方法適合數化單一圖徵(只有一種顏色),另一種為影像計算(Raster calculator),此方法適合於數化大面積、大量圖徵時使用。


    本文介紹影像計算(Raster calculator),如果你只是想要進行小範圍、單一圖徵的數化,請參考QIGS外掛-魔術棒工具(magic wand)這篇文章。


    此篇文章受QGIS小學堂啟發,很感謝小學堂上的大大分享作法,由於QGIS版本有進行更替,因此撰寫更新後的版本與作法。QGIS小學堂原始的貼文教學:https://www.facebook.com/groups/600385406707053/permalink/1848782928533955/


    本篇貼文所使用的系統環境為QGIS3.16,QGIS功能介面會隨著版本不同而有所差異,閱讀前請注意版本差異。操作範例為國土利用調查-5建築。


第一部分:將WMTS圖磚以GeoTIFF的格式輸出

  1. 點及WMTS圖層,點選匯出->save as...。
  2. 輸出模式:選擇原始資料。
  3. 檔案名稱:檔案名稱請勿含有中文,檔案存放路徑也請勿有中文。建議將檔案名稱取名為『test』,方便後面操作。
  4. 格式:選擇GeoTIFF。
  5. 取消勾選『建立VRT』。
  6. 範圍設定:這個步驟很重要,如果沒有進行調整,系統會預設為整的地圖(輸出範圍為整個臺灣,一定會當機)
    1. 使用『Calaulate from Layer』:範圍會選擇操考系統中的其他圖層(網格圖層、向量圖層),我通常會選擇使用此方法,並搭配向量檔的行政區界圖層使用。
    2. 使用『Map Canvas Extent』:範圍為參考當前螢幕畫面的邊界與比例尺。
  7. 設定水平與垂直解析度:建議兩者調整為0.5,0.5的效果我認為與臺灣通用電子地圖的原始解析度差異不大。如果電腦與網路情況不允許請自行調整,建議不要超過10。
步驟參考圖片

第二部分:開啟功能影像計算(Raster calculator)

  1. 開啟地理運算工具箱,輸入『Raster calculator』。
  2. 波段色彩的含意:
    1. 載入gertiff後,會發現系統給了四種波段色彩,分別為Red、Green、Blue、Alpha。前三者很好理解,可以認知為RGB三種色彩的數值,第四種不用去理會。
  3. 表示式:
    1. 輸入公式:"test@1" * 1000000 + "test@2" * 1000 + "test@3"。
    2. 公式解釋:將一個圖層三個RGB數值變成單一數值儲存,同時必須確保三個數值不會互相影響,這樣才可以在後面的步驟進行還原。RGB數值的範圍為0~255,因此必須創造至少9位數的數值
  4. Reference layer(s):選擇圖層『test』。
  5. cell size:選擇1.0。
  6. 選擇檔案的輸出範圍與輸出數值。
  7. 檔案輸出前後比較:
    輸出後畫面



    輸出前畫面


第三部分:影像向量化

  1. 地理運算工具列->影像向量化(影像轉向量)。


  2. 不修改參數,直接執行。
  3. 執行完成後畫面

第四部分:還原色彩數值

  1. 『開啟屬性表格』->『開啟欄位計算』
  2. 還原RGB數值:
    1. 分別建立三個欄位:R、G、B
    2. 數值公式:
      1. : "DN"  / 1000000 
      2. ( "DN" -"R" * 1000000 ) / 1000
      3. ( "DN" -"R" * 1000000 ) - ( "G" * 1000 )
    3. 輸入公式圖片
      輸入各顏色數值
    4. 完成圖
      還原數值後圖片



第五部分:成果討論-還原後的誤差

  1. 乍看之下這個方法似乎很好、萬無一失,但若細心點的話,會發現還原的數值有誤。請看以下圖片解釋。

  2. 原始圖徵的RGB為255、194、61

    還原後的RGB為255、194、64
  3. 數值比較:原始圖徵的RGB為(255、194、61),還原後的圖徵RGB為(255、194、64)。
  4. 出錯點:比對操作流程後,會發現是在『影像計算(Raster calculator)』這個步驟時出錯了,系統會把61操作成64。
  5. 可能的成因:使用浮點數計算時,會有機率導致誤差產生,例如:0.1 + 0.2不會等於0.3。這點可以在各種程式語言上得到驗證。這裡我不確定是不是Raster calculator的演算法以浮點數資料進行處理,導致這個誤差產生。
  6. 運用限制:幸好這個誤差不會讓同樣顏色的圖徵各自產生出不同的數值,雖然無法進行百分之百的還原,但還是能夠進行圖徵區別。因此使用這個方法,我會建議你把還原的數值參考用就好,絕對不可以把還原的數值當成是原本的RGB數值。

第六部分:心得與其餘補充資料

  1. 方法使用建議:不要在有文字的WMTS圖層上使用
  2. 使用這種方法時建議搭配色表進行參考,例如:國土利用調查成果資訊專區-土地利用分級分類系統表
  3. 國土利用調查成果資訊專區網址:https://www2.nlsc.gov.tw/LUI/Home/Content.aspx?MUID=3670dcfe-dfea-446d-8afd-ee1ca7abc054

2 則留言:

  1. 謝謝你詳細的方法!目前看到最易上手的文章QQ

    回覆刪除
    回覆
    1. 很高興我的文章有等到你~

      如果在操作上有遇到困難歡迎來信或留言跟我說

      刪除