ArcGIS中的形状文件孔未保留在R或QGIS中

问题描述 投票:1回答:1

我的同事给我发送了多个shapefile进行分析。这些shapefile中应该有孔。这是一个形状文件在ArcGIS中的计算机上的外观示例:Map from colleague, a shapefile with many holes

但是,在我的计算机上,无论我使用QGIS还是R(我的计算机上都没有ArcGIS),文件看起来都像这样(放大到第一个shapefile图像的左侧):

a shapefile with overlapping polygons instead of holes

[我在QGIS版本3.12中尝试了“修复几何”,但并没有完全解决问题-修复了一些孔,保留了其他重叠的多边形:

a shapefile with some overlapping polygons and some holes

我曾尝试使用cleanGeo软件包中的clgeo_Clean()在R(版本3.6.1,在Mac OS 10.15.4上运行)中修复此问题,但所做的只是删除了重叠的多边形,而又没有将它们重新变成孔。我需要保留这些漏洞,并且无法从家用计算机访问ArcGIS(感谢covid-19)。有什么办法可以修复此文件,或者我的同事将其发送给我时可以做些不同的事情吗?这是一个示例文件的链接(原始文件,未经“修复几何”处理的文件):link to sample problem shapefile

r arcgis shapefile qgis
1个回答
1
投票

我使用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))

zoomed in image of holes in shapefile

© www.soinside.com 2019 - 2024. All rights reserved.