Name

ST_AsRaster — Convertit une géométrie PostGIS en un raster 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

Convertit une géométrie PostGIS en un raster PostGIS. Les nombreuses variantes permettent trois groupes de possibilités pour définir l'alignement et la taille des pixels du raster en sortie.

Le premier groupe, constitué des deux premières variantes, produit un raster avec le même alignement (scalex, scaley, gridx et gridy), le même type de pixels et la même valeur nodata que le raster donné en référence. En général, vous passerez cette référence en faisant une jointure entre la table contenant la géométrie avec la table contenant le raster de référence.

Le second groupe, composé de quatre variantes, vous permettent de spécifier les dimensions du raster via les paramètres de taille de pixel (scalex & scaley et skewx & skewy). Les dimensions width & height du raster résultant seront ajustés pour s'adapter à l'étendu de la géométrie. Dans la plupart des cas, vous devrez transtyper les paramètres scalex & scaley de integer à double precision pour que PostgreSQL choisisse la variante correcte.

Le troisième groupe, composé de quatre variantes, vous permettent de spécifier les dimensions du raster directement (width & height). Les paramètres de taille de pixel (scalex & scaley et skewx & skewy) du raster résultant seront ajustés pour s'adapter à l'étendue de la géométrie.

Les deux premières variantes des deux derniers groupes vous permettent de spécifier l'alignement avec un coin arbitraire de la grille d'alignement (gridx & gridy) et les deux dernières variantes via le coin haut-gauche (upperleftx & upperlefty).

Chaque groupe de variantes permet de produire un raster à une ou plusieurs bandes. Pour plusieurs bandes, vous devez fournir un tableau de types de pixels (pixeltype[]), un tableau de valeurs initiales (value) et un tableau de valeurs nodata (nodataval). Si non fournis, pixeltype est par défaut à 8BUI, value à 1 et nodataval à 0.

Le raster en sortie aura le même système de référence spatial que la géométrie source, sauf pour les variantes utilisant un raster de référence. Dans ce cas, le raster en sortie aura le même SRID que le raster de référence.

Le paramètre optionnel touched est par défaut à false et correspond à l'option GDAL ALL_TOUCHED, qui détermine si les pixels touchés par des lignes ou polygones seront mis à jour, et pas seulement ceux sur le chemin de la ligne ou dont le point central est dans le polygone.

Ceci est particulièrement utile pour le rendu de JPEGs et de PNGs directement depuis la base de données en utilisant une combinaison de ST_AsPNG et des fonctions de la famille de ST_AsGDALRaster.

Disponibilité : 2.0.0 - nécessite GDAL >= 1.6.0.

[Note]

Pas encore en mesure de faire le rendu de géométries complexes comme les CURVES, TIN et PolyhedralSurfaces, mais cela devrait être le cas lorsque GDAL le supportera.

Exemples : Rendu de géométries en fichiers PNG

cercle noir

-- 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));

exemple d'un buffer rendu via 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]));