在 R 中组合多个 shapefile
Posted
技术标签:
【中文标题】在 R 中组合多个 shapefile【英文标题】:combining multiple shapefiles in R 【发布时间】:2018-11-27 19:52:56 【问题描述】:我有一个包含大约 100 个点 shapefile 的文件夹,这些文件是在对有蹄类动物进行抽样时获得的位置。我想将所有这些点 shapefile 合并到 R 中的一个 shapefile 中。所有点数据最初都是 .gpx 格式,然后我将其更改为 shapefile。
我对 R 还很陌生,所以我很困惑如何做到这一点,并且找不到合并或组合多个 shapefile 的代码。任何建议将不胜感激。谢谢!
【问题讨论】:
见:gis.stackexchange.com/questions/264250/…。请注意,Geographic Information Systems 可能是将来询问有关 shapefile 问题的更好地方。 这里也可能重复:***.com/questions/19961898/append-combine-shape-files 欢迎来到 SO!您能否提供更多信息(即,当您阅读它们时它们是什么空间类型?;您使用的是 sp/rgdal 还是 sf?当您说“合并”时,您究竟是指输出方式/如果有重复项怎么办? )。此外,这可能会在gis.stackexchange.com 上得到更好的服务 【参考方案1】:library(sf)
列出文件夹位置内的所有 shapefile
file_list <- list.files("shapefile/folder/location", pattern = "*shp", full.names = TRUE)
读取所有 shapefile,存储为列表
shapefile_list <- lapply(file_list, read_sf)
附加单独的 shapefile,在我的示例中有 4 个 shapefile,这可以通过使用 for 循环或应用函数来获得更长的列表来改进。
all_schools <- rbind(shapefile_list[[1]], shapefile_list[[2]], shapefile_list[[3]], shapefile_list[[4]])
【讨论】:
【参考方案2】:建立在@M_Merciless .. 对于长列表,您可以使用
all_schools <- do.call(rbind, shapefile_list)
或者,或者,非常快:
all_schools <- sf::st_as_sf(data.table::rbindlist(x))
【讨论】:
dplyr 包中的bind_rows 也适用于列表,dplyr::bind_rows(shapefile_list)以上是关于在 R 中组合多个 shapefile的主要内容,如果未能解决你的问题,请参考以下文章
R:在列表中模式的grepl之后粘贴并组合来自ifelse的多个输出
R - 给定一个矩阵和一个幂,生成多个矩阵,其中包含矩阵列的所有组合
R - 给定一个矩阵和一个幂,生成多个矩阵,其中包含矩阵列的所有唯一组合
R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将多个可视化结论嵌套起来输出(ggarrange组合ggarrange组合后的图像)