ST_Aspect — Gibt die Exposition (standardmäßig in Grad) eines Rasterbandes mit Höhen aus. Nütlich für Terrain-Analysen.
raster ST_Aspect(
raster rast, integer band=1, text pixeltype=32BF, text units=DEGREES, boolean interpolate_nodata=FALSE)
;
raster ST_Aspect(
raster rast, integer band, raster customextent, text pixeltype=32BF, text units=DEGREES, boolean interpolate_nodata=FALSE)
;
Gibt die Exposition (standardmäßig in Grad) eines Höhenrasterbandes zurück. Verwendet Map Algebra und wendet die Expositionsgleichung auf benachbarte Pixel an.
units
die Einheiten für die Exposition. Mögliche Werte sind: RADIANS, DEGREES (Standardeinstellung).
Wenn units
= RADIANS, dann liegen die Werte zwischen 0 und 2 * pi Radiant und werden im Uhrzeigersinn von Norden her angegeben.
Wenn units
= DEGREES, dann liegen die Werte zwischen 0 und 360 Grad und sind im Uhrzeigersinn von Norden her angegeben.
Wenn die Neigung einer Zelle null ist, dann ist die Exposition des Pixel -1.
Für weitere Information über Neigung, Exposition und Schummerung siehe ESRI - How hillshade works und ERDAS Field Guide - Aspect Images. |
Verfügbarkeit: 2.0.0
Erweiterung: 2.1.0 Verwendet ST_MapAlgebra() und der optionale Funktionsparameter interpolate_nodata
wurde hinzugefügt
Änderung: 2.1.0 In Vorgängerversionen wurden die Werte in Radiant ausgegeben. Nun werden die Werte standardmäßig in Grad ausgegeben.
WITH foo AS ( SELECT ST_SetValues( ST_AddBand(ST_MakeEmptyRaster(5, 5, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999), 1, 1, 1, ARRAY[ [1, 1, 1, 1, 1], [1, 2, 2, 2, 1], [1, 2, 3, 2, 1], [1, 2, 2, 2, 1], [1, 1, 1, 1, 1] ]::double precision[][] ) AS rast ) SELECT ST_DumpValues(ST_Aspect(rast, 1, '32BF')) FROM foo st_dumpvalues ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------- (1,"{{315,341.565063476562,0,18.4349479675293,45},{288.434936523438,315,0,45,71.5650482177734},{270,270,-1,90,90},{251.565048217773,225,180,135,108.434951782227},{225,198.43495178 2227,180,161.565048217773,135}}") (1 row)
Ein vollständiges Beispiel mit Coveragekacheln. Diese Abfrage funktioniert nur mit PostgreSQL 9.1 oder höher.
WITH foo AS ( SELECT ST_Tile( ST_SetValues( ST_AddBand( ST_MakeEmptyRaster(6, 6, 0, 0, 1, -1, 0, 0, 0), 1, '32BF', 0, -9999 ), 1, 1, 1, ARRAY[ [1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 2, 1], [1, 2, 2, 3, 3, 1], [1, 1, 3, 2, 1, 1], [1, 2, 2, 1, 2, 1], [1, 1, 1, 1, 1, 1] ]::double precision[] ), 2, 2 ) AS rast ) SELECT t1.rast, ST_Aspect(ST_Union(t2.rast), 1, t1.rast) FROM foo t1 CROSS JOIN foo t2 WHERE ST_Intersects(t1.rast, t2.rast) GROUP BY t1.rast;