R 有没有一种方法可以使用'sf::st_join'来获取捕获的面积比例?

R 有没有一种方法可以使用'sf::st_join'来获取捕获的面积比例?,r,sf,R,Sf,我想使用: st\u连接(多边形A,多边形B,连接=st\u相交) 要获得与当前版本相同的输出,请使用一个额外的列,该列指定由polygon\u B从polygon\u A捕获的面积比例?理想情况下,这将适用于magnize=TRUE(返回唯一的polygon_A记录,其中只有一个匹配来自polygon_B),或者magnize=FALSE(返回所有匹配来自polygon_B,其中捕获区域的比例由polygon_A) 我的解决方法是使用st_相交(polygon_A,polygon_B),使用s

我想使用:

st\u连接(多边形A,多边形B,连接=st\u相交)

要获得与当前版本相同的输出,请使用一个额外的列,该列指定由
polygon\u B
polygon\u A
捕获的面积比例?理想情况下,这将适用于
magnize=TRUE
(返回唯一的
polygon_A
记录,其中只有一个匹配来自
polygon_B
),或者
magnize=FALSE
(返回所有匹配来自
polygon_B
,其中捕获区域的比例由
polygon_A

我的解决方法是使用
st_相交(polygon_A,polygon_B)
,使用
st_面积
计算新形状的面积(相交的结果),然后将其除以
polygon_A
的原始形状的面积。有没有更好的方法来实现这一点?或者可能计划将此作为一项功能添加到
st\u join


为了记录在案并避免错误,我的目标是确定比例接近0.50/0.50或0.70/0.30的情况,并仔细查看以确定
max=TRUE
是否有意义。我对比例为0.99/0.01的情况不太感兴趣-
max=TRUE
对于这些情况来说已经足够了。

我基本上就是这么做的。如果全部在一个管道中,则不会太麻烦:
mutate
以获得第一个形状的面积,
st_交叉点
,然后
mutate
以获得交叉点的面积和交叉点覆盖的百分比。但是我想你可以很容易地把这些步骤包装成一个函数
st_join
不会是它的位置,因为返回的几何体与左侧的
sf
对象相同,就我所见,这基本上就是我所做的。如果全部在一个管道中,则不会太麻烦:
mutate
以获得第一个形状的面积,
st_交叉点
,然后
mutate
以获得交叉点的面积和交叉点覆盖的百分比。但是我想你可以很容易地把这些步骤包装成一个函数
st_join
不是它的位置,因为返回的几何体与我所看到的左侧
sf
对象相同