【问题标题】:create variable width buffer for spatiallinesdataframe为空间线数据框创建可变宽度缓冲区
【发布时间】:2018-06-28 04:55:08
【问题描述】:

我想为空间线数据框创建一个可变宽度缓冲区。我有一个带有宽度属性的道路形状文件,我想以此作为道路缓冲区的基础。例如,如果我有一条 5 m 宽的路段,我希望我的缓冲区每边为 2.5 m。如果我有一条 10 m 宽的路段,我希望我的缓冲区每边为 5 m,等等。

目前,我知道两个缓冲函数:rgeos::gBuffer 和 raster::buffer,但它们都只基于单个值(我知道)创建一个缓冲区。有谁知道我可以使用的功能吗?

我想做这样的事情:

rdWidth

roads.buff

【问题讨论】:

    标签: r spatial


    【解决方案1】:

    你可以在不同的道路宽度上循环

    示例数据:

    library(raster)
    cds1 <- rbind(c(-180,-20), c(-140,55), c(10, 0), c(-140,-60))
    cds2 <- rbind(c(-10,0), c(140,60), c(160,0), c(140,-55))
    cds3 <- rbind(c(-125,0), c(0,60), c(40,5), c(15,-45))   
    lns <- spLines(cds1, cds2, cds3, attr=data.frame(width=2*(1:3)))
    

    解决方案:

    w <- unique(lns$width)
    b <- list()
    for (i in 1:length(w)) {
        x <- lns[lns$width==w[i], ]
        b[[i]] <- buffer(x, w[i])
    } 
    bb <- do.call(bind, b)
    
    plot(bb)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-07
      • 2017-07-18
      • 2021-09-27
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多