You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效将Shapefile划分为等面积网格?转换步骤耗时过长

问题:将Shapefile划分为等大小网格时转换耗时过长的优化方法

我需要将一份Shapefile划分为等大小的网格(多边形),当前的实现步骤如下:

# 加载Shapefile
library(geodata)
library(terra)

can_shp <- geodata::gadm('CAN', level = 1, path = file.path(dir_ls$input, 'shapefile'))
can_shp <- can_shp[can_shp$NAME_1 == 'British Columbia']

# 根据Shapefile范围创建栅格
temp_raster <- terra::rast(xmin = ext(can_shp)[1], 
                           xmax = ext(can_shp)[2], 
                           ymin = ext(can_shp)[3], 
                           ymax = ext(can_shp)[4],
                           resolution = 0.008333333,
                           crs = crs(can_shp),
                           val = 0)

# 保留Shapefile边界内的栅格单元
temp_raster <- terra::mask(temp_raster, can_shp)
temp_raster <- terra::crop(temp_raster, can_shp)  

# 将栅格转换为网格多边形
temp_grid <- as.polygons(temp_raster, trunc = FALSE, dissolve = FALSE) 

最终得到的temp_grid即为我需要的、位于边界内的等大小网格,但最后一步转换耗时数小时,请问我的操作是否存在问题,或是有更高效的实现方法?


优化方案

当前方法的核心问题

你当前流程的瓶颈在于高分辨率栅格转多边形的步骤:0.008333333度的分辨率下,不列颠哥伦比亚省范围内的栅格单元数量超过百万级,as.polygons需要逐个将栅格单元转换为多边形几何对象,内存开销和计算量都极大,因此耗时极长。

更高效的实现方法

1. 跳过栅格环节,直接生成矢量网格(推荐)

直接基于目标Shapefile的范围生成矢量网格,再裁剪到边界内,完全避免栅格转多边形的巨大开销:

library(geodata)
library(terra)

# 加载并筛选不列颠哥伦比亚省数据
can_shp <- geodata::gadm('CAN', level = 1, path = file.path(dir_ls$input, 'shapefile'))
can_shp <- can_shp[can_shp$NAME_1 == 'British Columbia']

# 定义网格分辨率
grid_res <- 0.008333333

# 直接生成覆盖目标区域的矢量网格
grid <- terra::vect(ext(can_shp), res = grid_res, crs = crs(can_shp))

# 裁剪并保留边界内的网格
grid <- terra::crop(grid, can_shp)
grid <- terra::intersect(grid, can_shp)

2. 若保留原流程,优化栅格转多边形参数

如果必须沿用栅格中转的方式,可通过以下方式提速:

  • 设置trunc = TRUE:减少多边形顶点数量,降低计算和内存负载
  • 使用filename参数直接写入文件:避免在内存中存储大量多边形对象,减少内存交换
temp_grid <- as.polygons(temp_raster, trunc = TRUE, dissolve = FALSE, filename = "bc_grid.shp", overwrite = TRUE)

3. 内存优化

确保R进程有足够的内存分配:

  • Windows系统可通过memory.limit(size = 16384)(单位为MB)调整内存上限
  • Linux/macOS可通过启动R时设置环境变量R_MAX_VSIZE提升内存限制,避免因内存不足导致的磁盘交换拖慢速度

内容的提问来源于stack exchange,提问作者89_Simple

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:45:43