如何生成所有国家的 10x10km 网格单元?
How to generate 10x10km grid cells of all countries?
早上好,
我目前正在尝试将国家(无海洋)的 10x10(或 5x5)公里网格单元裁剪到边界。例如,参见尼日利亚的栅格栅格:Nigeria Grid Cells
计划 A: 我的计划是使用带有国家边界的 GADM 0 级地图 (https://gadm.org/data.html) 并相应地创建网格单元。
虽然 st-grid 命令很简单,但计算起来需要很长时间(尼日利亚 >30 小时)
regions <- st_read("data/region/gadm36_0.shp") %>%
st_transform("+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
grid<- st_make_grid(regions %>%
st_union(), cellsize = c(10000, 10000), square = T)
即使使用 R Studio Pro 服务器也需要很多时间...
有什么办法把它固定起来吗?
计划 B: 我的第二个计划是使用来自 https://figshare.com/articles/Global_10_x_10-km_grids_suitable_for_use_in_IUCN_Red_List_of_Ecosystems_assessments_vector_and_raster_format_/4653439 的 10x10km 网格栅格
并将其剪辑到 GADM 国家/地区形状文件。
问题是我无法将栅格数据文件加载到 R 中并使用 sf 包中的裁剪和掩码命令使其 运行。 有人知道如何制作这个 运行 吗?
PLAN C: 是否有针对已经存在的国家/地区的 10x10km 网格栅格文件?我知道 PRIO 的 50x50 网格,但没有找到好的解决方案。
非常感谢,希望你能帮我解决这个问题!
参考 PLAN A,而不是 sf::st_make_grid
,您可以使用 stars::st_as_stars
创建光栅,然后使用 sf::st_as_sf
将其转换为多边形,尼日利亚需要 1-2 秒:
library(sf)
library(stars)
library(rnaturalearth)
# Polygon
world = ne_countries(scale = "small", returnclass = "sf")
world = st_transform(world, "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
pol = world[world$sovereignt == "Nigeria", ]
# Make grid
grid = st_as_stars(st_bbox(pol), dx = 10000, dy = 10000)
grid = st_as_sf(grid)
grid = grid[pol, ]
# Plot
plot(st_geometry(grid), axes = TRUE, reset = FALSE)
plot(st_geometry(world), border = "grey", add = TRUE)
plot(st_geometry(pol), border = "red", add = TRUE)
参考PLAN B,10公里的光栅可以导入R,同样使用包stars
进行裁剪,如下:
library(sf)
library(stars)
library(rnaturalearth)
# Raster
r = read_stars("AOOGrid_10x10kmRast/AOOGrid_10x10km.img")
# Polygon
world = ne_countries(scale = "small", returnclass = "sf")
world = st_transform(world, st_crs(r))
pol = world[world$sovereignt == "Nigeria", ]
# Crop
r = r[pol]
# Plot
plot(r, axes = TRUE, reset = FALSE)
plot(st_geometry(world), border = "grey", add = TRUE)
plot(st_geometry(pol), add = TRUE)
早上好,
我目前正在尝试将国家(无海洋)的 10x10(或 5x5)公里网格单元裁剪到边界。例如,参见尼日利亚的栅格栅格:Nigeria Grid Cells
计划 A: 我的计划是使用带有国家边界的 GADM 0 级地图 (https://gadm.org/data.html) 并相应地创建网格单元。
虽然 st-grid 命令很简单,但计算起来需要很长时间(尼日利亚 >30 小时)
regions <- st_read("data/region/gadm36_0.shp") %>%
st_transform("+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
grid<- st_make_grid(regions %>%
st_union(), cellsize = c(10000, 10000), square = T)
即使使用 R Studio Pro 服务器也需要很多时间...
有什么办法把它固定起来吗?
计划 B: 我的第二个计划是使用来自 https://figshare.com/articles/Global_10_x_10-km_grids_suitable_for_use_in_IUCN_Red_List_of_Ecosystems_assessments_vector_and_raster_format_/4653439 的 10x10km 网格栅格 并将其剪辑到 GADM 国家/地区形状文件。
问题是我无法将栅格数据文件加载到 R 中并使用 sf 包中的裁剪和掩码命令使其 运行。 有人知道如何制作这个 运行 吗?
PLAN C: 是否有针对已经存在的国家/地区的 10x10km 网格栅格文件?我知道 PRIO 的 50x50 网格,但没有找到好的解决方案。
非常感谢,希望你能帮我解决这个问题!
参考 PLAN A,而不是 sf::st_make_grid
,您可以使用 stars::st_as_stars
创建光栅,然后使用 sf::st_as_sf
将其转换为多边形,尼日利亚需要 1-2 秒:
library(sf)
library(stars)
library(rnaturalearth)
# Polygon
world = ne_countries(scale = "small", returnclass = "sf")
world = st_transform(world, "+proj=robin +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs")
pol = world[world$sovereignt == "Nigeria", ]
# Make grid
grid = st_as_stars(st_bbox(pol), dx = 10000, dy = 10000)
grid = st_as_sf(grid)
grid = grid[pol, ]
# Plot
plot(st_geometry(grid), axes = TRUE, reset = FALSE)
plot(st_geometry(world), border = "grey", add = TRUE)
plot(st_geometry(pol), border = "red", add = TRUE)
参考PLAN B,10公里的光栅可以导入R,同样使用包stars
进行裁剪,如下:
library(sf)
library(stars)
library(rnaturalearth)
# Raster
r = read_stars("AOOGrid_10x10kmRast/AOOGrid_10x10km.img")
# Polygon
world = ne_countries(scale = "small", returnclass = "sf")
world = st_transform(world, st_crs(r))
pol = world[world$sovereignt == "Nigeria", ]
# Crop
r = r[pol]
# Plot
plot(r, axes = TRUE, reset = FALSE)
plot(st_geometry(world), border = "grey", add = TRUE)
plot(st_geometry(pol), add = TRUE)