# ESRI File Geodatabase (FileGDB)

The FileGDB driver provides read and write access to File Geodatabases (.gdb directories) created by ArcGIS 10 and above.

## Requirements

- FileGDB API SDK
- OGR >= 1.9.0

## Bulk feature loading (OGR >= 1.9.2)

The FGDB_BULK_LOAD configuration option can be set to YES to speed-up feature insertion (or sometimes solve problems when inserting a lot of features (see http://trac.osgeo.org/gdal/ticket/4420). The effect of this configuration option is to cause a write lock to be taken and a temporary disabling of the indexes. Those are restored when the datasource is closed or when a read operation is done.

## Dataset Creation Options

None.

## Layer Creation Options

- FEATURE_DATASET: When this option is set, the new layer will be created inside the named FeatureDataset folder. If the folder does not already exist, it will be created.
- GEOMETRY_NAME: Set name of geometry column in new layer. Defaults to "SHAPE".
- OID_NAME: Name of the OID column to create. Defaults to "OBJECTID".
- XYTOLERANCE, ZTOLERANCE: These parameters control the snapping tolerance used for advanced ArcGIS features like network and topology rules. They won't effect any OGR operations, but they will by used by ArcGIS. The units of the parameters are the units of the coordinate reference system.

  ArcMap 10.0 and OGR defaults for XYTOLERANCE are 0.001m (or equivalent) for projected coordinate systems, and 0.000000008983153° for geographic coordinate systems.

- XORIGIN, YORIGIN, ZORIGIN, XYSCALE, ZSCALE: These parameters control the coordinate precision grid inside the file geodatabase. The dimensions of the grid are determined by the origin, and the scale. The origin defines the location of a reference grid point in space. The scale is the reciprocal of the resolution. So, to get a grid with an origin at 0 and a resolution of 0.001 on all axes, you would set all the origins to 0 and all the scales to 1000.

  Important: The domain specified by `(xmin=XORIGIN, ymin=YORIGIN, xmax=(XORIGIN + 9E+15 / XYSCALE), ymax=(YORIGIN + 9E+15 / XYSCALE))` needs to encompass every possible coordinate value for the feature class. If features are added with coordinates that fall outside the domain, errors will occur in ArcGIS with spatial indexing, feature selection, and exporting data.

  ArcMap 10.0 and OGR defaults:

  - For geographic coordinate systems: XORIGIN=-400, YORIGIN=-400, XYSCALE=1000000000
  - For projected coordinate systems: XYSCALE=10000 for the default XYTOLERANCE of 0.001m. XORIGIN and YORIGIN change based on the coordinate system, but the OGR default of -2147483647 is suitable with the default XYSCALE for all coordinate systems.

## Examples

- Read layer from FileGDB and load into PostGIS:
`ogr2ogr -overwrite -skipfailures -f "PostgreSQL" PG:"host=myhost user=myuser dbname=mydb password=mypass" "C:\somefolder\BigFileGDB.gdb" "MyFeatureClass"`
- Get detailed info for FileGDB:
`ogrinfo -al "C:\somefolder\MyGDB.gdb"`

## Building Notes

Read the GDAL Windows Building example for Plugins. You will find a similar section in nmake.opt for FileGDB. After you are done, go to the $gdal_source_root\ogr\ogrsf_frmts\filegdb folder and execute:

`nmake /f makefile.vc plugin nmake /f makefile.vc plugin-install`

## Known Issues

- Blob fields have not been implemented.
- FGDB coordinate snapping will cause geometries to be altered during writing. Use the origin and scale layer creation options to control the snapping behavior.

## Links

- ESRI File Geodatabase API Page