【问题标题】:Splitting a geo polygon into multiple polygons of specific area将地理多边形拆分为特定区域的多个多边形
【发布时间】:2018-08-05 05:49:54
【问题描述】:

我正在尝试将 R 上的一个多边形分割成多个面积相等的多边形。

我有多边形的边界,我需要使用 R 将其分割成 1 公里乘 1 公里的盒子。我想知道这是否可以使用 R。

例如:

x <- extent(c(40.97453103, 41.06321504, -92.47427103, -92.36617044))
plot(x)

这将创建一个具有给定边界的框。 我正在尝试在 1 公里乘 1 公里的范围内创建多个框,然后使用 ggmap 将其合并到谷歌地图上。

【问题讨论】:

  • 有趣的问题。您将遇到的一个问题是您的范围框不完全是 1 公里的单位(我在范围中测试的坐标彼此相距 9.075 公里)。那么开始 1km 盒子的参考点在哪里呢? IE。您将拥有 9 个完整的 1 公里方格,然后是一个仅 0.075 公里范围的小溢流箱(对于我测试的一侧)。
  • 这是一个很好的观察。参考将在框的边缘。在这种情况下,我将不得不忽略 0.075 公里。
  • 下面的答案是正确的方向。为什么不将范围修整到 9km x 9km 然后使用下面的答案。您可以使用 geosphere 包 destPoint 确定修剪坐标。
  • 我的另一个想法是光栅化 (raster() ) 并在修剪后使用 res() 的分辨率设置。

标签: r geospatial polygon


【解决方案1】:

您可以使用sf 包中的st_make_grid 函数,但我们不知道您的坐标参考系统和使用的单位。 这是一个任意大小的网格示例:

library(sf)
#> Linking to GEOS 3.5.1, GDAL 2.1.3, proj.4 4.9.2
x <- cbind(c(40.97453103, 41.06321504, 41.06321504, 40.97453103, 40.97453103),
           c(-92.47427103, -92.47427103, -92.36617044, -92.36617044, -92.47427103))

x <- st_sf(st_sfc(st_polygon(list(x))))
grid <- st_make_grid(x, cellsize = c(0.01,0.01))

par(mar = c(1,1,1,1))
plot(x)
plot(grid, add = T)

reprex package (v0.2.0) 于 2018 年 2 月 25 日创建。

【讨论】:

  • 是的,我就是这么想的。这是个好主意,但请注意这一点,因为正如您所说,这些框是任意大小,而不是 1kmx1km
  • 非常感谢您的回复。我想我可以用它来完成我的小项目!!
猜你喜欢
  • 2018-05-08
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 2017-04-19
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多