我有一个亚马逊州(巴西)的形状文件和其他六个最大的河流(黑人,索利姆斯,亚马逊,马德拉,普鲁斯和朱鲁亚)。我想用河流划分州,以获得河流间的区域(马德拉 - 普鲁斯,Purus-Juruá等)。我希望得到这些河流划分的最后6个区域,每个区域都是不同的多边形。我该怎么做?
我只是找到了“削波”算法,这些算法给了我州内河流的区域,这不是我想要的。
答案 0 :(得分:4)
关注@jbaums评论后,我使用了包rgeos:
中的gDifferenceintflv <- gDifference(state,rivers)
但是因为&#34;州&#34;只有一个多边形,intflv成为一个只有一个多边形的SpatialPolygons对象,由数千个子多边形组成。为了更好地在GIS软件中工作,我希望它是一个包含所有数千个多边形的对象,每个多边形都是一个子多边形。所以我做了:
l <- list()
total <- length(intflv@polygons[[1]]@Polygons)
for (i in 1:total) {
print(paste(i,total,sep="/"))
flush.console()
P <- intflv@polygons[[1]]@Polygons[[i]]
l[[length(l)+1]] <- Polygons(list(P),i)
}
sp <- SpatialPolygons(l)
d <- data.frame(IDs=1:total)
intflv1 <- SpatialPolygonsDataFrame(sp,data=d)
writeOGR(intflv1,"shp","intflv","ESRI Shapefile")
结果(仅保留最大区域后):