Ha habido un montón de preguntas al respecto, pero ninguna de ellas resolvió mi problema.
Tengo una máquina con:
- Windows 7 x64
- Python 3.4.3 x64
- gdal instalado:
gdalinfo --version --> GDAL 1.11.4, released 2016/01/25
; gdal se instaló desde una ruedaGDAL-1.11.4-cp34-none-win_amd64.whl
desde aquí
El GDAL está instalado en C:\Python34\Lib\site-packages\osgeo
. Allí tengo un montón de archivos .exe para archivos gdal y ogr y .pyd.
- fiona instalado: se instaló desde una rueda
Fiona-1.6.3-cp34-none-win_amd64.whl
, desde el mismo sitio web.
Puedo ejecutar este código y se ejecuta con éxito:
import gdal
import ogr
from gdalconst import *
shp = r"C:\Data\GIS\PTS.shp"
driver = ogr.GetDriverByName('ESRI Shapefile')
dataset = driver.Open(shp)
layer = dataset.GetLayer()
layer.GetFeatureCount()
schema = layer.schema
fields = [field.GetName() for field in schema]
feature = layer.GetNextFeature()
También puedo obtener formatos OGR: ogrinfo --formats
imprime un montón de ellos en el cmd de Windows (aunque sin FileGDB allí).
Puedo ejecutar este código y se ejecuta con éxito:
import fiona
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='OpenFileGDB') as source:
print(source.meta)
Sin embargo, este código no se ejecutará:
with fiona.drivers():
with fiona.open(path=r'C:\Data\GIS\TemplateData.gdb', driver='FileGDB') as source:
print(source.meta)
Porque no tengo las bibliotecas compiladas de Esri File GDB que se requieren.
He descargado y desempaquetado FileGDB_API_VS2012_1_3.zip
de la página de descargas de Esri . Como entendí, no hay necesidad de compilar nada ya que el .dll ya está allí.
¿Cuál es el procedimiento correcto para registrar el dll de la API de Esri File GDB para poder usarlos en fiona en mi entorno?
ACTUALIZACIÓN: (basado en la respuesta de Luke)
He descargado el File Geodatabase API 1.4 version for Windows (Visual Studio 2010)
de la página de descargas de Esri . Copié el FileGDB_API_VS2010_1_4\bin64\FileGDBAPI.dll
al C:\Python34\Lib\site-packages\osgeo
. Ahora tengo dos archivos de aquí, ogr_FileGDB.dll
y FileGDBAPI.dll
.
He creado una variable de Windows GDAL_DRIVER_PATH : C:\Python34\Lib\site-packages\osgeo\gdalplugins
. En la PATH
variable, no tengo nada específico de Python excepto el C:\Python34\Lib\site-packages\osgeo
.
Ahora, cuando ejecuto, ogrinfo --formats
obtengo -> "FileGDB" (read/write)
y puedo usar el código Python para trabajar con el controlador FileGDB.
[python install dir]\Lib\site-packages\osgeo
directorio como especifiqué en mi respuesta, no el directorio gdalplugins que menciona en su edición. Solo los complementos del controlador van en ese directorio, no los dlls de terceros.