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

如何用R将栅格转为Geodatabase(GDB)并读取?求推荐相关R包

在R中实现栅格转地理数据库(GDB)并读取

要实现类似ArcGIS「栅格转面」的功能,你可以通过terra完成栅格到矢量面的转换,再用sf将矢量写入FileGDB;读取GDB时直接用sf即可,gridcode列会被完整保留。

完整代码示例

# 加载依赖包
library(terra)
library(sf)

# 读取示例栅格数据
f <- system.file("extdata/asia.tif", package = "tidyterra")
x <- rast(f)

# 1. 栅格转矢量面(自动生成gridcode列)
# dissolve=FALSE保留每个栅格单元的独立面,TRUE合并同值栅格
raster_poly <- as.polygons(x, dissolve = FALSE)
raster_poly_sf <- st_as_sf(raster_poly)

# 2. 将矢量写入FileGDB
# 替换为你的目标GDB路径
st_write(raster_poly_sf, 
         dsn = "my_raster_output.gdb", 
         layer = "raster_polygons", 
         driver = "OpenFileGDB")

# 3. 读取GDB中的图层
mygdb <- st_read(dsn = "my_raster_output.gdb", layer = "raster_polygons")

# 查看GDB内的图层信息
st_layers("my_raster_output.gdb")

# 可视化验证
plot(st_geometry(mygdb))

关键细节

  • terra::as.polygons():这是实现栅格转面的核心函数,转换后自动生成gridcode列存储原栅格的数值;dissolve参数根据需求选择,需要保留每个栅格单元时设为FALSE。
  • sf::st_write():写入GDB必须指定driver = "OpenFileGDB",确保正确识别FileGDB格式。
  • 读取后的mygdb对象包含完整的gridcode列,可直接用于后续计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:21