我有一个大于2GB的地理数据库中包含的功能作为导出的shapefile。我需要在R中运行提取函数,才能将多边形与来自栅格文件的数据一起使用。将功能导出为表格不是解决方案。如何读取Esri文件地理数据库中包含的要素类?

#1 楼

您可以使用rgdal来访问Esri文件地理数据库中的要素类。

require(rgdal)

# The input file geodatabase
fgdb <- "C:/path/to/your/filegeodatabase.gdb"

# List all feature classes in a file geodatabase
subset(ogrDrivers(), grepl("GDB", name))
fc_list <- ogrListLayers(fgdb)
print(fc_list)

# Read the feature class
fc <- readOGR(dsn=fgdb,layer="some_featureclass")

# Determine the FC extent, projection, and attribute information
summary(fc)

# View the feature class
plot(fc)


评论


以前,只有下载了ESRI filegeodatabase API并针对该API编译了GDAL,您才能执行此操作。如果使用OSGeo4W安装GDAL,则可以选择自动执行此操作。但是,这可能在GDAL的更高版本中已更改,并且现在可以是本机的,因此,如果我输入错误,我表示歉意。

–杰弗里·埃文斯(Jeffrey Evans)
2015年6月19日在20:00

@JeffreyEvans这是本地人。

–亚伦♦
15年6月19日在20:04

尽管它是Windows的本机,但其他平台(至少是Debian Jessie)目前似乎并未包含它。

–棉花。洛克伍德
16-4-4在3:21



+1效果很好。知道在GDB中只有一个要素类时,可以省略layer参数。

– hu
18年5月8日在20:29

对于那些对gdb文件一无所知的人,这里的答案中的fgdb是一个目录,而ogrListLayers()可以在此目录下工作...

–MichaelChirico
18/12/7在8:26

#2 楼

就像已经在此答案中发布的那样,现在也可以与sf一起很好地使用:

require(sf)
fc <- sf::st_read("C:/path/to/your/filegeodatabase.gdb", layer = "some_featureclass")


但是写入未实现的fgdb ist(还可以吗?),拥有ArcGIS / ArcMap许可证以及R库arcgisbinding(请参阅https://github.com/R-ArcGIS/r-bridge)

st_drivers()$write[st_drivers()$long_name == "ESRI FileGDB"]
#> [1] FALSE