2015-03-31 9 views
7

Chciałbym móc utworzyć obiekt SpatialPolygons (który jest sześciokątną siatką), który obejmuje inny SpatialPolygon.Jak wygenerować sześciokątną siatkę w R

Chciałbym, aby wszystkie sześciokąty miały średnicę 1 km (najlepiej mogę to zmienić) i dla wszystkich sześciokątów razem, aby pokryć cały obiekt. Poniższa metoda wydaje się obejmować tylko niewielką ilość tego ...

Poniżej moja próba przy użyciu pakietu sp:

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) 

Każda pomoc jak zawsze mile widziana ...

Odpowiedz

11

zastąpić meuse.sr z niektórymi buforowanymi wersjami, takimi jak rgeos::gBuffer(meuse.sr, width = 2000) w wywołaniu spsample. Oto pełna przykładów, które wybiera tylko przecinające sześciokątów:

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

+0

mi ten błąd:> HexPts <-spsample (rgeos :: gBuffer (meuse.sr, 2000), type = "sześciokątne ", cellize = 1000) Błąd w spsample (rgeos :: gBuffer (meuse.sr, 2000), type =" hexagonal ",: błąd w ocenie argumentu" x "przy wyborze metody dla funkcji" spsample ": Błąd : is.logical (byid) nie jest PRAWDZIWĄ –

+0

literówka, przepraszam, właśnie poprawiono (zapomniałem o szerokości =) –

+0

Dziękuję! To bardzo dobrze ... ale jak to uzyskać, aby uzyskać tylko wielokąty, które przecinają się z podstawową przestrzenny wielokąt, ponieważ w tej chwili o szerokości = 2000, istnieją pewne wielokąty, które wcale nie przecinają się z obiektem bazowym ... –

Powiązane problemy