我有亚马孙州(巴西)和其他六条最大河流(内格罗、索莱蒙斯、亚马逊、马德拉、普鲁斯和尤鲁阿)的形状。我想用河流来划分这个州,以获得河流之间的区域(马德拉-普鲁斯,普鲁斯-尤鲁阿等等)。我想得到最后的6个区域被这些河流划定,每个区域作为一个不同的多边形。我该怎么做?

我只找到了“剪辑”算法,这些算法给了我州内河流的面积,这不是我想要的。
发布于 2014-03-25 15:12:34
在@jbaum注释之后,我使用了来自package的gDifference:
intflv <- gDifference(state,rivers)但是由于"state“只有一个多边形,intflv变成了一个SpatialPolygons对象,只有一个多边形,由数千个子多边形组成。为了在地理信息系统软件中更好地工作,我希望它是一个拥有成千上万个多边形的物体,每个多边形都是一个子多边形。所以我做了:
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")结果(只保留了最大的区域):

https://stackoverflow.com/questions/22621138
复制相似问题