如何解决R:将给定的 Box 分成 X 个具有给定对角线的新框
g_bBox<-c(xmin=5.98865807458,ymin=47.3024876979,xmax=15.0169958839,ymax=54.983104153)
我想将 bBox 分成 (x) 个 bBox,每个 bBox 的对角线为 50 公里。
对角线的长度可能会有所不同(+/-10km)。
中 BBox 的最大数量我想要的结果最好是带有 xmin,ymin,xmax,ymax 列的数据框。
我该怎么做?
解决方法
我会建议以下解决方案。
加载包
library(sf)
#> Linking to GEOS 3.9.0,GDAL 3.2.1,PROJ 7.2.1
加载数据
g_bbox <- st_bbox(c(xmin = 5.98865807458,ymin = 47.3024876979,xmax = 15.0169958839,ymax = 54.983104153),crs = 4326)
使用投影坐标将 bbox 转换为多边形
g_poly <- st_as_sfc(g_bbox) %>%
st_transform(32632)
剧情
mapview::mapview(g_poly)
创建网格
g_grid <- st_make_grid(g_poly,cellsize = 50000 / sqrt(2))
检查一条对角线
sqrt(
(st_bbox(g_grid[[1]])[3] - st_bbox(g_grid[[1]])[1]) ^ 2 # x axis
+
(st_bbox(g_grid[[1]])[4] - st_bbox(g_grid[[1]])[2]) ^ 2 # y axis
)
#> xmax
#> 50000
剧情
mapview::mapview(g_grid)
估计所有bbox
head(do.call("rbind",lapply(g_grid %>% st_transform(4326),st_bbox)))
#> xmin ymin xmax ymax
#> [1,] 5.970445 47.30249 6.455849 47.63163
#> [2,] 6.440454 47.31382 6.923301 47.64117
#> [3,] 6.910729 47.32325 7.390967 47.64877
#> [4,] 7.381223 47.33077 7.858798 47.65445
#> [5,] 7.851885 47.33638 8.326746 47.65819
#> [6,] 8.322667 47.34009 8.794764 47.66001
由 reprex package (v2.0.0) 于 2021 年 6 月 30 日创建
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。