如何实现sf多边形的精准裁剪?类比栅格crop+mask操作
矢量多边形的精准裁剪方案
针对矢量数据的精准裁剪(保留与目标边界相交的部分要素,而非完整要素),你需要用空间交集操作来替代st_crop,这相当于栅格数据中crop+mask组合操作的矢量版。
具体实现代码(基于sf包)
library(sf) # 读取矢量数据 global_basins <- st_read("你的全球流域矢量文件路径.shp") country_boundary <- st_read("你的国家边界矢量文件路径.shp") # 关键:确保两个图层的坐标参考系(CRS)一致 if (!st_crs(global_basins) == st_crs(country_boundary)) { global_basins <- st_transform(global_basins, st_crs(country_boundary)) } # 执行精准裁剪:保留流域与国家边界相交的部分 cropped_basins <- st_intersection(global_basins, country_boundary)
说明
st_intersection会计算两个矢量图层的空间交集,直接提取流域多边形中落在国家边界内的部分,完美贴合边界轮廓,而不是返回完整的流域要素。- 一定要先对齐CRS,否则空间运算会出错;如果原始数据CRS不同,用
st_transform统一转换即可。
内容的提问来源于stack exchange,提问作者89_Simple
相关产品推荐
相关产品推荐

