Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I need to do integrated viewshed analysis of a target with several observer locations. I am going to use r.viewshed analysis function in GRASS. With this function, it is possible to perform analysis based on single observer location. My aim is to add output of each single observer location into integrated viewshed output. Each output, i am going to flag with -b where o denotes non-visible while 1 denotes visible. Through a loop of observer locations, output of viewshed of each location can be integrated with r.mapcalc function. After integration, values = 0 in the rater map dentoes non-visible areas and value >= 1 denotes visible areas. Python code in GRASS for r.viewshed is ok. Under the loop of observer locations how to use r.mapcalc function with each viewshed adding? After getting the integrated viewshed raster, i need to extract its boundary depicting visible area in vector format. How to do that in GRASS? Any idea for this integrated analysis is highly appreciated.

If the integrated output is intoutput, can i use a code like this. in the loop if i=0 -> r.mapcalc 'intoutput = viewshedoutput' if i > 1 -> r.mapcalc 'intoutput = viewshedoutput + intoutput'

share|improve this question

You could do that... or you could do it a less labour-intensive way in one step (instead of a step for every observer).

I assume you want to use free tools. However, in ArcGIS for instance you can use Spatial Analyst which sophisticated and allows setting of azimuths and even torus shaped viewing zones. You can also use the Observers module which will code your output raster according not only to how many observers can see the location, but specifically which ones can see it. However ArcGIS with Spatial Analyst is expensive.

I do a lot of this work and use a variety of tools but a nice free one is called OpenWind. OpenWind is designed for visibility calculations for windfarms, but if that is not what you are doing, don't worry, just fake a turbine to match your requirements (ie with a tip height of a human). When you use this tool (and others like it) you simply create a single shapefile of all your observer locations and OpenWind's ZTV (Zones of Theoretical Visibility) tool will tell you how many turbines can be seen at any one location (or in your case this equates to how many observers can see a given location).

Alternatively you could use SAGA GIS' viewshed tools. Again it is free and it can do integrated viewshed analysis. I'm less familiar with SAGA as other GIS I use have everything I need, but it has a good reputation.

share|improve this answer
Ok fine, i will look into OpenWind. However, if it is done with GRASS, how to extract vector boundary in the visible area of the analysis is somethong i need to know – Sanjeewa Jan 5 '13 at 14:47
You can use Raster->Conversion->Polygonize – MappaGnosis Jan 6 '13 at 15:36

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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