2015-03-31 12 views
7

Vorrei poter creare un oggetto SpatialPolygons (che è una griglia esagonale) che copre un altro SpatialPolygon.Come generare una griglia esagonale in R

Vorrei che tutti gli esagoni avessero un diametro di 1 km (idealmente posso variare) e per tutti gli esagoni insieme per coprire l'intero oggetto. Il metodo seguito solo sembra coprire una piccola quantità di esso ...

Qui di seguito è il mio tentativo utilizzando il pacchetto 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) 

Qualsiasi aiuto come sempre è molto apprezzato ...

risposta

11

sostituire meuse.sr con una versione con buffer, come rgeos::gBuffer(meuse.sr, width = 2000) nella chiamata a spsample. Ecco un esempio completo che seleziona solo gli esagoni che si intersecano:

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

ottengo questo errore:> HexPts <-spsample (rgeos :: gbuffer (meuse.sr, 2000), type = "esagonale ", cellsize = 1000) Errore nello spsample (rgeos :: gBuffer (meuse.sr, 2000), type =" hexagonal ",: errore nel valutare l'argomento 'x' nella selezione di un metodo per la funzione 'spsample': Errore : is.logical (byid) non è VERO –

+0

typo, mi dispiace, appena corretto (ho dimenticato la larghezza =) –

+0

Grazie! Molto buono ... ma come ottenerlo in modo tale da ottenere solo poligoni che si intersecano con il sottostante poligono spaziale, perché al momento con width = 2000, ci sono alcuni poligoni che non si intersecano con l'oggetto sottostante ... –

Problemi correlati