问题描述
我有一个名为p_1,p_2,...,p_n的多边形(和多多边形)列表。我想获得它们全部相交的区域。由于st_intersection()
不接受列表作为参数,因此我尝试了以下三种方法。他们都没有提供令人满意的解决方案,这就是为什么我在寻找替代的,更有效的技术。
(i)我可以遍历列表
for(i in P) p_1 <- st_intersection(p_1,i)
其中P是包含多边形p_2至p_n的列表。但这很慢。
(ii)一种do.call()
方法,即
p <- do.call(st_intersection,P)
其中P是多边形p_1到p_n的列表,仅计算列表中前两个多边形之间的交点。
(iii)我可以将多边形组合成一个sf对象,然后运行st_intersection()
:
p <- do.call(c,P) %>%
st_sf() %>%
st_intersection()
它有效,但是速度很慢。大概是因为除了P中所有多边形的公共交点之外,它还衍生出许多其他多边形。
三种方法均不能提供令人满意的解决方案。在并行化框架中遍历成对比较的层次结构可能会更快。但是,我认为有比这更简单,更有效的解决方案。欢迎任何评论和建议。
给昨天关闭此问题的人的注释:不要关闭此问题。如果您个人有问题,请评论或给我发私人消息。但是不要关闭它。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)