.. _pgeo:

*****************************************************************************
 ESRI Personal Geodatabase (MDB)
*****************************************************************************

ESRI Personal Geodatabases are basically Microsoft Access files that contain spatial information.  For more information see the ESRI `description page`_.

.. _`description page`: http://www.esri.com/software/arcgis/geodatabase/index.html 

File listing
--------------

Similar to other database formats, the mdb file consists of several tables.  The geometry is held in a BLOB table column.

Data Access / Connection Method
---------------------------------

Personal geodatabase access is available through OGR. See the OGR `driver page`_
for specific driver information.  The driver is standard in any win32 build of 
GDAL/OGR version 1.3.2 or later.  For Linux/Unix, `MDBTools`_ ODBC drivers can be
used for this (with some difficulty).

.. _`driver page`: http://gdal.org/ogr/drv_pgeo.html
.. _`MDBTools`: http://mdbtools.sourceforge.net/

OGR uses the names of spatial tables within the personal geodatabase (tables 
with a Shape column) as layers.

The CONNECTION parameter must include the mdb extension, and the DATA parameter
should be the name of the spatial table (or OGR layer).

::

  CONNECTIONTYPE ogr
  CONNECTION "pgeodatabase.mdb"
  DATA "layername" 

OGRINFO Examples
----------------

First you should make sure that your GDAL/OGR build contains the personal
geodatabase "PGeo" driver, by using the '--formats' command:

::

  >ogrinfo --formats
     Loaded OGR Format Drivers:
     ...
     -> "ODBC" (read/write)
     -> "PGeo" (readonly)
     -> "PostgreSQL" (read/write)
     ...

If you don't have the driver, you might want to try the `FWTools`_ or `MS4W`_
packages, which include the driver.

.. _`FWTools`: http://fwtools.maptools.org/
.. _`MS4W`: http://www.ms4w.com

Once you have the PGeo driver you are ready to try an ogrinfo command on your
database to get a list of spatial tables:

::

  >ogrinfo test.mdb
     INFO: Open of `test.mdb'
     using driver `PGeo' successful.
     1: counties

Now use ogrinfo to get information on the structure of the spatial table:

::

  >ogrinfo test.mdb counties -summary
     INFO: Open of `test.mdb'
     using driver `PGeo' successful.

     Layer name: counties
     Geometry: Unknown (any)
     Feature Count: 67
     Extent: (-87.634943, 24.543945) - (-80.031369, 31.000975)
     Layer SRS WKT:
     GEOGCS["GCS_WGS_1984",
        DATUM["WGS_1984",
        SPHEROID["WGS_1984",6378137.0,298.257223563]],
        PRIMEM["Greenwich",0.0],
        UNIT["Degree",0.0174532925199433]]
     OBJECTID_1: Integer (10.0)
     OBJECTID: Integer (10.0)
     NAME: String (32.0)
     STATE_NAME: String (25.0)
     STATE_FIPS: String (2.0)
     CNTY_FIPS: String (3.0)
     FIPS: String (5.0)
     ...

Note that you can also use an ODBC connection to access all of the tables in
your geodatabase:

::

  >ogrinfo PGeo:testDSN counties -summary
     INFO: Open of `testDSN'
     using driver `PGeo' successful.

     1: counties
     2: counties_Shape_Index
     ...

(where "testDSN" is the name of your System DSN)

Mapfile Example
---------------

Direct Access to MDB
********************

::

     LAYER
  	NAME my_geodatabase
  	TYPE POLYGON
  	CONNECTIONTYPE ogr
        CONNECTION "test.mdb"
        DATA "counties"
  	STATUS ON
        CLASS
          NAME "counties"
          STYLE
            COLOR 255 255 120
          END
        END
     END
     
Through an ODBC Connection
**************************

::

     LAYER
  	NAME my_geodatabase
  	TYPE POLYGON
  	CONNECTIONTYPE ogr
        CONNECTION "PGeo:testDSN"
        DATA "counties"
  	STATUS ON
        CLASS
          NAME "counties"
          STYLE
            COLOR 255 255 120
          END
        END
     END     