将栅格裁剪到 R 中矢量 (.shp) 的精确轮廓?

问题描述

我想在 R 中准确地将栅格图层剪辑到 shpfile 的轮廓。

  crop_rast      = crop (raster,extent(vector))                 # Crop
  mask_rast      = mask (crop_rast,vector)                       # Mask

这不起作用。

解决方法

在没有提供证据的情况下说“这行不通”不是很有用。请提供一个自包含的最小可重复示例。如果您不能这样做,请至少显示一些信息,如 show(raster)show(vector),并显示您使用的包 library( )。最重要的是,显示错误消息。这可能对您不起作用的一个原因可能是矢量和栅格数据具有不同的坐标参考系统。

如果没有,我只能说它确实可以工作,无论是 raster 还是 terra 包。此处用 terra 说明:

library(terra)
v <- vect(system.file("ex/lux.shp",package="terra"))
r <- rast(system.file("ex/elev.tif",package="terra"))
v <- v[3,]
plot(r)
lines(v,lwd=2)

x <- crop(r,ext(v) + .01)
y <- mask(x,v)
plot(y)
lines(v)