Name

ST_AsRaster — Konvertiert den geometrischen Datentyp von PostGIS in einen 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);

Beschreibung

Konvertiert den geometrischen Datentyp von PostGIS in einen PostGIS Raster. Es gibt viele Varianten, die jeweils drei Gruppen von Möglichkeiten bieten um die Ausrichtung/alignment und die Pixelgröße des resultierenden Rasters zu bestimmen.

Die erste Gruppe besteht aus den ersten zwei Varianten und erzeugt einen Raster mit derselben Ausrichtung (scalex, scaley, gridx und gridy), dem selben Pixeltyp und NODATA Wert wie der gegebene Referenzraster. Üblicherweise wird der Referenzraster über einen Join übergeben, der aus der Tabelle mit der Geometrie und der Tabelle mit dem Referenzraster gebildet wird.

Die zweite Gruppe setzt sich aus vier Varianten zusammen und erlaubt Ihnen, die Dimensionen des Rasters über die Parameter der Pixelgröße festzulegen (scalex & scaley und skewx & skewy). Die width & height des resultierenden Rasters wird an die Ausdehnung der Geometrie angepasst. In den meisten Fällen müssen Sie eine Typumwandlung der Eingabewerte scalex & scaley von Integer nach Double Precision vornehmen, damit PostgreSQL die richtige Variante auswählt.

Die zweite Gruppe setzt sich aus vier Varianten zusammen und erlaubt Ihnen, die Dimensionen des Rasters über die Dimensionen des Rasters zu fixieren (width & height). Die Parameter der Pixelgröße (scalex & scaley und skewx & skewy). des resultierenden Rasters werden an die Ausdehnung der Geometrie angepasst.

Die ersten zwei Varianten der beiden letzten Gruppen erlauben es Ihnen, an einer beliebigen Ecke des Führungsgitters (gridx& gridy) auszurichten; und die letzten zwei Varianten nehmen die obere linke Ecke (upperleftx & upperlefty) entgegen.

Jede Variantengruppe erlaubt die Erstellung eines Rasters sowohl mit einem als auch mit mehreren Bändern. Um einen Raster mit mehreren Bändern zu erstellen, können Sie ein Feld mit Pixeltypen (pixeltype[]), ein Feld mit Ausgangswerten (value) und ein Feld mit NODATA Werten (nodataval) bereitstellen. Falls nicht, werden die Standardwerte - 8BUI für den Pixeltyp, 1 für den Ausgangswert und 0 für NODATA - angenommen.

Der Ausgaberaster hat dieselbe Koordinatenreferenz wie die Ausgangsgeometrie. Die einzige Ausnahme bilden Varianten mit einem Referenzraster. In diesem Fall erhält der resultierende Raster dieselbe SRID wie der Referenzraster.

Der optionale Parameter touched ist standardmäßig FALSE und wird auf die GDAL Rasterungsoption ALL_TOUCHED abgebildet, welche bestimmt, ob Pixel die von Linien oder Polygonen nur berührt werden, ebenfalls gerastert werden sollen; und nicht nur die Pixel auf einem Linienzug oder mit dem Mittelpunkt innerhalb des Polygons.

Dies ist insbesondere in Verbindung mit ST_AsPNG und der Funktionsfamilie ST_AsGDALRaster, für die Erstellung von JPEGs oder PNGs aus einer Geometrie direkt von der Datenbank heraus, nützlich.

Verfügbarkeit: 2.0.0 - GDAL >= 1.6.0.

[Note]

Zur Zeit können komplexe geometrische Datentypen wie Kurven, TINS und polyedrische Oberflächen nicht gerendert werden, was aber möglich sein sollte, sobald GDAL dies kann.

Beispiele: Ausgabe der Geometrien als PNG-Datei

Ein schwarzer Kreis

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

Ein Beispiel für einen Puffer; die Grafik ist direkt in PostGIS erstellt

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