0

亲爱的 stackoverflow 的人们。

我正在尝试计算 SPDF 的每个单独多边形的面积。我正在尝试实现它的功能,使我可以将数据放入并获取区域列表。我坚持创建一个返回多边形所有区域的 for 循环。对于一个多边形的表面计算,以下代码有效:

surfacefirstpolygon <- gArea(inputSPDF[1,1])

当我运行以下代码时,此代码会一一打印 i。

polys <- slot(inputSPDF,"polygons")
for(i in 1:length(polys)){
  print(i)
}

然后我尝试通过执行以下操作将这些代码块放在一个 for 循环中:

polys <- slot(inputSPDF,"polygons")
areasofpolygons <- for(i in 1:length(polys)){
  gArea(inputSPDF[i,i])
}

这不起作用,并给我以下错误。

is.projected(spgeom)中的错误:在为函数“is.projected”选择方法时评估参数“obj”时出错:[.data.frame(x@data,i,j,...,drop = FALSE)中的错误:未定义选定的列。

有人知道出了什么问题吗?

结果 =

dd = dim(inputSPDF) 
for(i in 1:dd[1]){ 
   areasofpolygons[i] <- gArea(inputSPDF[i,1]) 
}
4

1 回答 1

1

尝试:

dd = dim(inputSPDF)
for(i in 1:dd[1]) for(j in 1:dd[2]){
      areasofpolygons[length(areasofpolygons)+1] = gArea(inputSPDF[i,j])
    }
areasofpolygons

问题中提到的错误可能表明 i 超出了尺寸(“选择了未定义的列”)。此外,如果使用 [i,i],则只会访问相同的行号和列号。

于 2014-09-03T10:18:16.100 回答