[postgis-users] How to cast a 16BUI to a 32BF raster?

Pierre Racine Pierre.Racine at sbf.ulaval.ca
Wed Oct 23 07:57:46 PDT 2013


If you are willing to do it you could write a ST_ChangePixelType(raster, newpixeltype) sql function that would automatically define the reclassexpr parameter to ST_Reclass...

We could then add it to the API.

Pierre

> -----Original Message-----
> From: postgis-users-bounces at lists.osgeo.org [mailto:postgis-users-
> bounces at lists.osgeo.org] On Behalf Of Guido LEMOINE
> Sent: Wednesday, October 23, 2013 10:30 AM
> To: postgis-users at lists.osgeo.org
> Subject: [postgis-users] How to cast a 16BUI to a 32BF raster?
> 
> Dear List,
> 
> 
> 
> First of all, I wish to congratulate the postgis developers with the (new to
> me) raster functionality. It's a real game changer.
> 
> 
> 
> I am experimenting with (free!) Landsat-8 data, generating indices through
> queries. Landsat-8 bands come as 16BUI type data.
> 
> In order to avoid integer division issues, I cast to 32BF as follows:
> 
> 
> 
> select st_reclass(rast, '0-65535:0-65535', '32BF') from l8tiled where rid =
> 5644  -- l8tiles holds the tiled single-band rasters, rid is an arbitrary tile ID
> 
> 
> 
> OR
> 
> 
> 
> select st_mapalgebra(rast, '32BF', '[rast]') from l8tiled where rid = 5644
> 
> 
> 
> Both work, with the first being the fastest (because implement directly in
> C). 11 and 21 ms for a 64 by 64 pixel tile, respectively (on Linux 64 bit/Dell
> T7400 PostgreSQL 9.3/Postgis 2.1).
> 
> The first is not very elegant, though, as it requires the somewhat awkward
> reclassexpr.
> 
> 
> 
> Is there a neater way to do this? If I use '' (empty string) for the reclassexpr,
> the cast does not work (i.e. the result remains 16BUI).
> 
> Guido Lemoine



More information about the postgis-users mailing list