我希望也许有人可以帮助我与以下情况。我正在做一个项目,我需要在r的质心周围画一个圆(半径),我也使用这个质心与其他几何图形做一个相交。我面临的问题是,缓冲边界不是一个定义很好的圆,当我同时绘制圆和交点时,它看起来不太好。
我的代码看起来有点像这样:
使用sf和ggplot2
半径100kmcircle = st_buffer(centroid,100000)
对于交集
intersection = st_intersection(geometry,circle)
表示情节
ggplot()+geom_sf(data= circle, fill = "yellow")
缓冲区边框为"low quality">
还不错!也就是说,如果你真的想要平滑圆圈/缓冲区边界,你可以使用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")
您也可以使用sf::st_buffer(..., nQuadSegs=)
从https://geocompr.robinlovelace.net/geometric-operations.html
st_buffer()的第三个也是最后一个参数是nQuadSegs,这意味着"每个象限的段数",默认设置为30(意味着缓冲区创建的圆圈由4×30=120行组成)。这个论点很少需要设置。它可能有用的特殊情况包括当缓冲区操作的输出消耗的内存是一个主要问题时(在这种情况下应该减少内存),或者当需要非常高的精度时(在这种情况下应该增加精度)。
我在sf::st_buffer(..., nQuadSegs=)
中尝试了nQuadSegs
的不同值,但不知何故,这似乎并没有改变任何东西。