terra包中多边形裁剪栅格仅选中少量单元格的疑问及snap参数解析
栅格裁剪问题解析:
terra::crop的snap参数作用及异常原因 问题背景
我拥有一个分辨率为0.25度的全球范围栅格,尝试使用多边形(county_ref)调用以下代码进行裁剪:
library(terra) crop_raster <- terra::crop(temp_rast, county_ref) plot(crop_raster) plot(county_ref, add = T)结果仅选中了2个栅格单元格,不符合预期;而使用添加
snap="out"参数的代码:crop_raster_snap <- terra::crop(temp_rast, county_ref, snap = "out") plot(crop_raster_snap) plot(county_ref, add = T)则得到了预期的裁剪效果。现询问第一次裁剪未正常生效的原因,以及'snap'参数的作用。
第一次裁剪未生效的原因
默认情况下,terra::crop的snap参数取值为"near",它会把裁剪范围对齐到距离多边形边界最近的栅格单元格中心。
你的0.25度分辨率栅格单元格尺寸很小,而目标多边形的边界刚好只和极少数(2个)栅格单元格的中心距离够近,导致裁剪范围被错误地缩小到仅包含这几个单元格,最终只选中了2个栅格,完全没覆盖到多边形实际应该包含的区域。
snap参数的作用
snap参数用来控制裁剪范围如何匹配原栅格的单元格网格,有三个可选值:
"near"(默认):将裁剪范围对齐到离多边形边界最近的栅格单元格中心,容易出现裁剪范围远小于多边形实际覆盖区域的情况,就是你第一次遇到的问题。"in":把裁剪范围对齐到完全包含在多边形内部的最外层栅格单元格,最终裁剪出的区域是多边形能完全覆盖的栅格,会比多边形实际范围小一圈。"out":将裁剪范围对齐到能完全包含多边形的最外层栅格单元格,确保所有和多边形有交集的栅格单元格都被纳入裁剪范围,这也是你第二次得到预期效果的原因——它把多边形覆盖到的所有栅格都包含了进来。
内容的提问来源于stack exchange,提问作者89_Simple
相关产品推荐
相关产品推荐

