【发布时间】:2020-12-29 20:30:57
【问题描述】:
我有一个名为 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中所有多边形的公共交集之外,还衍生出很多其他的多边形。
这三种方法都不能提供令人满意的解决方案。在并行化框架中循环通过成对比较的层次结构可能会更快。但是,我认为还有比这更简单、更有效的解决方案。
欢迎任何cmets和建议。
给昨天关闭此问题的人的说明:请勿关闭此问题。如果您个人对此有任何问题,请发表评论或给我发私信。但不要关闭它。
【问题讨论】:
标签: r gis geospatial sf