【问题标题】:Calculate area in each of the SpatialLines in a SpatialLinesDataFrame计算 SpatialLinesDataFrame 中每个 SpatialLines 的面积
【发布时间】:2015-12-21 21:07:30
【问题描述】:

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

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

【问题讨论】:

  • SpatialLines 没有区域,因为它们是(集合)行。您是指SpatialPolygons 元素的区域吗?
  • 所以我必须先将 SpatialLinesDataFrame 中的每一行转换为多边形,然后再计算面积?
  • 所以。如何将 SpatialLinesDataFrame 线转换为多边形?

标签: spatial sp


【解决方案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)

让我们将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)

【讨论】:

    猜你喜欢
    • 2019-02-11
    • 2016-01-14
    • 2019-07-24
    • 2011-08-12
    • 1970-01-01
    • 2017-09-04
    • 2015-01-16
    • 2011-06-07
    • 2018-01-09
    相关资源
    最近更新 更多