[英]How to divide polygon in R?
我有一個亞馬遜州(巴西)的形狀文件和其他六個最大的河流(黑人,Solimões,亞馬遜,馬德拉,普魯斯和朱魯亞)。 我想用河流划分州,以獲得河流間的區域(馬德拉 - 普魯斯,Purus-Juruá等)。 我希望得到這些河流划分的最后6個區域,每個區域都是不同的多邊形。 我怎么做?
我只是找到了“削波”算法,這些算法讓我看到了州內河流的區域,這不是我想要的。
關注@jbaums評論,我使用了包rgeos中的gDifference:
intflv <- gDifference(state,rivers)
但由於“state”只有一個多邊形,因此intflv成為一個SpatialPolygons對象,只有一個Polygon,由數千個子多邊形組成。 為了更好地在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")
結果(僅保留最大區域后):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.