如何用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
相关产品推荐
相关产品推荐

