R语言实现ArcGIS Dissolve功能 按FRU字段合并shapefile要素
R实现按指定字段合并矢量要素操作
下面是完整可运行的代码逻辑,基于R的空间数据处理标准包sf实现:
步骤1:安装/加载依赖包
# 首次使用先安装包,安装过可以注释掉这行 install.packages("sf") # 加载sf包 library(sf) # 如果需要用到管道符可以加载dplyr,不用可以跳过 library(dplyr)
步骤2:读取原始shapefile
# 替换括号内的路径为你本地shp文件的实际路径 shp_raw <- st_read("your_input_path/input_file.shp")
读取后可以先执行unique(shp_raw$FRU)验证FRU的唯一值确实为61个,符合预期。
步骤3:按FRU字段聚合几何要素
提供两种写法,效果完全一致:
- 基于dplyr管道符的写法(可读性更高)
shp_agg <- shp_raw %>% group_by(FRU) %>% summarise( # 合并同一FRU下的所有几何要素,加st_make_valid处理可能存在的无效几何 geometry = st_union(geometry) %>% st_make_valid() )
- 基于sf原生函数的写法(无需依赖dplyr)
shp_agg <- aggregate( x = shp_raw["geometry"], by = list(FRU = shp_raw$FRU), FUN = function(x) st_union(x) %>% st_make_valid() )
聚合完成后执行nrow(shp_agg)可验证行数为61,符合需求。
步骤4:导出聚合后的shapefile
# 替换括号内的路径为你需要保存的输出路径 st_write(shp_agg, "your_output_path/aggregated_output.shp", delete_layer = TRUE)
补充说明:
delete_layer = TRUE参数用于自动覆盖目标路径下的同名文件,不需要覆盖可以删除该参数。
内容的提问来源于stack exchange,提问作者newb
相关产品推荐
相关产品推荐

