【发布时间】:2018-10-17 13:04:09
【问题描述】:
我还是 R 新手,不知道如何为我的工作流程创建循环以提高效率。
我有一个数字高程模型(光栅Barrow_5m.tif),一个用于湖泊和缓冲区的 shapefile,每个表格的一行中有 10 个 iD。
在下面的脚本中,我为湖的所有值创建了一个新的栅格文件,并使用来自 DEM 栅格的数据创建了缓冲区形状文件。这很好用。
setwd("...")
Barrow_5m <- raster("Barrow_5m.tif")
Barrow_DTLB <- st_read("Barrow_DTLB.shp")
Barrow_DTLB_Buffer <- st_read("Barrow_DTLB_BufferOUT.shp")
Barrow_lake <- crop(Barrow_5m, extent(Barrow_DTLB))
raster_lake <- rasterize(Barrow_DTLB, Barrow_lake, mask = TRUE)
Barrow_buffer <- crop(Barrow_2m, extent(Barrow_DTLB_Buffer))
raster_buffer <- rasterize(Barrow_DTLB_Buffer, Barrow_buffer, mask = TRUE)
writeRaster(raster_lake, "raster_lake.tif")
writeRaster(raster_buffer, "raster_buffer.tif")
但现在我想为湖的每个 id 和缓冲区 shapefile 分别创建一个光栅文件,所以 2x10 文件。 我认为最好为此编写一个循环,但到目前为止我的技能还不足以做到这一点。 到目前为止,其他问题也没有带来解决方案。我试图通过this 帮助我。
或者,我可以使用上面脚本中的最终产品 tif,并在每个 ID 的文件中撤消此操作。
我想编写循环,而不是手动为 shapefile 的所有 ID 编写循环,因为之后我将使用具有更多值的更大的 shapefile 执行相同的操作。
【问题讨论】:
-
raster_lake是具有每个湖泊 ID 的栅格吗(raster_buffer的问题相同)? -
是的,它们的 ID 为 0 到 10,因此每个都有 11 个值。并且每个湖ID都属于同一个Buffer ID