【发布时间】:2022-09-28 16:21:15
【问题描述】:
我需要使用所有陆地区域的 10 分钟(1/12 度)全球网格。网格是在 R 中使用包 (sf) 生成的。网格将仅限于世界的陆地区域。进一步的下游分析需要网格 ID。生成网格的代码如下:
library(tidyverse)
library(sf)
sf_use_s2(F)
birds <- st_read(\'BOTW_breeding_valid_union.gpkg\') ## This is just an examplary shapefile I use to set a bbox.
bbox <- st_bbox(birds)
bbox[1] <- -180
bbox[2] <- -90
bbox[3] <- 180
bbox[4] <- 90
bbox <- bbox %>% st_as_sfc
grid <- st_make_grid(bbox, cellsize = 1/12) %>% st_as_sf() %>% mutate(grid_ID = row_number())
land <- st_read(\'ne_10m_land.shp\')
land_grids <- st_intersects(grid, land) %>% as.data.frame() %>% rename(grid_ID = row.id)
grid <- grid %>% left_join(land_grids, by = \"grid_ID\") %>% filter(col.id == \"1\") %>% select(grid_ID) %>%
st_write(\'global_10m_grid.gpkg\')
现在我需要绘制它以检查它并进行进一步的数据映射(网格将具有值)。我使用包 tmap:
grid <- st_read(\'global_10m_grid.gpkg\')
bitmap(\'test_grid.png\')
tm_shape(grid) + tm_fill(col = \'red\')
dev.off()
但是,由于个人计算机上的大小(加载时间非常长[或者我希望它原则上尚未加载])或具有交互式外壳的集群(dev.off产生了一个空文件)。
有没有办法更有效地绘制这个?
-
你试过
tmap_mode(\"view\")吗? -
现在尝试,但已经运行了大约 15 分钟,仍然没有在 RStudio 中生成绘图。
-
没运气!还是比较低效,拿不到全局剧情。
-
您需要网格作为矢量多边形吗?在这种情况下,光栅对象不够吗?您可以将任何数据栅格化为栅格单元并绘制它。
标签: r gis large-data sf tmap