我正在尝试使用Python + GDAL访问ESRI文件地理数据库中的矢量数据集。
我已经使用文件地理数据库API成功编译了GDAL。由于输入

ogrinfo --formats


显示FileGDB驱动程序并输入

ogrinfo myfilegdb.gdb 


,FileGDB驱动程序正常工作有关数据库内容的正确信息。

但是,我找不到如何在Python中访问内容本身的方法。
要访问shapefile,我会这样写:

driver = ogr.GetDriverByName('ESRI Shapefile')
ds = driver.Open('shapefile.shp', 0)


访问FileGDB要素类时,我会假设使用以下命令: >
driver = ogr.GetDriverByName('FileGDB')
ds = driver.Open('myfilegdb.gdb/feature_class', 0)


,但这似乎不起作用,因为它无法识别/定位数据集。有谁知道如何从ESRI FileGDB调用单个要素类。

我在Ubuntu 12.04 x64上使用Python 2.7,GDAL 1.9.1,filegdb api 1.2。感谢您的任何建议!

评论

您能给我一些想法来安装OGR for FileGDB驱动程序吗?

#1 楼

你快到了。这是在Windows 7,Python 2.6.5 32位和GDAL 1.9.0上:一旦打开FGDB,请使用GetLayer来获取要素类。

评论


一旦您知道它似乎很合逻辑:-)非常感谢,您的解决方案将助您一臂之力。

–尼尔斯
2012年9月4日于13:46

#2 楼

我想补充一点,“ FileGDB”是GDAL软件包http://www.gdal.org/drv_filegdb.html中可能未附带的专有驱动程序。这将导致GetDriverByName返回None

还有“ OpenFileGDB”驱动程序,该驱动程序是只读的,默认情况下包含在http://www.gdal.org/drv_openfilegdb.html

>>> from osgeo import ogr
>>> driver = ogr.GetDriverByName("OpenFileGDB")


#3 楼

如果您使用fiona和geopandas,则更加简单直观

import fiona 
import geopandas as gpd

# Get all the layers from the .gdb file 
layers = fiona.listlayers(gdb_file)

for layer in layers:
    gdf = gpd.read_file(gdb_file,layer=layer)
    # Do stuff with the gdf


注意:fiona使用gdal,geopandas使用fiona

另请参阅Python中的地理数据库文件层

评论


先决条件:pip install“ GDAL-3.0.2-cp36-cp36m-win_amd64.whl” #see here lfd.uci.edu/~gohlke/pythonlibs,pip install wheels,pip install pipwin,pipwin install numpy,pipwin install pandas ,pipwin匀称安装,pipwin安装gdal,pipwin安装fiona,pipwin安装pyproj,pipwin安装6,pipwin安装rtree,pipwin安装geopandas,检查python在您的环境路径中,在GDAL CPx.y中显示了Python版本32位系统使用32位,逗号表示换行

– Mohsen Sichani
19年11月25日在19:18