Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I generate a Hexagonal grid in R

Tags:

r

sp

I would like to be able to create a SpatialPolygons object (which is a Hexagonal grid) that covers another SpatialPolygon.

I would like all the Hexagons to have a diameter of 1km (ideally i can vary this) and for all the hexagons together to cover the whole object. The method below only seems to cover a small amount of it...

Below is my attempt using the sp package:

require(sp)
data(meuse.riv)
meuse.sr = SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)), "x")))
plot(meuse.sr)

HexPts <-spsample(meuse.sr,type="hexagonal",cellsize=1000)
HexPols <- HexPoints2SpatialPolygons(HexPts)
plot(HexPols, add=TRUE)

Any help as always is greatly appreciated...

like image 866
h.l.m Avatar asked Mar 31 '15 16:03

h.l.m


1 Answers

replace meuse.sr with some buffered version, like rgeos::gBuffer(meuse.sr, width = 2000) in the call to spsample. Here is a full example that selects only the intersecting hexagons:

require(sp)
data(meuse.riv)
meuse.sr = SpatialPolygons(list(Polygons(list(Polygon(meuse.riv)), "x")))
plot(meuse.sr)

library(rgeos)
meuse.large = gBuffer(meuse.sr, width = 2000)
HexPts <-spsample(meuse.large, type="hexagonal", cellsize=1000)
HexPols <- HexPoints2SpatialPolygons(HexPts)
plot(HexPols[meuse.sr,], add=TRUE)

enter image description here

like image 71
Edzer Pebesma Avatar answered Oct 14 '22 21:10

Edzer Pebesma