QIGS-GDAL教學1

[QGIS教學系列]QGIS的進階操作技巧-使用GDAL參數

[QGIS教學系列]QGIS的進階操作技巧-使用GDAL參數

對於經常使用GIS軟體的使用者對於GDAL(Geospatial Data Abstraction Library)一詞應該並不陌生。當我們提到地理資訊系統(GIS),首先可能想到地圖、衛星影像和空間分析等。現在大部分的GIS軟體都提供使用者視窗化界面(GUI),讓使用者可以點幾個按鈕產出需要的圖資,然而這些看似簡單的操作背後涉及複雜的數據處理和轉換,其背後多半是依靠地理資料抽象程式庫(GDAL)進行運算。本文將帶您淺談GDAL並採用QGIS進行範例解釋

根據GDAL官方文件,像是ARCGIS、QGIS、Grass、Geoda等用戶量高的GIS軟體都有使用到GDAL庫,其他有名的還有Google Earth等

***本文將簡單介紹GDAL、QGIS中是如何使用GDAL進行數據處理***

1.什麼是GDAL?

GDAL

地理資料抽象程式庫(Geospatial Data Abstraction Library),簡稱GDAL,是一個功能強大的開源程式庫,專門用於處理和操作地理資料。GDAL的誕生可以追溯到1990年代,如今它已經成為地理資訊領域發展的基石之一。

GDAL是一個用於讀取和寫入多種空間數據格式的函式庫,通常需要通過命令列或程式碼來進行操作。目前GDAL支援超過200種空間數據格式,包括常見的向量和網格格式:ESRI Shapefile、GeoTIFF、GeoJSON等,以及一些特殊的格式,例如Google Earth KML、NASA HDF等。GDAL內建許多實用的命令列工具,可以用於空間數據的轉換、投影、重採樣、裁剪、合併等操作,這邊會於第三節進行詳細說明。

更詳細的參考資料如下:

GDAL官方文件:https://gdal.org/index.html

2.QGIS如何調用GDAL功能

下圖為QGIS中Toolbox的所展示的空間處理功能,其中我們可以在下方看到「GDAL」以及「GRASS」等圖示。代表了QGIS將原生於「GRASS」和「GDAL」的處理工具整合進了QGIS當中,上半部分有著QGIS圖示的各項工具,則是QGIS本身基於各種不同函式庫(如gdal-python,numpy等)進行擴展設計後的工具,其中大部分的功能都是基於PyQGIS進行設計的,因此可以直接在Python Console中進行調用。

QGIS如何調用GDAL功能

接下來我們來對比一下QGIS-clip以及GDAL-clip工具的差異吧,QGIS僅內建向量資料裁切功能因此這邊以向量資料的裁剪功能進行說明

下圖分別代表了QGIS內建以及GDAL提供的裁切功能,其中相較於QGIS內建功能,對於GDAL提供的裁切功能,可以在下方看到命令行顯示的視窗,這是因為QGIS是提供使用者利用GUI的方式將原本命令行工具需要的參數進行設定,因此最後還是回歸到直接使用命令行
QGIS內建功能則是直接封裝起來,但執行後可以在Log頁面中發現其同樣是將參數包裝後傳遞給PyQGIS進行調用(或是點選下方Adnvaced->Copy as python command 可以看到運行命令)。

processing.run("native:extractbyextent", {'INPUT':'D:\\變形熱區圖.gpkg|layername=joined_layer','EXTENT':'-20037508.342799999,20037508.342799999,-20037508.342799999,20037508.342799999 [EPSG:3857]','CLIP':False,'OUTPUT':'TEMPORARY_OUTPUT'})
QGIS如何調用GDAL功能
QGIS內建[Extract/clip by extent]
QGIS如何調用GDAL功能
GDAL-Clip vector by extent

其中對於GDAL各項命令行工具的指令說明可以參考官方文件,例如以下為ogr2ogr的使用說明,因此

ogr2ogr

從上圖可以發現有許多的參數在QGIS並沒有讓我們進行輸入,實際上我們在QGIS調用GDAL時是提供簡化過後的版本,僅要求輸入必要參數,因此當我們有特殊需求時可以展開「Advanced Parameters」中進行參數添加,這邊以Raster clip為例,採用台灣20m DEM進行示範:

我這邊隨意畫一個多邊形進行DEM的裁切,接下來可以參考gdal_translate的說明進行參數添加

gdal_translate
##原始產生的命令
gdal_translate -projwin 120.514513404696 24.606025273872884 121.32453197347542 23.79181909543443 -of GTiff D:/Merge_DEM_20M.tif D:/Clip_dem.tif
##這邊添加參數為 -scale -22 3826 0 255 將數據重新縮放到0-255之間,命令則變成如下
gdal_translate -projwin 120.514513404696 24.606025273872884 121.32453197347542 23.79181909543443 -of GTiff -scale -22 3826 0 255 D:/Merge_DEM_20M.tif D:/Clip_dem.tif
dem
dem
result
輸出成果裁切後並將高程縮放到0-255之間

結語

今天的分享就到這裡了實際上QGIS搭配GDAL還有更多進階的用法後續可能分享一些使用Python操作GDAL的教學喜歡我的分享的話可以訂閱我的YT頻道以及FB專頁會分享更多有趣的應用

分享

發表迴響