[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