ST_HillShade — Retourne l'hypothétique éclairage d'une bande raster d'élévation en utilisant les valeurs d'azimut, d'altitude, de luminosité et d'échelle fournies.
raster ST_HillShade(
raster rast, integer band=1, text pixeltype=32BF, double precision azimuth=315, double precision altitude=45, double precision max_bright=255, double precision scale=1.0, boolean interpolate_nodata=FALSE)
;
raster ST_HillShade(
raster rast, integer band, raster customextent, text pixeltype=32BF, double precision azimuth=315, double precision altitude=45, double precision max_bright=255, double precision scale=1.0, boolean interpolate_nodata=FALSE)
;
Retourne l'hypothétique éclairage d'une bande raster d'élévation en utilisant les données d'entrée d'azimut, d'altitude, de luminosité et d'échelle. Utilise l'algèbre cartographique et applique l'équation d'ombrage aux pixels voisins. Les valeurs des pixels retournées sont comprises entre 0 et 255.
azimuth
est une valeur comprise entre 0 et 360 degrés, mesurée dans le sens des aiguilles d'une montre à partir du nord.
altitude
est une valeur comprise entre 0 et 90 degrés, où 0 degré correspond à l'horizon et 90 degrés à la verticale.
max_bright
est une valeur comprise entre 0 et 255, 0 correspondant à une absence de luminosité et 255 à une luminosité maximale.
scale
est le rapport entre les unités verticales et les unités horizontales. Pour Feet:LatLon, utiliser scale=370400, pour Meters:LatLon utiliser scale=111120.
Si interpolate_nodata
est TRUE, les valeurs des pixels NODATA du raster d'entrée seront interpolées à l'aide de ST_InvDistWeight4ma avant de calculer l'éclairage.
Pour plus d'informations sur l'ombrage, veuillez consulter How hillshade works. |
Disponibilité : 2.0.0
Amélioration : 2.1.0 Utilise ST_MapAlgebra() et ajout du paramètre optionnel interpolate_nodata
Changement : 2.1.0 Dans les versions précédentes, l'azimut et l'altitude étaient exprimés en radians. Désormais, l'azimut et l'altitude sont exprimés en degrés
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_Hillshade(rast, 1, '32BF')) FROM foo st_dumpvalues ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ----------------------------------------------------------------------- (1,"{{NULL,NULL,NULL,NULL,NULL},{NULL,251.32763671875,220.749786376953,147.224319458008,NULL},{NULL,220.749786376953,180.312225341797,67.7497863769531,NULL},{NULL,147.224319458008 ,67.7497863769531,43.1210060119629,NULL},{NULL,NULL,NULL,NULL,NULL}}") (1 row)
Exemple complet avec les tuiles d'une couverture. Cette requête ne fonctionne qu'avec PostgreSQL 9.1 ou plus.
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_Hillshade(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;
ST_MapAlgebra (callback function version), ST_TRI, ST_TPI, ST_Roughness, ST_Aspect, ST_Slope