如何在R中划分多边形?

时间:2014-03-24 21:39:02

标签: r polygon divide

我有一个亚马逊州(巴西)的形状文件和其他六个最大的河流(黑人,索利姆斯,亚马逊,马德拉,普鲁斯和朱鲁亚)。我想用河流划分州,以获得河流间的区域(马德拉 - 普鲁斯,Purus-Juruá等)。我希望得到这些河流划分的最后6个区域,每个区域都是不同的多边形。我该怎么做?

enter image description here

我只是找到了“削波”算法,这些算法给了我州内河流的区域,这不是我想要的。

1 个答案:

答案 0 :(得分:4)

关注@jbaums评论后,我使用了包rgeos:

中的gDifference
intflv <- 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")

结果(仅保留最大区域后):

enter image description here