【发布时间】:2020-09-20 21:42:19
【问题描述】:
我已经使用 AdehabitatHR 生成了几个利用率分布 (UD),并将它们存储为 Geotiff。我现在使用与 Lattice 包相同的 UD 来生成一些地图并将它们保存到具有 LZW 压缩的高分辨率 tiff 图像。问题是我实际上有数百张地图要制作、保存和命名。一旦我从目录中加载了所有必要的文件,有没有办法自动执行此操作?我的每个 UD 都具有以下文件名结构“UD_resolution_species_area_year_season.tif”,在我给地图的最终名称中,我想保持相同的结构(或整个文件名),但添加前缀“blablabla_”,例如“blablabla_UD_resolution_species_area_year_season.tiff”。图像还包括一个主要名称,一个大写字母,它也应该改变。
目前我正在使用以下内容:
rlist = list.files(getwd(), pattern = "tif$", full.names = FALSE)
for (i in rlist) {
assign(unlist(strsplit(i, "[.]"))[1], raster(i))
}
shplist = list.files(getwd(), pattern = "shp$", full.names = FALSE)
for (i in shplist) {
assign(unlist(strsplit(i, "[.]"))[1], readOGR(i))
}
UD <- 'UD_resolution_species_area_year_season'
ext <- extent(UD) + 0.3 # set the extent for the plot
aa <-
quantile(UD,
probs = c(0.25, 0.75),
type = 8,
names = TRUE)
my.at <- c(aa[1], aa[2])
my.at <- round(my.at, 3)
maxval <- maxValue(UD)
tiff(
"C:/myworkingdirectory/maps/blablabla_UD_resolution_species_area_year_season.tiff",
res = 600,
compression = "lzw",
width = 15,
height = 15,
units = "cm"
)
levelplot(
UD,
xlab = "",
ylab = "",
xlim = c(ext[1], ext[2]),
ylim = c(ext[3], ext[4]),
margin = FALSE,
contour = FALSE,
col.regions = viridis(1000),
colorkey = list(at = seq(0, maxval)),
main = "A",
maxpixels = 2e5
) + latticeExtra::layer(sp.polygons(Land, fill = "grey50", col = NA)) + contourplot(
`UD`,
at = my.at[1],
labels = FALSE,
margin = FALSE,
lty = 2,
col = "orange",
pretty = TRUE
) + contourplot(
UD,
at = my.at[2],
labels = FALSE,
margin = FALSE,
lty = 2,
col = "red",
pretty = TRUE,
)
dev.off()
【问题讨论】: