R 如何在线条周围创建非重叠缓冲区?

R 如何在线条周围创建非重叠缓冲区?,r,buffer,line,polygon,R,Buffer,Line,Polygon,我想创建非重叠多边形,这些多边形表示区域中每条线距离区域内的点最近的区域,最大距离为阈值距离(在本例中为10m)。可复制的例子加上我下面想法的草图 #关于缓冲区类型的问题 图书馆(sf) #>链接到GEOS 3.7.1、GDAL 2.4.2、项目5.2.0 图书馆(stplanr) 图书馆(tmap) l1=stplanr::osm_net_示例[1,] l=stplanr::osm_net_示例[l1,] #>虽然坐标是经度/纬度,但st_相交假定它们是平面的 lb=预计的地理位置(shp=l

我想创建非重叠多边形,这些多边形表示区域中每条线距离区域内的点最近的区域,最大距离为阈值距离(在本例中为10m)。可复制的例子加上我下面想法的草图

#关于缓冲区类型的问题
图书馆(sf)
#>链接到GEOS 3.7.1、GDAL 2.4.2、项目5.2.0
图书馆(stplanr)
图书馆(tmap)
l1=stplanr::osm_net_示例[1,]
l=stplanr::osm_net_示例[l1,]
#>虽然坐标是经度/纬度,但st_相交假定它们是平面的
lb=预计的地理位置(shp=l,fun=st\U缓冲区,距离=10)
lb_平面=geo_投影(shp=l,fun=st_缓冲区,距离=10,endCapStyle=“平面”)
绘图(st_几何体(l))
绘图(标准几何体(lb),颜色=sf.颜色(nrow(l),alpha=0.5),相加=真)

绘图(st_几何体(l))
绘图(st_几何图形(lb_平面),颜色=sf.颜色(nrow(l),alpha=0.5),加法=真)

由(v0.3.0)于2019-11-07创建

这是草图(不是我最好的艺术作品!):


也许我不明白这一点,但你要找的是像在形状上调用
st_difference
那样简单吗?我不这么认为,因为目标是生成多边形来表示线对之间的中间点
st_difference
将删除我认为大部分的粉红色多边形。如果有一种方法可以产生
st_差异
从线对中删除相等的区域,这会有所帮助。我认为解决方案可能涉及到
st_voronoi
是的,如果重叠空间除以到线段的最小距离,那么你在做一种基于线段而不是点的“voronoi”。可以通过在直线上生成密集点、执行voronoi、按直线ID取消直线、剪辑到缓冲区……这里的想法我认为可以解决这个问题:也许我不理解这一点,但是,您所寻找的是否像调用形状上的
st_difference
一样简单?我不这么认为,因为目标是生成多边形来表示线对之间的中间点
st_difference
将删除我认为大部分的粉红色多边形。如果有一种方法可以产生
st_差异
从线对中删除相等的区域,这会有所帮助。我认为解决方案可能涉及到
st_voronoi
是的,如果重叠空间除以到线段的最小距离,那么你在做一种基于线段而不是点的“voronoi”。通过在线条上生成密集点、执行voronoi、按线条ID取消线条、剪辑到缓冲区,可能是可以伪造的……我认为这里的想法可以解决这个问题: