[gdal-dev] gdaldem hillshade directions / GRASS r.shaded.relief
even.rouault at mines-paris.org
Tue May 18 15:06:06 EDT 2010
I'm CC'ing the grass-dev list as gdaldem shares the same formula with the
GRASS r.shaded.relief utility and I also think they are affected (I've only
compared the code, not tested r.shaded.relief, so I could be wrong of course)
I think your analysis is right. To check, I've created an artificial DEM that
is a pyramid with 4 faces oriented to north, east, south and west. Indeed the
azimuth parameter isn't interpreted as documented but as you've noticed. The
documentation is what I would expect 0 = north, 90 = east, 180 = south and
270 = west.
The fix is simple. Instead of the following code in
#correct azimuth to East (GRASS convention):
# this seems to be backwards, but in fact it works so leave it.
az = float(azimuth) - 90
I'd suggest :
az = 180 - float(azimuth)
The interesting thing is that the issue probably got unnoticed since most
users will use azimuth = 315 (north-west) according to the best practice. But
as 315 - 90 = 225, 180 - 315 = -135 and 225 = - 135 + 360..., the usual value
is the only one for which both formulas are equivalent...
What do the GRASS developers think ?
Python script to generate the pyramid :
ds = gdal.GetDriverByName('GTiff').Create('testdem.tif', 100, 100, 1)
sr = osr.SpatialReference()
for j in range(100):
data = ''
for i in range(100):
val = 255 - 5 * max(abs(50-i),abs(50-j))
data = data + ('%c' % (val))
ds = None
gdaldem commandline :
gdaldem hillshade testdem.tif testdem_shaded.tif -s 111120 -z 100 -az XXXX
Le Tuesday 18 May 2010 14:11:09 Vincent Schut, vous avez écrit :
> Is it just me, or is the result/documentation for gdaldem hillshade off
> by 90 degrees?
> While the docs state "azimuth of the light, in degrees. 0 if it comes
> from the top of the raster, 90 from the east, ..." (so: clockwise from
> north), I find that a sun azimuth of 0 degrees is west, 90 is south, 180
> is east and 270 is north (counter-clockwise from west)...
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
More information about the gdal-dev