R sf:多边形列表上的st_intersection

问题描述

我有一个名为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 (将#修改为@)