【发布时间】:2018-12-21 13:23:06
【问题描述】:
我有一个由纬度和经度给出的矩形,用于所述矩形的左上角和右下角。我想把这个矩形分成几个较小的矩形。较小的矩形也应该由左上角和右下角的坐标给出。
到目前为止,我可以通过创建占位符列表然后运行嵌套的 for 循环来创建较小的矩形。
我不认为这是一个有效的解决方案,并希望使代码更高效。
输出最好是list 或data.table。 data.table 的每一行可以有 4 列指定坐标。
到目前为止我的代码:
# the big rectangle i want to split
big_rectangle <- list(top_left = c("lat" = 50.183297, "lon" = 14.223024),
bottom_right = c("lat" = 49.945189, "lon" = 14.706829))
# sequence along the sides of the rectangle:
lat <- seq(from = big_rectangle[["bottom_right"]]["lat"],
to = big_rectangle[["top_left"]]["lat"], length = 20)
lon <- seq(from = big_rectangle[["top_left"]]["lon"],
to = big_rectangle[["bottom_right"]]["lon"], length = 20)
# create a list of small rectangles, each given by its top left and bottom right corners:
holder <- vector("list", (length(lat) - 1) * (length(lon) - 1))
iterator <- 1
for (i in 1:(length(lat) - 1))
{
for (j in 1:(length(lon) - 1))
{
holder[[iterator]] <- list(top_left = c("lat" = lat[i + 1], "lon" = lon[j]), bottom_right = c("lat" = lat[i], "lon" = lon[j+1]))
iterator = iterator + 1
}
}
【问题讨论】:
-
Ups,示例代码中有错字。正在修复
-
这个例子现在应该已经修复了。
-
所以您正试图找到每个具有
lat和lon组合顶点的矩形? -
不是每个。我只需要将大矩形分解成一些较小的、不重叠的矩形。
标签: r