【问题标题】:Find polygons with regions of non overlap in R using sf使用 sf 在 R 中查找具有非重叠区域的多边形
【发布时间】:2021-09-22 01:11:37
【问题描述】:

我在 shapefile 中有两组多边形,使用 R 的 sf 包导入。我称他们为 A 和 B。

我想获取 B 中的所有多边形,其中 a) 与 A 中的任何多边形重叠 0% 或 b) 一些 与 A 中的多边形不重叠。

例如,对于 B 中的给定多边形 b,我确实希望 b 100% 包含在两个(或A 中的三个或四个...) 多边形。

但是,假设 b 有 50% 包含在 A 中的两个(或三个或四个...)多边形中,但其中 50% 不包含在 A 中的任何其他多边形中。这种情况下,我想选择b。或者如果 100% 的 b 在 A 中的所有多边形之外,我想选择 b

是否有可能使用 st_intersects 来做到这一点?请让我知道图表或其他内容是否有助于澄清。

======

更明确地说:

我有类似的东西

## A is an sf object with many polygons, and so is B
## they both are part of the same geospatial area, 
## with some non-overlapping regions and many overlapping.
## I want all polygons in B that partially but not fully
## are covered by A. That is, I'm searching for regions of 
## the area not entirely covered by A, but if A covers it,
## I don't need B.

## So consider a loop approach

for (b in 1:nrow(B)) {
   
   if( !st_intersects(B[b,], A) {
       ....
   }
}

这就是我卡住的地方...我不太确定是否应该将多边形与 A 或 st_combine(A) 进行比较。而且我不确定如何设置 st_intersects 以获得非重叠区域,或使用 st_intersection。我对 sf 有点陌生,我以前都用过,但只是为了测试 一些 重叠,从不测试这样的情况。

【问题讨论】:

  • 我认为您可以计算交叉点,然后计算区域的比率。无论如何,如果您可以创建一个reproducible example,那将非常有用。
  • 谢谢——在这种情况下,我宁愿用很少的代码来显示,但我会添加我所拥有的。在高层次上,给定多边形集 A 和 B,遍历 B 中的所有多边形并用 A 执行 st_intersects() 。但这就是我卡住的地方。我想排除与 A 中的一个或多个 100% 重叠的多边形,并且只得到那些存在一定程度非重叠的多边形,但 st_intersects() 将给我任何交叉点。我不知道如何改变它以获得只有部分重叠但没有完全重叠的情况。

标签: r gis geospatial shapefile sf


【解决方案1】:

我才恍然大悟,我认为这个用例可以完全使用 st_crop() 函数覆盖。这就是我想要做的。我会尽快关闭它,因为我认为这给了我需要的答案。感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-15
    • 2017-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多