计算 SpatialLinesDataFrame 中每个 SpatialLines 的面积

Calculate area in each of the SpatialLines in a SpatialLinesDataFrame

是否可以计算 SpatialLinesDataFrame 中每个 SpatialLines 内的面积?

我正在寻找一种方法来计算单个面积以及面积总数的平均值。

这是一种方法。让我们首先创建一些虚拟数据:

library(sp)
l1 <- Lines(list(Line(cbind(c(1, 1, 2, 2, 1), c(0, 1, 1, 0, 0)))), "1")
l2 <- Lines(list(Line(cbind(c(1, 1, 2, 2, 1), c(0, 5, 5, 0, 0)))), "2")
ls <- SpatialLines(list(l1, l2))

不出所料,线条没有面积:

library(rgeos) 
gArea(ls, byid = TRUE)

让我们将 SpatialLines 转换为 SpatialPolygons

ps <- SpatialPolygons(
  lapply(1:length(ls), 
         function(i) Polygons(lapply(coordinates(ls)[[i]], function(y) Polygon(y)), as.character(i))))

gArea(ps, byid = TRUE)