ST_AsRaster
Name
ST_AsRaster — Converts a PostGIS geometry to a PostGIS raster.
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.
Not yet capable of rendering complex geometry types such as curves, TINS, and PolyhedralSurfaces, but should be able too once GDAL can. |
Examples: Output geometries as PNG files
-- 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, '2BUI'));
-- 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]));
See Also
ST_BandPixelType , ST_Buffer , ST_GDALDrivers , ST_AsGDALRaster , ST_AsPNG , ST_AsJPEG , ST_SRID