代码之家  ›  专栏  ›  技术社区  ›  h.l.m

如何在R中生成六边形网格

sp r
  •  15
  • h.l.m  · 技术社区  · 10 年前

    我希望能够创建一个覆盖另一个SpatialPolygon的SpatialPolygons对象(这是一个六边形网格)。

    我希望所有六边形的直径为1公里(理想情况下,我可以改变这个),并且所有六边形一起覆盖整个物体。下面的方法似乎只涵盖了一小部分。。。

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

    一如既往的任何帮助都非常感谢。。。

    1 回复  |  直到 10 年前
        1
  •  19
  •   Edzer Pebesma    10 年前

    代替 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