QIGS-GDAL_GPKG2SHP

[QGIS教學系列]GPKG圖層批次轉換成SHP的三種方法

關鍵字: #GIS #QGIS #格式轉換 #GPKG2SHP #SHP #GPKG #QPackage

筆者在產製GIS相關圖資時習慣採用GPKG格式將相關的圖層進行打包整理,但不幸的是GIS界的商業龍頭ArcGIS並不直接支援GPKG格式(?QGIS已經支援ESRI GeoDatabase好幾年了..),同時業界最流通的空間資訊格式還是SHP為主,最近工作上有需要將大量的GPKG圖層轉換成獨立的SHP進行保存,這篇就提供我目前常使用的三種方法。

[QGIS教學系列GPKG轉換SHP的批次處理方法

GPKG與SHP的相關介紹可以參考下列文章

以下教學將以QGIS作為示範,主要提供三種批次轉換的方法,包含採用QGIS的外掛程式、GDAL命令行轉換以及Python調用GDAL命令

1.安裝QGIS-QPackage外掛

步驟一:安裝QPackage外掛

要使用QPackage套件,我們首先需要在QGIS中安裝它。我們可以在QGIS的選單中選擇「外掛程式」->「管理和安裝外掛程式」,然後在搜尋框中輸入「QPackage」,找到該外掛程式並點擊「安裝外掛程式」按鈕。安裝完成後,我們可以在QGIS的工具列中看到一個新的圖示,代表ORS套件。

QGIS-QPackage
右下方可以找到Install按鈕進行安裝

步驟二:開啟QPackage

要使用QPackage套件,我們只需要點擊頁面上新增的圖示即可,在彈出的視窗中預設會將所有Vector圖層進行勾選,我們可以手動選擇要輸出的圖層以及要輸出路徑還有指定相關的CRS,最後點選「Copy the layers」即可批次輸出成SHP檔案

QPackage新增的圖示
QGIS-QPackage

點擊輸出後,我們來確認目的資料夾是否全部轉換完成(轉換過程中容易卡當,請不要任意點擊QGIS視窗)

QGIS-QPackage
成功將所有圖資進行轉換

2.採用GDAL-OGR2OGR命令

第二個方法是直接採用GDAL內建的命令行工具,對於GDAL的相關介紹可以參考下列文章。

要使用GDAL指令,我們可以採用QGIS安裝時自帶的終端機「OSGeo4W Shell」,一般來說可以從「開始」列直接搜尋,或是會在桌面上看到捷近資料夾

2.採用GDAL-OGR2OGR命令

接著我們直接打開「OSGeo4W Shell」,其介面就像一般的命令提示字元一樣。

2.採用GDAL-OGR2OGR命令

接著我們輸入以下指令調用OGR2OGR工具,(過程中由於我測試的檔案有些資料欄名稱不符特定規定,因此被重新命名)

ogr2ogr -f "ESRI Shapefile" output_folder input.gpkg 
##其中 -f 表示  [-f format_name] 用來指定輸出格式,後面則是依序表示 輸出資料夾 輸入檔案
2.採用GDAL-OGR2OGR命令
輸出完成後一樣是根據所有包含的圖層進行獨立儲存成SHP

3.採用QGIS內建工具箱批次功能(例如Drop_field)

第三個方法是採用QGIS任意功能的批次處理,該方法彈性較大,而且可以自由組裝中間處理的工具,但缺點就是速度慢很多,對於批次處理功能介紹可以參考以下文章

在上小節提到了GDAL輸出SHP格式對欄名稱有特定規範,實際上QGIS對這一塊特別寬鬆,欄名可以包含「空格、標點符號等」,但對於ArcGIS來說就會讀取錯誤,如果有中間處理的需求則可以採用QGIS內建的批次功能逐步轉換,例如我可以採用「Drop fields」將一些不需要的欄位進行剃除,再重新轉換成SHP進行輸出。

QGIS內建工具箱批次功能
輸出資料包含了「.」這在ArcGIS中不允許,會出現讀取錯誤

接下來批次輸出的名稱可以讀取「Input layer」作為變數,將副檔名轉換成.shp,即可完成轉換(詳細批次功能介紹參考上面的文章)

QGIS內建工具箱批次功能
QGIS內建工具箱批次功能
QGIS內建工具箱批次功能
這樣就可以將所有圖層批次轉換成SHP

結語

今天的分享就到這裡了,最後筆者還是要讚揚一下QGIS的自由性,喜歡我的分享的話可以訂閱我的YT頻道以及FB專頁會分享更多有趣的應用

分享

發表迴響