首页 > 解决方案 > 将大星星对象转换为 sf 对象

问题描述

我的最终目标是将土地覆盖栅格 (.tif) 对象转换为 sf 对象,该对象表示栅格网格和每个几何图形中每个单元格的原始值。我已经能够为较小的栅格执行以下操作:

library(sf) 
library(stars)

# import raster using stars
landcover_stars <- read_stars(my_raster.tif)

# convert to sf object using st_as_sf
landcover_grid_sf <- st_as_sf(landcover_stars)

然而,在较大的栅格中(例如,我最大的栅格当前是 11482x12607 像元),read_stars() 函数将栅格导入为“星代理”,这是包处理大型栅格数据集的一个步骤。虽然函数不接受星号代理对象st_as_sf,但可以在函数中设置“proxy = FALSE”。但是,如果我在最大的数据集中执行此操作,则st_as_sf(landcover_stars)使用生成的对象运行会使我的笔记本电脑崩溃 {16 GB RAM,i7 2.70GHz 处理器}。

在将非常大的星形对象转换为 sf 时,有没有办法可以减轻机器上的负载?

另外 - 可能是它实际上是新生成的 sf 对象正在耗尽我的机器吗?

如果您想测试它,这是一个虚拟栅格,整数值随机生成,范围从 1 到 10:

raster(nrows=12000, ncols=12000, xmn=0, xmx=10, vals = floor(runif(12000*12000, min=0, max=11)))

标签: gisrasterspatialsfr-stars

解决方案


推荐阅读