R sf 等效于 Esri Identity

R sf equivalent of Esri Identity

有没有一种方法可以执行与 ArcGIS 中的身份工具等效的操作,其中保留空间数据 x 的所有边界,并使用 y 的属性和边界更新与空间数据 y 相交的区域。

回答以防其他人 运行 进入这个问题。我的一位同事帮助我解决了绑定两个层的交集结果的解决方案,具有焦点层和相交层的差异。

arc.ident <- function(layer_a, layer_b){
  int_a_b <- st_intersection(layer_a, layer_b)
  rest_of_a <- st_difference(layer_a, st_union(layer_b))
  output <- bind_rows(int_a_b, rest_of_a)
  return(st_as_sf(output))
}

或作为 tidyverse 管道

arc.ident.output <-  st_intersection(layer_a, layer_b) %>% 
  bind_rows(st_difference(layer_a, st_union(layer_b)))