I'm trying to run a viewshed analysis of building. My original building layer was a vector which had a height attribute. I converted this to raster and added my elevation layer to my building raster layer. I used the output raster "DEMBuilding" as the input for my viewshed analysis but keep getting a NODATA error for the 'DEMBuilding' layer?

enter image description here

Any suggestions?

  • Looks like something is wrong with your combined DEM and building raster. Could you describe how you combined them? Also, this may or may not be affecting things, but I've found from experience that spaces anywhere in the file path can screw up Arc calculations, especially on rasters (i.e., "C:\Users\Nwaiwu Enyinnaya\....). Nov 22, 2015 at 19:45
  • You may want to review the help file on viewshed. I'm not sure exactly what you're trying to do based on the process you've outlined. As for the error, vector to raster leaves a bunch of nodata cells. Math (ie raster calculator add) on nodata (null) cells results in nodata. Depending on how you did what you did, the 'DEM' you're trying to use may be full of empty values. Related: gis.stackexchange.com/questions/97722
    – Chris W
    Nov 22, 2015 at 19:45
  • @PauloRaposo I combined the building and DEM rasters using the plus tool. Lemme try moving my database to a location without spaces in path names.
    – rmclaw
    Nov 22, 2015 at 19:56
  • @ChrisW I want to run a visibility of buildings from a given observation point. The process I underlined was basically to give the buildings offset elevations relative to thr original DEM of my area of interest. I hope this helps.
    – rmclaw
    Nov 22, 2015 at 20:07
  • @ChrisW... Yeah I know about offseta and offsetb. The OFFSETB is not tied with specific locations/features. but calculates viewshed with respect to the gridcells
    – rmclaw
    Nov 22, 2015 at 20:20

1 Answer 1


I think mistake can be fixed by computing modified DEM using


Expression above is the one for raster calculator. It assumes

  • raster derived from bulding height is called BUILDING in current mxd Table of Content
  • you elevation model is raster called DEM in Table of Content.

Start raster calculator from Spatial Analyst tools and build above expression using list of rasters and buttons available. Alternatively copy and past it.

Note you can specify an output in raster calculator interface. It will become your input into viewshed analysis

Also have a look at this post it describes more accurate approach on combining building height and surface model

  • Hi FelixIP would you be kind to walk me through that python script?
    – rmclaw
    Nov 22, 2015 at 21:26
  • @rmclaw see updated answer
    – FelixIP
    Nov 22, 2015 at 21:52
  • Ran this...not sure what the syntax does, but it produced a surface raster with a coverage of the entire area, not for the distinctive raster building features.
    – rmclaw
    Nov 22, 2015 at 22:28
  • This is EXACTLY what you need. Your observer should sit/stand on the site with known elevation not in a black hole = NO DATA. Try hill shade and you'll see that terrain is raised where the buildings are
    – FelixIP
    Nov 22, 2015 at 22:46
  • Outside of the Raster Calculator (say, in a script), you can just use the Con ("conditional") tool (resources.arcgis.com/EN/HELP/MAIN/10.1/index.html#/Con/…). Nov 23, 2015 at 1:54

Your Answer

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

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