[postgis-users] PL/Python

Rémi Cura remi.cura at gmail.com
Sat May 21 03:04:57 PDT 2016


Hey,
debuggin plpython is a bit of a pain.
Maybe you are aware that you can use
plpy.notice to print values during execution.

This blog
<http://geoexamples.blogspot.fr/2012/01/creating-files-in-ogr-and-gdal-with.html>
seems to indicate that what you do should work:

driver = gdal.GetDriverByName( 'MEM' )
ds = driver.Create( '', 255, 255, 1, gdal.GDT_Int32)


Maybe you can check that executing that in plain python while logged
as postgres works?

Cheers,
Rémi-C





2016-05-18 21:26 GMT+02:00 David Haynes <haynesd2 at gmail.com>:

> Yes because the second function in my doesn't error.
>
> On Wed, May 18, 2016 at 12:06 PM, Martijn Meijers <b.m.meijers at tudelft.nl>
> wrote:
>
>> I think the gdal.getDriver call returns None. Hence the attribute error
>> on the line afterwards. Are you sure that 19 is what you should pass as
>> input?
>>
>> Martijn
>>
>> Verzonden vanaf mobiel.
>>
>>
>> -------- Oorspronkelijk bericht --------
>> Van: David Haynes
>> Datum:18-05-2016 17:35 (GMT+01:00)
>> Aan: postgis-users at lists.osgeo.org
>> Onderwerp: [postgis-users] PL/Python
>>
>> 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
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> postgis-users mailing list
>> postgis-users at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/postgis-users
>>
>
>
> _______________________________________________
> postgis-users mailing list
> postgis-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/postgis-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20160521/296252c7/attachment.html>


More information about the postgis-users mailing list