问题
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...
回答1:
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)
来源:https://stackoverflow.com/questions/29374004/how-do-i-generate-a-hexagonal-grid-in-r