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

Posted

技术标签:

【中文标题】如何在 R 中生成六边形网格【英文标题】:How do I generate a Hexagonal grid in R 【发布时间】:2015-06-05 02:37:08 【问题描述】:

我希望能够创建一个覆盖另一个 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】:

meuse.sr 替换为一些缓冲版本,例如对spsample 的调用中的rgeos::gBuffer(meuse.sr, width = 2000)。这是一个仅选择相交六边形的完整示例:

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)

【讨论】:

我得到这个错误:> HexPts 谢谢!这很好......但是我如何得到它,以便我只得到与底层空间多边形相交的多边形,因为在宽度 = 2000 的那一刻,有一些多边形根本不与底层对象相交。 .. 将完整示例添加到答案中。 有没有办法使用sf 做到这一点,而无需从sp 转换到sp 顺便说一下here这个话题也有一篇不错的帖子。

以上是关于如何在 R 中生成六边形网格的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 numpy 数组在搅拌机中生成网格数组?

在python中生成多边形范围内的随机点数

如何使用 plt.imshow 和 torchvision.utils.make_grid 在 PyTorch 中生成和显示图像网格?

如何在 R 中生成 GUID?

如何在 R 中生成对象的排列或组合?

如何在 R 中生成许多最独特的颜色?