【发布时间】:2012-03-18 21:00:38
【问题描述】:
我想在 R 中实现一个函数,该函数能够在 for 循环中增加缓冲区的大小。
总体计划是编写一个包,它使用一个测试和一个参考形状文件。它应该在参考 shapefile 周围创建一个缓冲区,并根据需要增加大小,以与整个 test-shapefile 相交。
因此,我已经编写了一些代码 sn-ps 来插入 shapefile 并创建第一个缓冲区:
require("rgeos")
require("rgdal")
l1=readOGR(dsn="C:/Maps", layer="osm_ms1")
l2=readOGR(dsn="C:/Maps", layer="osm_ms2")
proj4string(l2) = CRS("+init=epsg:31467") ## DHDN / 3-degree Gauss-Kruger zone 3
l2buffer <- gBuffer(l2, width=0.001, capStyle="ROUND")
plot(l2buffer, col="black")
lines(l2, col="red")
lines(l1, col="blue")
到目前为止,一切正常。 在那之后,我想把这个方法转移到一个for循环中,每一步都有一个缓冲区:
i = 0.001
buffergrow = function(shape) {
for (k in 1:10) {
linebuffer[k] <- gBuffer(l2, width=i, capStyle="ROUND")
plot(linebuffer[k])
i = i+0.001
}
}
> buffergrow(l2)
Error in linebuffer[k] <- gBuffer(shape, width = i, capStyle = "ROUND") :
Object 'linebuffer' not found
如您所见,当我使用“l2”作为参数(形状)调用函数“buffergrow”时会发生错误。有人知道为什么会这样吗?我已经尝试了其他一些想法,但我需要一些帮助。
可选/另外:关于我的总体计划的进一步工作,您对我有一些提示吗?
最好的问候, 斯蒂芬
【问题讨论】: