在R中剪切光栅数据

在R中剪切光栅数据,r,geospatial,r-raster,R,Geospatial,R Raster,我有一个有趣的案例要解决,因为我对这类数据没有太多的经验,所以我请求一些帮助 我有大约1000个TIF文件,每个都超过30MB。这些文件中的每一个都至少有一个我感兴趣的屋顶。我想根据存储lon lat数据的文件,仅从tif中剪切一些特定位置。我设法绘制了tif文件,但我正在努力绘制lon lat点。作为下一步,我只想切割点附近的区域。可能吗 对于导入TIF文件,我使用的是stars y <- read_stars('data/file_1.tif') y_ll <- st_trans

我有一个有趣的案例要解决,因为我对这类数据没有太多的经验,所以我请求一些帮助

我有大约1000个TIF文件,每个都超过30MB。这些文件中的每一个都至少有一个我感兴趣的屋顶。我想根据存储lon lat数据的文件,仅从tif中剪切一些特定位置。我设法绘制了tif文件,但我正在努力绘制lon lat点。作为下一步,我只想切割点附近的区域。可能吗

对于导入TIF文件,我使用的是stars

y <- read_stars('data/file_1.tif')
y_ll <- st_transform(y, "+proj=longlat +ellps=WGS84 +datum=WGS84")

coordinates(lon_lat_data) = ~lon+lat

plot(y_ll[,,,1], axes = TRUE)
points(lon_lat_data$lon, lon_lat_data$lat, pch=19, col="red", cex=0.5) 

y请不要要求我们下载数据。而是使用代码生成一些数据和/或使用R附带的文件。例如:

library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
xy <- spatSample(r, 10, xy=TRUE, na.rm=TRUE)
v <- vect(as.matrix(xy[,1:2]), crs=crs(r))

plot(r)
points(v)
您还可以在点周围创建缓冲区,或者使用crop

v <- project(v, crs(r))
extract(r, v)
#   ID elevation
#1   1       325
#2   2       281
#3   3       324
#4   4       353
#5   5       271
#6   6       306
#7   7       332
#8   8       260
#9   9       270
#10 10       280