QGIS-溶解并保持不相交的特征分离 - 相当于 R

问题描述 投票:0回答:2

我一直在使用QGIS中的溶解功能(我使用的是3.28.9-Firenze版本)。我对该功能的欣赏之处在于它有一个选项“将不相交的功能分开”。我正在寻找一种在 R 中执行此操作的方法,这样我就不需要来回切换到 QGIS。

我该如何在 R 中做到这一点?该示例显示了多边形,但我也想对线要素执行此操作。下面是一个示例数据集以及我在 R 中尝试过的内容。

我知道可以在 R 中完成按组溶解,但输出仅保留与数据集中的组相同数量的特征。在下面的示例中,我有 6 个不同的空间特征,要么属于框 1,要么属于框 2。当我按组溶解时,结果只是两个特征,每个组一个。它不考虑溶解的特征是否共享几何形状。期望的结果应该是四个不同的特征(右上角 - 溶解框 1;中间 - 溶解框 2;中间 - 单框 1;左下 - 单框 2)。

library(sf)
library(dplyr)

# Create example data
sq = function(pt, sz = 1) st_polygon(list(rbind(c(pt - sz), c(pt[1] + sz, pt[2] - sz), c(pt + sz), c(pt[1] - sz, pt[2] + sz), c(pt - sz))))
x = st_sf(box = 1:2, st_sfc(sq(c(4.2,4.2)), sq(c(0,0)), sq(c(1, -0.8)), sq(c(0.5, 1.7)), sq(c(3,3)), sq(c(-3, -3))))

# Visualise
plot(x)

# Dissolve
dissolve <- x |> 
 group_by(box) |> 
 summarise()
## Only two features are kept; one for box 1 and one for box 2

# Show dissolve results
dissolve
plot(dissolve)
r merge spatial qgis
2个回答
1
投票

您的 QGIS 方法通常应该可以通过 R 的 qgisprocess 包进行访问。

然而,目前这种特定的 QGIS 算法以这种方式使用似乎存在问题;报告于https://github.com/qgis/QGIS/issues/55587。当这个问题解决后,您可以在 R 中使用这种方法,但当然它需要 QGIS 存在。


0
投票

也许这会起作用?

x %>% group_by(box) %>% summarise() %>% sf::st_cast("POLYGON")

#     box
#   <int>                                                               <POLYGON>
# 1     1                                 ((0 0.2, 2 0.2, 2 -1.8, 0 -1.8, 0 0.2))
# 2     1         ((2 2, 2 4, 3.2 4, 3.2 5.2, 5.2 5.2, 5.2 3.2, 4 3.2, 4 2, 2 2))
# 3     2                                   ((-4 -2, -2 -2, -2 -4, -4 -4, -4 -2))
# 4     2 ((-1 -1, -1 1, -0.5 1, -0.5 2.7, 1.5 2.7, 1.5 0.7, 1 0.7, 1 -1, -1 -1))
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.