[postgis-devel] Out of DB regression tests for ST_AsGDALRaster

Bborie Park dustymugs at gmail.com
Sun May 22 09:26:32 PDT 2011

On Sat, May 21, 2011 at 7:54 PM, Paragon Corporation <lr at pcorp.us> wrote:
> I'm not sure what others think of this.  I would be okay with testing with
> python.  In fact I think raster already has some out of db python tests.

There are some C tests for the api and wkb output but everything else
looks to be in-db tests.

> Ideally though:  It should follow the same tests we do for the rest of the
> system and for that we use Cunit to do out of db tests.  If that's too much
> of a hassle for your tests, then I would personally be okay with you using
> python scripts since that's a requirement to use the raster2pgsql.py anyway
> so you actually already have to use python to test your raster2pgsql loader
> anyway.
> +1
> Wait for rest of PSC folks to make their comments. (HINT HINT PSC)

I completely forgot about using CUnit.  I'll take a look as I'd rather
use C instead of python.  I'm trying to avoid python as that is yet
another dependency and the hope that eventually someone will write a
C-based replacement for raster2pgsql.py.

> If you want to experiment with using C-Unit, the instructions are here:
> http://trac.osgeo.org/postgis/wiki/DevWikiCUnit
> And like I send that is the standard for non-raster PostGIS we use.  Some
> examples of tests are in /trunk/liblwgeom/cunit
> Speaking of Python, I've been using plpython to test your raster output
> functions with a script that looks like this (but to be honest I don't
> really know python -- just copy other people's stuff)
> And some of my boston aerial data that I was hoping to eventually play
> around with to extrude different vector features like building footprint
> (lofty dream I know)
> CREATE OR REPLACE FUNCTION writeraster(filename text,img bytea)
>  RETURNS text
> AS $$
>    f = open('/postgis_images/' + filename, "w")
>    f.write(img)
>    return("done")
> $$ LANGUAGE plpythonu;
> SELECT writeraster('ab' || rid::text || '.tiff',ST_AsTIFF(rast,
> FROM o_4_boston limit 100;
> SELECT writeraster('ab' || rid::text || '.tiff',ST_AsTIFF(rast)
> FROM o_4_boston limit 100;
> Anyrate -- works great on my 9.1 install but my 8.4 install doesn't generate
> readable images.  It could be very well a flaw in PLPython 8.4.

That is very strange.  The python as written looks fine.  You can
always try the rtgdalraster.py script in raster/scripts/python in 8.4
as that is my stupidly simple client for dumping GDAL raster outputs.
The bash script in either of the attached files for ticket #957 makes
use of that python client.

> Outputting ST_AsPNG doesn't work on any of my installs (I mean in generating
> readable images).
> In fact it throws a stupid warning for this particular data  if I don't
> specify the bands that I have too many when I only have 3 bands. Or at least
> ST_NumBands returns 3.
> SELECT writeraster('ab' || rid::text || '.png',ST_AsPNG(rast))
> FROM o_4_boston limit 100;

Oops.  Fixed that in r7206.  The stupid warning is being stupid.

>  I'll next test with .NET and PHP to rule out PLPython idiosyncracies.  It
> was just easier to whip up a PLPython example and one I can easily throw
> into a torture test to stress test things.
> The ST_AsJPEG for this dataset always returns black and white, but I think
> it could be because my pixel ranges are higher than 256.  As I recall, I
> think for the pele example you've been playing with it works fine.

You could always try out the ST_Reclass function.  Pierre seems to
know the proper set of reclassification expressions to generate
"pretty" RGB color ramps.  I have a bad habit where I end up getting
lazy and using ArcMap or ENVI to do the "pretty" things for me.

The pele example works great when outputted through ST_AsTIFF
ST_AsJPEG and ST_AsPNG and checked using a browser, gimp or photoshop.

> Anyrate if you are interested in this dataset, I can provide these aerials
> as a download file -- the sample zipped is about 30 MB, but I can throw on
> my server for download since its publically available data.

Thanks.  I just might have to take you up on the offer.


More information about the postgis-devel mailing list