在 shapefile 的一个点周围创建一个缓冲区,该缓冲区从距点的特定距离开始
Create a buffer zone around a point of a shapefile which starts at a specific distance from point
我有一个包含几千个点的 shapefile。我的目标是在每个点周围创建一个缓冲区,从每个点 3 米的半径开始,到 15 米的半径结束。
我通常使用st_buffer(sf包)创建缓冲区,但是如果我使用st_buffer(df, 15)
,该点周围3m圆内的区域也包括在内。
我现在为每个点创建了两个不同的缓冲区,分别为 3 米和 15 米半径。我的想法是将它们绑定到一个包含每个点 ID 和两个缓冲区的数据帧中。但是我缺少一个功能,它可以排除每个点缓冲区的重叠区域,而不排除不同点的重叠缓冲区区域。有人有想法吗?
感谢您在这件事上的帮助。
如果您包含一个具有足够数据的可重现示例以重现问题,将会有所帮助。这确保求解器可以确定他们的修复是正确的并且不会浪费时间。因此,冒着出错的风险,这里有一些代码生成一些点,围绕每个点创建两个缓冲区并使用 st_difference
.
减去它们
library(sf)
mm=matrix(1:6,,2)
points=st_multipoint(mm)
bufsouter = st_buffer(points, 0.5)
bufsinner = st_buffer(points, 0.3)
bufsdiff = st_difference(bufsouter, bufsinner)
plot(bufsdiff, col='red')
我有一个包含几千个点的 shapefile。我的目标是在每个点周围创建一个缓冲区,从每个点 3 米的半径开始,到 15 米的半径结束。
我通常使用st_buffer(sf包)创建缓冲区,但是如果我使用st_buffer(df, 15)
,该点周围3m圆内的区域也包括在内。
我现在为每个点创建了两个不同的缓冲区,分别为 3 米和 15 米半径。我的想法是将它们绑定到一个包含每个点 ID 和两个缓冲区的数据帧中。但是我缺少一个功能,它可以排除每个点缓冲区的重叠区域,而不排除不同点的重叠缓冲区区域。有人有想法吗?
感谢您在这件事上的帮助。
如果您包含一个具有足够数据的可重现示例以重现问题,将会有所帮助。这确保求解器可以确定他们的修复是正确的并且不会浪费时间。因此,冒着出错的风险,这里有一些代码生成一些点,围绕每个点创建两个缓冲区并使用 st_difference
.
library(sf)
mm=matrix(1:6,,2)
points=st_multipoint(mm)
bufsouter = st_buffer(points, 0.5)
bufsinner = st_buffer(points, 0.3)
bufsdiff = st_difference(bufsouter, bufsinner)
plot(bufsdiff, col='red')