[R-sig-Geo] How to do square buffers around spatial points

Barry Rowlingson b.rowlingson at lancaster.ac.uk
Thu Aug 25 15:36:08 CEST 2016


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:
> 2016-08-25 13:01 GMT+01:00 Manuel Spínola <mspinola10 at gmail.com>:
>> Dear list members,
>>
>> Ho can I do square buffers around spatial points?
>
> 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



More information about the R-sig-Geo mailing list