2015-12-21 64 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

謝謝:-)很好地工作 –