forループでバッファのサイズを増やすことができる関数をRに実装したいと思います。
全体的な計画は、テスト用および参照用のシェープファイルを使用するパッケージを作成することです。参照シェープファイルの周りにバッファーを作成し、必要なだけサイズを増やして、テスト シェープファイル全体と交差する必要があります。
したがって、シェープファイルを挿入して最初のバッファーを作成するためのコード スニペットを既にいくつか書きました。
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」を引数 (shape) として関数「buffergrow」を呼び出すとエラーが発生します。なぜこれが起こるのか誰にも分かりますか?私はすでにいくつかの他のアイデアを試しましたが、助けが必要です。
任意/追加: 全体的な計画の今後の作業に関して、ヒントはありますか?
よろしく、ステファン