用 Grass 的 v.clean 修正幾何錯誤、重疊區與填補空隙

 用 Grass 的 v.clean 來修正向量地圖的幾何錯誤
https://github.com/OSGeo/grass/issues/1716

專業生草空間地理分析工具

雖然說現在 Grass 已經整合入 QGIS 的 Processing Toolbox 中,但畢竟是第三方工具的關係,有時候會出現一些小 Bug 導致無法正常運作。例如糊塗流浪貓的前輩想在 QGIS 中用 v.clean 來清除向量地圖的一些拓撲錯誤時,就常發生無法運作或執行後錯誤依然存在、但獨立運作時卻又完全正常的奇怪狀況。習維尼

但無論如何,Grass 依然是個免費、開源又好用的地理資訊系統 (GIS),常被用來處理點陣 (Raster) 和向量 (Vector) 圖型資料。



安裝 Grass

於軟體管理員搜尋並安裝 Grass 即可。


Grass 文字界面操作 (command line)

打開終端機,以輸入以下指令啟動 Grass 新專案

grass78 -c EPSG:3857 /home/user/grass



linux GRASS CLI 文字界面


或打開現有專案

grass78 "/home/user/grass/island/PERMANENT" -gtext


匯入向量圖

輸入以下指令,將 test_1.gpkg 匯入 Grass

v.in.ogr input=test_1.gpkg


將 test_1 進行幾何錯誤清理後,輸出成 test_1_clean

v.clean input=test_1 output=test_1_clean tool=break,snap,bpol threshold=1


參數說明

break: 斷開交叉的線段。
bpol: 打破重疊多邊形的邊界。
snap: 將線連結到頂點上。
threshold: 臨界值,處理所有小於此距離的點,以地圖單位為準。


因為 Grass 出現無法用 rmdupl 去除重疊區的奇怪問題,因此換回 QGIS 的 Delete duplicate geometries 來替代。習病毒


若過程沒出現錯誤訊息,則可將其輸出成 test_1_clean.gpkg

v.out.ogr -c input=test_1_clean type=area output=test_1_clean.gpkg


用 Grass 填補間隙 (gate) 並用 qgis 將重疊區刪除
成功切割重疊區並自動填補間隙 (黃色區域)



Grass 圖形界面操作 (GUI)

由於不明原因,Linux 系統無法啟動 GRASS GIS 的 GUI,以下操作過程是在 Windows10 系統中示範。


Grass 於 windows 10 的 gui 圖形界面


grass v.clean 工具

grass 處理重疊 overlap 與填補間隙 gate

Grass 匯入資料界面

Grass 匯入向量圖形


選擇要輸入的向量圖


grass 選擇處理工具


grass 開始處理


grass 處理完成


grass 匯出成 gpkg

grass 選擇匯出的圖層


匯出成功


於 qgis 中檢視 成功將重疊區獨立切割成 polygon
將重疊區切割成獨立的 Polygon




延伸閱讀

Grass manuals - v.clean

Grass - wiki Vector topology cleaning

更多 QGIS


留言