ST_AsRaster — Converts a PostGIS geometry to a PostGIS raster.
raster ST_AsRaster(geometry  geom, raster  ref, text  pixeltype, double precision  value=1, double precision  nodataval=0, boolean  touched=false);
raster ST_AsRaster(geometry  geom, raster  ref, text[]  pixeltype=ARRAY['8BUI'], double precision[]  value=ARRAY[1], double precision[]  nodataval=ARRAY[0], boolean  touched=false);
raster ST_AsRaster(geometry  geom, double precision  scalex, double precision  scaley, double precision  gridx, double precision  gridy, text  pixeltype, double precision  value=1, double precision  nodataval=0, double precision  skewx=0, double precision  skewy=0, boolean  touched=false);
raster ST_AsRaster(geometry  geom, double precision  scalex, double precision  scaley, double precision  gridx=NULL, double precision  gridy=NULL, text[]  pixeltype=ARRAY['8BUI'], double precision[]  value=ARRAY[1], double precision[]  nodataval=ARRAY[0], double precision  skewx=0, double precision  skewy=0, boolean  touched=false);
raster ST_AsRaster(geometry  geom, double precision  scalex, double precision  scaley, text  pixeltype, double precision  value=1, double precision  nodataval=0, double precision  upperleftx=NULL, double precision  upperlefty=NULL, double precision  skewx=0, double precision  skewy=0, boolean  touched=false);
raster ST_AsRaster(geometry  geom, double precision  scalex, double precision  scaley, text[]  pixeltype, double precision[]  value=ARRAY[1], double precision[]  nodataval=ARRAY[0], double precision  upperleftx=NULL, double precision  upperlefty=NULL, double precision  skewx=0, double precision  skewy=0, boolean  touched=false);
raster ST_AsRaster(geometry  geom, integer  width, integer  height, double precision  gridx, double precision  gridy, text  pixeltype, double precision  value=1, double precision  nodataval=0, double precision  skewx=0, double precision  skewy=0, boolean  touched=false);
raster ST_AsRaster(geometry  geom, integer  width, integer  height, double precision  gridx=NULL, double precision  gridy=NULL, text[]  pixeltype=ARRAY['8BUI'], double precision[]  value=ARRAY[1], double precision[]  nodataval=ARRAY[0], double precision  skewx=0, double precision  skewy=0, boolean  touched=false);
raster ST_AsRaster(geometry  geom, integer  width, integer  height, text  pixeltype, double precision  value=1, double precision  nodataval=0, double precision  upperleftx=NULL, double precision  upperlefty=NULL, double precision  skewx=0, double precision  skewy=0, boolean  touched=false);
raster ST_AsRaster(geometry  geom, integer  width, integer  height, text[]  pixeltype, double precision[]  value=ARRAY[1], double precision[]  nodataval=ARRAY[0], double precision  upperleftx=NULL, double precision  upperlefty=NULL, double precision  skewx=0, double precision  skewy=0, boolean  touched=false);
Converts a PostGIS geometry to a PostGIS raster. The many variants offers three groups of possibilities for setting the alignment and pixelsize of the resulting raster.
The first group, composed of the two first variants, produce a raster having the same alignment (scalex, scaley, gridx and gridy), pixel type and nodata value as the provided reference raster. You generally pass this reference raster by joining the table containing the geometry with the table containing the reference raster.
The second group, composed of four variants, let you set the dimensions of the raster by providing the parameters of a pixel size (scalex & scaley and skewx & skewy). The width & height of the resulting raster will be adjusted to fit the extent of the geometry. In most cases, you must cast integer scalex & scaley arguments to double precision so that PostgreSQL choose the right variant.
The third group, composed of four variants, let you fix the dimensions of the raster by providing the dimensions of the raster (width & height). The parameters of the pixel size (scalex & scaley and skewx & skewy) of the resulting raster will be adjusted to fit the extent of the geometry.
The two first variants of each of those two last groups let you specify the alignment with an arbitrary corner of the alignment grid (gridx & gridy) and the two last variants takes the upper left corner (upperleftx & upperlefty).
Each group of variant allows producing a one band raster or a multiple bands raster. To produce a multiple bands raster, you must provide an array of pixel types (pixeltype[]), an array of initial values (value) and an array of nodata values (nodataval). If not provided pixeltyped defaults to 8BUI, values to 1 and nodataval to 0.
The output raster will be in the same spatial reference as the source geometry. The only exception is for variants with a reference raster. In this case the resulting raster will get the same SRID as the reference raster.
The optional touched parameter defaults to false and maps to the GDAL ALL_TOUCHED rasterization option, which determines if pixels touched by lines or polygons will be burned. Not just those on the line render path, or whose center point is within the polygon.
This is particularly useful for rendering jpegs and pngs of geometries directly from the database when using in combination with ST_AsPNG and other ST_AsGDALRaster family of functions.
Availability: 2.0.0 - requires GDAL >= 1.6.0.
![]()  | |
Not yet capable of rendering complex geometry types such as curves, TINS, and PolyhedralSurfaces, but should be able too once GDAL can.  | 

black circle
-- this will output a black circle taking up 150 x 150 pixels -- SELECT ST_AsPNG(ST_AsRaster(ST_Buffer(ST_Point(1,5),10),150, 150));

example from buffer rendered with just PostGIS
-- the bands map to RGB bands - the value (118,154,118) - teal  --
SELECT ST_AsPNG(
	ST_AsRaster(
		ST_Buffer(
			ST_GeomFromText('LINESTRING(50 50,150 150,150 50)'), 10,'join=bevel'),
			200,200,ARRAY['8BUI', '8BUI', '8BUI'], ARRAY[118,154,118], ARRAY[0,0,0]));