Skip to content

How to do square buffers around spatial points

5 messages · Barry Rowlingson, Alexandre Villers, Manuel Spínola

#
Dear list members,

Ho can I do square buffers around spatial points?

Best,

Manuel
#
2016-08-25 13:01 GMT+01:00 Manuel Sp?nola <mspinola10 at gmail.com>:
Break it down:

1. For each point compute the coordinates of the four corners of the
square by adding half the width of your square.
2. Construct a Polygon from those four points for each of your source points.
3. Build a SpatialPolygons object from all your Polygons.

How far can you get with it now?

Barry
#
You can try the rgeos::gBuffer() with capStyle='SQUARE'
p<-SpatialPoints(matrix(c(1,1), ncol=2))
plot(p)
plot(gBuffer(p, capStyle="SQUARE",width=0.1), add=T)

Would that fit you ?

regards

Alex
#
Here's a one-liner:

# for some SpatialPointsDataFrame `d`, and some half-width `w`, this
produces a set of square SpatialPolygons
# with square height and width equal to 2*w:

polys = SpatialPolygons(apply(apply(coordinates(d),1,function(r){cbind(r+c(w,w),r+c(w,-w),r+c(-w,-w),r+c(-w,w),r+c(w,w))}),2,function(v){Polygons(list(Polygon(matrix(v,ncol=2,byrow=TRUE))),ID=runif(1))}))

 > plot(polys)
 > plot(d,add=TRUE)

Barry



On Thu, Aug 25, 2016 at 2:11 PM, Barry Rowlingson
<b.rowlingson at lancaster.ac.uk> wrote:
#
Thank you very much for both answers.

Manuel

2016-08-25 7:36 GMT-06:00 Barry Rowlingson <b.rowlingson at lancaster.ac.uk>: