[gdal-dev] Python bindings and the Postgres driver
Pat Blair
pat.blair at bullberrysystems.com
Tue May 6 11:45:58 EDT 2008
Please accept my gratitude for your kind attention. Setting the
GDAL_DRIVER_PATH environment variable as you suggested was indeed the
answer.
Many thanks,
Pat
-----Original Message-----
From: Howard Butler [mailto:hobu.inc at gmail.com]
Sent: Tuesday, May 06, 2008 10:35 AM
To: Pat Blair
Cc: gdal-dev at lists.osgeo.org
Subject: Re: [gdal-dev] Python bindings and the Postgres driver
On May 6, 2008, at 10:16 AM, Pat Blair wrote:
> Hello. I am using GDAL/OGR from Python 2.5 and believe that I am
> having trouble using the PostgreSQL driver. (The problem I am having
> is similar or identical to one posted previously, but for which I can
> find no answer:
> http://www.nabble.com/gdal-Python-bindings-and-postgis-question-td1570
> 5650.html.)
>
> I am using Python 2.5 on Windows. I have C:\gdalwin32-1.5 in place,
> and have the Postgres drivers in C:\gdalwin32-1.5\bin\gdalplugins
> (libpq.dll, and ogr_PG.dll). I have also installed the Python
> bindings. When I run the ogrinfo utility from a command line, I can
> use the Postgres driver with no apparent problem.
>
> For example, when I run...
>
> ogrinfo PG:"host=localhost user=postgres password=sergtsop
> dbname=arcturus" -al -summary
>
> I get results...
>
> INFO: Open of `PG:host=localhost user=postgres password=password
> dbname=mydb'
> using driver `PostgreSQL' successful.
>
> Layer name: streets
> Geometry: Line String
> Feature Count: 19187
> Extent: (-77.116646, 38.793179) - (-76.909538, 38.995243) Layer SRS
> WKT:
> [...etc...]
>
> However, from within Python, the ogr module doesn't seem to be able to
> find the 'PostgreSQL' driver. Below I have pasted in text from my
> Python console. You can see that I can get the 'ESRI Shapefile'
> driver; but if I try to get 'PostgreSQL' driver, I get None back.
>
> >>> from osgeo import ogr
> >>> ogrEsriDriver = ogr.GetDriverByName('ESRI Shapefile') print
> >>> ogrEsriDriver
> <osgeo.ogr.Driver; proxy of <Swig Object of type 'OGRDriverShadow *'
> at 0xaf3a78...
> >>> ogrPgDriver = ogr.GetDriverByName('PostgreSQL') print ogrPgDriver
> None
> >>>
>
> So, I believe that GDAL/OGR are installed and working, and that the
> Python bindings are generally working. But is there another step I
> must take to help the Python bindings find the Postgres driver?
>
Pat,
I think you need to set the GDAL_DRIVER_PATH environment variable
*before* Python is run so that GDAL can know where to find its plugins.
Running from a cmd.exe...
set GDAL_DRIVER_PATH=C:\gdalwin32-1.5\bin\gdalplugins
c:\Python25\python.exe
>>> from osgeo import ogr
>>> ogrPgDriver = ogr.GetDriverByName('PostgreSQL')
>>> print ogrPgDriver
Alternatively, setting this as a system environment variable may be
one way to avoid having to manually set it every time you wish to run
Python.
Hope this helps,
Howard
More information about the gdal-dev
mailing list