我有一个具有以下属性的格栅文件:

rstack_ET[[1]] # first layer from a stacked raster
class      : RasterLayer 
dimensions : 334, 733, 244822  (nrow, ncol, ncell)
resolution : 409, 498  (x, y)
extent     : 386067.5, 685864.5, 3805999, 3972331  (xmin, xmax, ymin, ymax)
crs        : +proj=utm +zone=36 +datum=WGS84 +units=m +no_defs 
source     : memory
names      : ET.1.1.1.1.1 
values     : 70, 674.7922  (min, max)

我正在使用从Shapetime获得的多边形,具有以下属性:

> dom_shp_sr
Simple feature collection with 1 feature and 11 fields
Geometry type: POLYGON
Dimension:     XYZ
Bounding box:  xmin: 490187.9 ymin: 3837447 xmax: 499269.9 ymax: 3852987
z_range:       zmin: 0 zmax: 0
Projected CRS: WGS 84 / UTM zone 36N
                          Name descriptio timestamp begin  end altitudeMo tessellate extrude visibility drawOrder icon
1 recharge limestones-akrotiri       <NA>      <NA>  <NA> <NA>       <NA>          1       0         -1        NA <NA>
                        geometry
1 POLYGON Z ((490233.2 383762...

波尔贡看起来是这样的:

enter image description here

当我try 使用多边形裁剪格栅文件时:

test = crop(rstack_ET[[1]], dom_shp_sr)

我得到了以下图片:

enter image description here

因此,它使用多边形的范围来裁剪格栅文件,但不使用多边形的实际形状. 任何帮助都是感激的.

推荐答案

使用terra

# ensure your raster is a terra raster if not already
ET_sr_r <- terra::rast(ET_sr_r)

# I think crop expects a SpatVector so cast sf object as vect
masked_ET <- terra::crop(ET_sr_r, vect(dom_shp_sr), mask=TRUE)

使用raster

masked_ET <- raster::mask(raster::crop(ET_sr_r, dom_shp_sr), dom_shp_sr)

R相关问答推荐

如何使用stat_extract_all正确提取我的目标值?

计算R中的威布尔分布的EDF

R:连接值,而不是变量?

用相同方法得到不同函数的ROC最优截断值

如何直接从Fortran到R的数组大小?

IMF IFS数据以R表示

如果可能,将数字列转换为整数,否则保留为数字

提取一个列表中单个列的重复观察结果R

如何用书面利率绘制geom_bar图

为什么我对圆周率图的蒙特卡罗估计是空的?

删除在R中的write.table()函数期间创建的附加行

从线的交点创建面

有没有办法通过str_Detect()或其他字符串匹配函数来连接两个长度不等的数据帧?

如何在使用因子时获得Sankey图的Scale_Fill_Viridis的全范围

构建一个6/49彩票模拟系统

按镜像列值自定义行顺序

将仪表板中的值框大小更改为Quarto

子样本间系数检验的比较

将R中对象的CSV数组转换为JSON数组

从data.table列表中提取特定组值,并在R中作为向量返回