【问题标题】:Is there a way to have better buffer borders in R?有没有办法在 R 中有更好的缓冲区边界?
【发布时间】:2021-12-05 22:44:59
【问题描述】:

我希望也许有人可以帮助我解决以下情况。 我正在做一个项目,如果我需要在 R 中的质心周围绘制一个圆(半径)。我还使用这个质心与其他几何图形进行交集。我面临的问题是缓冲区边界不是一个定义非常明确的圆,当我同时绘制圆和交叉点时看起来不太好。

我的代码看起来有点像这样:

使用 sf 和 ggplot2

100公里半径 circle = st_buffer(centroid,100000) 而对于路口

intersection = st_intersection(geometry,circle)

为了剧情

ggplot()+geom_sf(data= circle, fill = "yellow")

The border of buffer is "low quality"

【问题讨论】:

    标签: r ggplot2 spatial sf


    【解决方案1】:

    还不错!也就是说,如果你真的想平滑圆形/缓冲区边框,你可以使用包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")
    

    【讨论】:

    • 请告诉我渲染是否如您所愿。干杯。
    • 玩过平滑度,现在好多了
    • 很高兴能为您提供帮助。干杯。
    【解决方案2】:

    你也可以使用sf::st_buffer(..., nQuadSegs=)

    来自https://geocompr.robinlovelace.net/geometric-operations.html

    st_buffer() 的第三个也是最后一个参数是 nQuadSegs,表示“每个象限的段数”,默认设置为 30(表示缓冲区创建的圆由 4×30=120 行组成)。这个参数很少需要设置。它可能有用的不寻常情况包括当缓冲区操作的输出消耗的内存是一个主要问题(在这种情况下应该减少它)或需要非常高的精度时(在这种情况下应该增加它)。

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2014-10-27
      • 1970-01-01
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多