gpt4 book ai didi

r - 溶解除形状文件中的一个以外的所有多边形

转载 作者:行者123 更新时间:2023-12-02 23:46:07 24 4
gpt4 key购买 nike

我想溶解除形状文件中的一个以外的所有多边形。有办法做到这一点吗?

这是一个可重现的示例:

library(rgeos)
library(UScensus2000tract)

# load data
data("oregon.tract")

# plot map
plot(oregon.tract)

enter image description here

# Dissolve all polygons
d <- gUnaryUnion(oregon.tract, id = oregon.tract@data$state)
plot(d)

enter image description here

在这个例子中,是否可以通过保留区域编号9501来溶解多边形?

最佳答案

我想这就是您正在寻找的。如果您想要将区域的连续成员合并在一起,这会略有不同,但您所要做的就是从多边形中删除第一个元素(整个状态),然后对剩余部分运行 gUnaryUnion,然后重新添加将邻近地区的成员复制到 GUnaryUnion 化的州的副本。

oregon = oregon.tract
names(attributes(oregon.tract))
#[1] "bbox" "proj4string" "polygons" "plotOrder" "data"
#[6] "class"
selected_tract_indices = which(oregon.tract@data$tract == 9501)

oregon <- gUnaryUnion(oregon.tract, id = oregon.tract@data$state)
d = oregon
npolygons = 1
for (selected_tract_index in selected_tract_indices){
d@polygons[[npolygons+1]] = oregon.tract@polygons[[selected_tract_index]]

npolygons = npolygons + 1
d@plotOrder=c(d@plotOrder,as.integer(npolygons))
}

plot(d)

Oregon with selected tract

此操作的输出是 SpatialPolygon。如果您想将其转换回 SpatialPolygonDataDrame,here有一个简单的方法:

# Extract polygon ID's
( did <- sapply(slot(d, "polygons"), function(x) slot(x, "ID")) )

# Create dataframe with correct rownames
( d.df <- data.frame( ID=1:length(d), row.names = did) )

# Try coersion again and check class
d <- SpatialPolygonsDataFrame(d, d.df)
class(d)

关于r - 溶解除形状文件中的一个以外的所有多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com