使用 gdalwarp 來切割 raster 檔案

在 GIS 圖資處理中,我最喜歡 gdal 引擎了,因為他效率很好,不需要再透過肥肥的 GIS 軟體執行,只要在 shell 裡頭執行即可。其中 gdal 還有幾個子程式,像是重投影及轉換—gdalwarp, 不同格式間的轉換—gdal_translate, DEM 的處理—gdaldem 以及一些 python 的 script,如 gdal_calc.py

案例一、使用向量邊界圖(boundary vector)把特定 raster 中的相同範圍擷取(clip)資料出來,例如我們有一個全世界的平均氣溫圖層,想要把臺灣所在的區域範圍內,擷取出平均氣溫圖層資料,這應該怎麼做呢?

簡單的概念示意圖如下:

可以把臺灣的國界當成上圖的星星,我們所要的就是星星內部的 raster 資料,其餘的資料都移除。我們以 gdalwarp 為例解釋如何使用:

相關參數

  1. -cutline: 我們要使用的向量邊界圖(OGR 支援的格式列表),通常 ESRI Shapefile, Arc/Info E00 等都會有支援

  2. -crop_to_cutline: 這個搭配 -cutline 使用。有時候需要擷取的 raster 原始檔範圍很大,我們希望切出來的範圍是在 -cutline 的向量範圍內,此時就可以搭配這個參數使用

  3. -tr: 輸出的 x y 解析度。比如說輸出的解析度是弧度的話,要記得轉換單位成 10 進位,例如 30 弧度-秒(arc-second)就是 1/60/60*30=0.0083333333

  4. -dstnodata: 沒有資料的填空值,ErDAS Img 格式採用 -9999,你可以填寫一個較極端的數值。這邊要特別注意的是,如果你使用的是氣溫資料,有可能低於 0ºC ,所以切記不可以填 0。

  5. -of: 輸出的檔案格式(output format),預設是 GeoTiff (GTiff)

使用方法

假設我們的向量圖名稱為 taiwan.shp,要擷取的 raster 檔案為 world.tif,輸出的檔案名稱為 taiwan_clip.tif。 gdalwarp 的指令為(如果你是使用 windows作業系統,請再確認一下 gdalwarp.exe 的路徑):

gdalwarp -dstnodata -9999 -q -cutline taiwan.shp \

            -tr 0.00833333333333 0.00833333333333 -crop_to_cutline \

            -of GTiff world.tif taiwan_clip.tif

這樣就可以快速擷取出 raster 了!另外你也可以搭配迴圈批次執行處理,就不需要開啟笨重的 GIS 軟體了(ArcMap/QGIS, etc.)

Comments

comments powered by Disqus