I am looking to perform a simple (one observer location) viewshed analysis on a standard DEM using GDAL (either python or .NET bindings).

I have searched, but haven't found any readily available implementation. Can anyone point me in the right direction?

  • Is GRASS an acceptable candidate for your solution? It typically includes tools for these things: r.los and r.viewshed Jul 12, 2012 at 21:45

3 Answers 3


I've used python scripts to run both the r.los and r.viewshed grass commands that Peter mentioned.

The advantage with r.los is that it works straight out-of-the-box with grass6, but is slightly slower to run over large raster DEMs. r.viewshed is a bit of a pain to get running, but is a vast speed improvement on very large rasters. See if the times for your DEM are acceptable using r.los, then give r.viewshed a go if it's taking too long. Here's a quick python example using grass64 r.viewshed, but you'll need to get the python grass bindings working first (see http://grass.osgeo.org/wiki/GRASS_and_Python).

import grass.script as grass

        coordinate=[observer_x, observer_y],

with a better description of the parameters available at http://grass.osgeo.org/gdp/html_grass70/r.viewshed.html


There is also SAGA-GIS which provides visibility analysis. It has Python bindings.


There is also a QGIS plugin that does this. I can not remember the name of the plugin at the moment, it works, but I find it a little slow.

  • It's been a while since you sort of answered this question without a real answer? Do you have an update or maybe just delete the answer? Dec 5, 2012 at 6:54
  • Thank you for the reminder Ryan, and sorry for forgetting. Here is a link to a description about the plugin. I did a search for the plugin in for QGIS 1.8.0 and it is not coming up in the Plugin Search. madchuckle.blogspot.ca/2010/05/… Dec 5, 2012 at 19:56
  • Here is another description of the plugin madchuckle.blogspot.ca/2010/10/… Dec 5, 2012 at 19:56

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.