簡體   English   中英

來自 ArcGIS 的 Shapefile 孔未保存在 R 或 QGIS 中

[英]Shapefile holes from ArcGIS not preserved in R or QGIS

我的同事給我發了幾個 shapefile 進行分析。 這些 shapefile 中應該有漏洞。 以下是其中一個 shapefile 在 ArcGIS 計算機上的外觀示例: 來自同事的地圖,一個有很多洞的shapefile

但是,在我的計算機上,無論我使用 QGIS 還是 R(我的機器上沒有 ArcGIS),文件看起來像這樣(在第一個 shapefile 圖像的左側放大):

具有重疊多邊形而不是孔的 shapefile

我在 QGIS 3.12 版中嘗試了“修復幾何”,但這並沒有讓我完全了解——一些洞被恢復了,其他重疊的多邊形仍然存在:

具有一些重疊多邊形和一些孔的 shapefile

我嘗試使用 cleanGeo package 中的 clgeo_Clean() 在 R(版本 3.6.1,在 Mac OS 10.15.4 上運行)修復此問題,但所做的只是刪除重疊的多邊形而不將它們轉回孔中。 我需要保留這些孔,並且我無法從我的家用計算機訪問 ArcGIS(感謝 covid-19)。 有什么方法可以修復這個文件,或者我的同事在將它發送給我時可以做些什么不同的事情? 這是一個示例文件的鏈接(原始文件,不是使用“修復幾何”處理的文件): 鏈接到示例問題 shapefile

我在使用sf並轉換為多邊形時閱讀了 shapefile,以嘗試與覆蓋在其他多邊形上而不是不同的單個多邊形相交。 其中一些多邊形似乎具有無效的幾何形狀,因此還需要使用lwgeom::st_make_valid() 然后我能夠成功地與多邊形相交並過濾那些重疊的多邊形。

如果您希望您也可以st_union結果返回到多面體而不是多邊形的集合。

library(lwgeom)
library(sf)
library(dplyr)
library(ggplot2)

shp <- read_sf('AAbe.shp')

shp2 <- shp %>%
  st_cast("POLYGON")  %>%
  st_make_valid() %>%
  st_intersection() %>%
  filter(n.overlaps < 2)

ggplot(shp2) +
  geom_sf(fill = 'yellow') +
  coord_sf(xlim = c(-98, -96), ylim = c(17, 20))

放大 shapefile 中的孔的圖像

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM