PostGIS
Synopsis
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`
)`;
Description
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.
|
Examples: Output geometries as PNG files
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]));