R sf包:提取、剪裁和返回多边形

R sf包:提取、剪裁和返回多边形,r,sf,R,Sf,我有一个sf表格,我需要提取其中一个多边形,将其剪辑到一个边界框,然后将其写回sf,这样我就可以用一个修改过的多边形绘制原始图形。除了将修改后的多边形写回原始sf之外,我已经知道了如何做所有事情 下面是一个使用sf包中的NC数据集的可复制示例。当我将数据剪辑回nc数据集中时,我得到一个错误。我需要在这里做什么 #Read NC shape from sf package nc <- st_read(system.file("shape/nc.shp", package="sf")) #e

我有一个sf表格,我需要提取其中一个多边形,将其剪辑到一个边界框,然后将其写回sf,这样我就可以用一个修改过的多边形绘制原始图形。除了将修改后的多边形写回原始sf之外,我已经知道了如何做所有事情

下面是一个使用sf包中的NC数据集的可复制示例。当我将数据剪辑回nc数据集中时,我得到一个错误。我需要在这里做什么

#Read NC shape from sf package
nc <- st_read(system.file("shape/nc.shp", package="sf"))

#extract county of interest
county <-nc[[1,"geometry"]]

#construct polygon to be clipped
bboxpolygon = st_polygon(list(rbind(c(-81.65,36.23), 
                                     c(-81.65,36.45), 
                                     c(-81.23,36.45), 
                                     c(-81.23,36.23), 
                                     c(-81.65,36.23))))
#Plot bounding box and county
par(mar = c(0,0,1,0))
plot(county)
plot(bboxpolygon, add=TRUE)   

#clip county
county_clipped <-st_intersection(county,bboxpolygon)

#confirm clipping worked
plot(county_clipped)

#write revised polygon back to dataset
nc[1,"geometry"]<-county_clipped

#plot revised object
plot(nc$geometry)
#从sf包中读取NC形状

nc一个
sf
对象中的
geometry
列是一个
sfc
对象,它是
sfg
对象的集合

attr( nc, "class" )
# [1] "sf"         "data.frame"

attr( nc$geometry, "class" )
# [1] "sfc_MULTIPOLYGON" "sfc"
您的
country\u clipped
对象是
sfg

attr( county_clipped, "class" )
# [1] "XY"      "POLYGON" "sfg"

因此,为了更新“几何体”,它需要是
sfc
对象

nc[1,"geometry"] <- sf::st_sfc( county_clipped )

nc[1,“几何体”]我认为需要将其制作成
sfc
对象
nc[1,“几何体”]记住,面积、周长和其他属性对于这个新形状是不正确的