- Download the SDK from ESRI's website http://resources.arcgis.com/content/geodatabases/10.0/file-gdb-api
- Extract the SDK, and put the contents of the directory in a known location, I used
~/local/filegdb. Here's an example path to one of the files:~/local/filegdb/lib/libFileGDBAPI.dylib - I use
~/local/filegdbso it can stay isolated in it's own place. You can put it anywhere, but the next few steps might be different. - Go into the directory containing the FileGDB SDK, e.g.
~/local/filegdb - ESRI built these dylib's using
@rpath's, so to avoid needing to mess withDYLD_LIBRARY_PATH, I updated the@rpath's usinginstall_name_tool. There might be a more elegant way to handle this. If so, comments are welcome! - Here are the commands I used to patch the dylibs, this is not required if you want to use
DYLD_LIBRARY_PATHyourself:
install_name_tool -id "$(pwd)/lib/libFileGDBAPI.dylib" ./lib/libFileGDBAPI.dylib
install_name_tool -change "@rpath/libfgdbunixrtl.dylib" "$(pwd)/lib/libfgdbunixrtl.dylib" ./lib/libFileGDBAPI.dylib
install_name_tool -id "$(pwd)/lib/libfgdbunixrtl.dylib" ./lib/libfgdbunixrtl.dylib
- To verify the paths, use
otool -L lib/libFileGDBAPI.dylibandotool -L lib/libfgdbunixrtl.dyliband make sure the paths are correct - We need to make some changes to the
configure.inscript for GDAL now, since the FileGDB config script hasn't yet been updated for the OSX FileGDB SDK - In the GDAL source root, edit the
configure.inand replace it with: - In the GDAL source root, run
./autogen.shto re-create theconfigurescript - Now run the
configurescript:
./configure --with-fgdb="$HOME/local/filegdb"
- The
configurescript has many options, here is the configure line I use for my custom build: https://gist.github.com/2005091, if you have other GDAL builds on your machine (e.g. homebrew) that you don't want to interfere with, I recommend at least using--prefix="$HOME/local"or some other place on your machine besides/usr/local(default for homebrew) or/opt/local(default for MacPorts). - If it worked properly, you should see in the output of
configureindicatingyesfor FileGDB support - Build it:
`make && make install`
- If everything worked, it's time to test it out! Here's a test file: http://trac.osgeo.org/gdal/raw-attachment/wiki/FileGDB/test_fgdb.gdb.zip
which ogr2ogr # make sure it's the correct ogr2ogr first
ogrinfo --formats # list out the formats
ogrinfo ~/Downloads/test_fgdb.gdb
#convert FileGDB directly to PostGIS
ogr2ogr -f "PostgreSQL" PG:"dbname='somedatabase' host='localhost' port='5432'" ~/Downloads/test_fgdb.gdb
# save your current GDAL so you can put it back if you want cp /Library/Frameworks/GDAL.framework/Versions/1.8/GDAL /Library/Frameworks/GDAL.framework/Versions/1.8/GDAL_orig # symlink the custom GDAL build to the place QGIS looks rm /Library/Frameworks/GDAL.framework/Versions/1.8/GDAL ln -s ~/local/lib/libgdal.dylib /Library/Frameworks/GDAL.framework/Versions/1.8/GDAL
Note: to select one in QGIS, go to Add Vector Layer -> select the Directory radio button -> Select your .gdb directory
I had some problems opening certain FileGDB's. I believe the API only supports FileGDB's created with ArcGIS 10.0+.
More info: http://trac.osgeo.org/gdal/wiki/FileGDB
@zhm Thanks for the quick reply. I rebuilt GDAL, this time taking your advice to not mess with
DYLD_LIBRARY_PATHand set filegdb_api paths explicitly. Now it works! Thanks for your help.