有没有办法在R中有更好的缓冲区边界?

gcxthw6b  于 2023-04-03  发布在  其他
关注(0)|答案(3)|浏览(105)

我希望有人能帮助我解决以下问题。我正在做一个项目,我需要围绕R中的质心绘制一个圆(半径)。我也使用这个质心与其他几何体相交。我面临的问题是缓冲区边界不是一个定义很好的圆,当我绘制圆和交点时看起来不太好。
我的代码看起来有点像这样:
使用sf和ggplot2
半径为100km circle = st_buffer(centroid,100000),用于交叉口
intersection = st_intersection(geometry,circle)
对于情节
ggplot()+geom_sf(data= circle, fill = "yellow")
The border of buffer is "low quality"

sdnqo3pr

sdnqo3pr1#

也就是说,如果你真的想平滑圆形/缓冲区边界,你可以使用smoothr包。
这里有一种可能性:

library(smoothr)

# Smooth circle border
circle_smooth <- smooth(densify(circle, max_distance = 10), method = "ksmooth")

# Plot
ggplot2::ggplot()+
  ggplot2::geom_sf(data= circle_smooth, fill = "yellow")
uujelgoq

uujelgoq2#

您也可以使用sf::st_buffer(..., nQuadSegs=)
https://geocompr.robinlovelace.net/geometric-operations.html开始
st_buffer的第三个也是最后一个参数()是nQuadSegs,表示“每个象限的段数”,默认设置为30(意味着缓冲区创建的圆由4×30=120行组成)。这个参数很少需要设置。在一些特殊情况下,它可能会很有用,包括缓冲区操作的输出所消耗的内存是一个主要问题(在这种情况下,它应该被减小)或者当需要非常高的精度时(在这种情况下,它应该被增加)。

vx6bjr1n

vx6bjr1n3#

我在sf::st_buffer(..., nQuadSegs=)中尝试了nQuadSegs的不同值,但不知何故,这似乎没有改变任何东西。

相关问题