一般从网上直接下载的tiff格式文件都是比较大的(全球或者全国范围),直接使用会大大增加运行时间,如果所研究的内容有一个明确的研究区域,就可以先把大范围的tiff文件裁剪成目标区域的大小,以方便后期的数据提取。
以下代码是批量裁剪tif文件的简单示例,仅供大家参考
library(raster)
library(sf)
input_folder <- "待裁剪tif文件夹"
vector_file <- "shp文件路径.shp" #这里是你要裁剪成啥区域大小的shp文件
output_folder <- "裁剪后的文件保存路径"
# 读取矢量数据
vector_data <- st_read(vector_file)
# 获取输入文件夹中所有Tiff文件的文件路径
tiff_files <- list.files(input_folder, pattern = "\\.tif$", full.names = TRUE)
# 创建进度条
pb <- txtProgressBar(min = 0, max = length(tiff_files), style = 3)
for (i in seq_along(tiff_files)) {
file <- tiff_files[i]
# 读取Tiff文件
raster_data <- raster(file)
# 根据矢量数据的形状创建掩蔽区域
mask <- rasterize(vector_data, raster_data)
# 对Tiff文件进行掩蔽
masked_data <- mask(raster_data, mask)
# 构建新的文件名
new_file <- file.path(output_folder, basename(file))
# 保存掩蔽后的Tiff文件
writeRaster(masked_data, filename = new_file, format = "GTiff")
# 更新进度条
setTxtProgressBar(pb, i)
}
# 关闭进度条
close(pb)
shp格式的文件如何获取可以参考这篇文章:学习路之gis--如何获取中国地图的shp文件(含省级