簡體   English   中英

如何在R中划分多邊形?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM