我有一个空间多边形数据框,我想确定每个特征(单个多边形)的范围,以便在crop()
函数中使用。我试过了
extent(spdf@polygons[1])
试图获取多边形的范围,并给出错误"错误:c(" x"," y")%in%names(x)并非都是真的"
任何帮助?
由于
答案 0 :(得分:2)
您可以对SpatialPolygons进行子集化,然后使用raster::extent
方法。
示例数据:
library(raster)
library(rgdal)
p <- shapefile(system.file("external/lux.shp", package="raster"))
现在使用循环:
e <- list()
for (i in 1:length(p)) {
e[[i]] <- extent(p[i,])
}
或lapply:
e <- lapply(1:length(p), function(i) extent(p[i,]))
或者也许创建一个矩阵:
e <- t(sapply(1:length(p), function(i) as.vector(extent(p[i,]))))
答案 1 :(得分:0)
我以前用来做我认为你要求的方法涉及两个包,rgdal
和raster
代码看起来像这样:
require(rgdal)
require(raster)
newExtent <- extent(bbox(yourSpatialObject))
这定义了边界(bbox),然后生成了一个范围()。它应该做你需要的。您可能需要一次一个地处理图层和对象,或者构建一个处理许多对象的函数......但这应该可以帮助您实现目标