He utilizado scripts de python para ejecutar tanto el r.los y r.viewshed comandos de hierba que mencionó Pedro.
La ventaja con r.los es que funciona directamente con grass6, pero es un poco más lento cuando se ejecuta sobre grandes DEMs rasterizados. r.viewshed es un poco complicado de poner en marcha, pero supone una gran mejora de la velocidad en rastreos muy grandes. Compruebe si los tiempos de su MDE son aceptables utilizando r.los , entonces da r.viewshed si está tardando mucho. Aquí hay un ejemplo rápido en python usando grass64 r.viewshed pero primero tendrás que hacer funcionar los enlaces de hierba de python (ver http://grass.osgeo.org/wiki/GRASS_and_Python ).
import grass.script as grass
grass.run_command('r.viewshed',
input='standard.dem',
output='viewshed',
coordinate=[observer_x, observer_y],
obs_elev=1.75,
tgt_elev=0.0,
memory=4098,
overwrite=True,
quiet=True
)
con una mejor descripción de los parámetros disponibles en http://grass.osgeo.org/gdp/html_grass70/r.viewshed.html