2015-12-21 107 views
0

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

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

+0

'SpatialLines'没有区域就像它们一样(线路的集合)。你的意思是'SpatialPolygons'元素的区域? –

+0

因此,我将不得不将SpatialLinesDataFrame中的每一行转换为多边形,然后计算该区域? –

+0

所以。如何将SpatialLinesDataFrame行转换为多边形? –

回答

1

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

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) 

让转换到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) 
+0

谢谢:-)很好地工作 –