2015-03-31 39 views
7

我希望能夠創建覆蓋另一個SpatialPolygon的SpatialPolygons對象(這是一個六邊形網格)。如何在R中生成六角網格

我希望所有的六邊形都有1km的直徑(理想情況下,我可以改變這一點),並將所有的六邊形一起覆蓋整個物體。只有以下方法似乎涵蓋它的少量...

以下是使用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) 

任何幫助一如既往,非常感謝......

回答

11

更換meuse.sr與一些緩衝版本,如rgeos::gBuffer(meuse.sr, width = 2000)在調用spsample。下面是僅選擇交叉六邊形一個完整的例子:

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

我得到這個錯誤:> HexPts <-spsample(rgeos :: gBuffer(meuse.sr,2000),類型=「六角「,cellsize = 1000) spsample中的錯誤(rgeos :: gBuffer(meuse.sr,2000),type =」hexagonal「,: 在爲函數'spsample'選擇方法時評估參數'x'時出錯:錯誤:is.logical(byid)不是TRUE – 2015-03-31 17:55:39

+0

錯字,對不起,剛剛更正(忘記了寬度=) – 2015-03-31 18:24:24

+0

謝謝!非常好......但是我如何得到它以便我只獲得與底層相交的多邊形空間多邊形,因爲在width = 2000的時刻,有一些多邊形根本不與底層對象相交...... – 2015-04-01 07:47:15