【问题标题】:ArcGIS Dissolve equivalent in RR 中的 ArcGIS Dissolve 等效项
【发布时间】:2021-09-27 18:59:34
【问题描述】:

我正在尝试将一些 ArcGIS 工作转换为 R 脚本。 我有一个有 2 个变量的 shapefile,一个是 FRU(一个 ID 字段,代表不同的区域名称 1 到 60)和一个几何变量(我假设这显示了这些特征在空间上的位置)。

我想要创建一个新的 shapefile,它结合了 FRU=o、FRU=1、FRU=2...FRU=60 的几何形状。

所以我有 61 行,而不是 26、967 行。

【问题讨论】:

标签: r aggregate polygon


【解决方案1】:

在您的问题中包含可重现的代码示例通常是一种很好的做法,这样其他人可以更轻松地帮助解决问题。您可以将数据传递到 R 中的 dput 函数,以获取数据的复制和可粘贴版本。

对于这个问题,我建议使用sf 包:

# Read example data from sf package
nc <-  sf::st_read(system.file("shape/nc.shp", package="sf"))

# add a dummy column do dissolve with
nc <- dplyr::mutate(nc, example = c(rep('a', 50), rep('b', 50)))

# group the data by the new column
nc <- dplyr::group_by(nc, example)

# summarize the data
nc <- dplyr::summarise(nc)

使用您的示例,您会改为说my_data &lt;- dplyr::group_by(my_data, FRU),然后使用相同的汇总函数dplyr::summarise(my_data)

【讨论】:

  • 打败我!不错的答案
  • 谢谢 ColinB,非常感谢您抽出宝贵时间回答我的问题。当我运行第一行时:# Read example data from sf package nc
  • 我在运行该行时也遇到另一个错误:nc_dissolve% group_by(group) %>% summarise()。它说 CPL_geos_union 中的错误(st_geometry(x),by_feature,is_coverage):评估错误:TopologyException:-1312 249 1266000 的侧面位置冲突
  • 确保您将 st_read() 指向 FRU.shp 所在的位置。尝试使用像这样的完整路径st_read("C:/gis/FRU.shp")
【解决方案2】:

在我看来,sf 包是在 R 中处理空间数据的首选工具。但是,没有专门的 sf::st_dissolve()

相反,您可以简单地在数据中定义一个分组变量并使用dplyr::group_bydplyr::summarize。该示例是此处示例的简化版本 (https://github.com/r-spatial/sf/issues/290)。

library(sf)
library(ggplot2)

# Example data
nc <- st_read(system.file("shape/nc.shp", package="sf"))

# Dummy grouping variable
nc$group <- factor(rep(1:3, length.out = nrow(nc)))

# Dissolve
nc_dissolve <- nc %>% group_by(group) %>% summarize()

# Plot results
ggplot(data = nc_dissolve) +
  geom_sf(aes(fill = group))

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 2016-11-15
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多