使用形状文件屏蔽栅格,但保留多边形接触栅格的单元格

问题描述 投票:0回答:1

我有一个栅格,我想使用

terra::mask()
来屏蔽它。在文档中,我发现您可以使用参数
touches = TRUE
来包含“由线条或多边形接触的所有单元格”。然而,这似乎不起作用,因为它只保留多边形接触的栅格的一些单元格。这就是我的意思。

这是遮罩之前的栅格和覆盖的形状文件。

这是屏蔽后的栅格和覆盖的形状文件:

显然,并非所有接触多边形的单元格都被保留。这是我的代码:

shp <- sf::read_sf("Z:/AG/Ph/GIS/statistics_subcatchments/catchment_GS6_2_4326.shp") 
shp <- sf::st_transform(shp, st_crs = "EPSG:4326" |> terra::vect())


ras_crop <- terra::crop(ras_raw, shp)
ras_mask <- terra::mask(ras_crop, shp, touches = T) 

我上传了栅格

ras_raw
,即第一张图像中的栅格,以及代码中提到的shapefile
shp
https://file.io/xSBYLGBTfi55

我确实尝试使用

raster
包来完成此任务,但是,没有选项可以指定应保留触摸的单元格。我还检查了这是否是
crs()
的问题,然而,情况也并非如此。我真的很感激一些帮助!

r raster terra
1个回答
0
投票

我想通了。解决方案是

extract
包中的
terra
函数。它的一个很好的附加功能是,它还可以为您提供覆盖多边形的每个像素的分数。

© www.soinside.com 2019 - 2024. All rights reserved.