[postgis-users] PL/Python

David Haynes haynesd2 at gmail.com
Wed May 18 08:35:09 PDT 2016


Hello,

I have a question regarding importing the gdal library using pl/python.
Specifically, I want to create an in memory raster using the gdal library.
This is a snippet of code that I have written,

CREATE OR REPLACE FUNCTION terrapop_area_level_to_raster2(
sample_geog_level_id bigint, raster_variable_id bigint, raster_band bigint)
RETURNS text AS
$BODY$
from osgeo import gdal
import numpy as np
from osgeo import ogr, osr

memDriver = gdal.GetDriver(19)
#memDriver = gdal.GetDriverByName('MEM')
memRast = memDriver.Create('', 10, 10, 1, gdal.GDT_Int32)

This is the error I receive. A python NoneType error. Which seems to that
the gdal class has not been imported. I have verified that gdal is
available on the system.

ERROR: AttributeError: 'NoneType' object has no attribute 'Create'
SQL state: XX000

However, this function on the same server and database returns to me all
the gdal drivers. Any idea how I can diagnose this problem?

CREATE OR REPLACE FUNCTION gdal_drivers()
  RETURNS SETOF text AS
$BODY$

from osgeo import gdal
driver = gdal.GetDriverByName('MEM')
rast = driver.Create('', 2, 4, 1, gdal.GDT_Int32)

names = []
driverall = gdal.GetDriverCount()
for i in range(gdal.GetDriverCount()):
driver = gdal.GetDriver(i)
drivername = driver.ShortName
names.append([i,drivername])

return names

$BODY$
  LANGUAGE plpythonu VOLATILE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20160518/567d2b69/attachment.html>


More information about the postgis-users mailing list