Select to view content in your preferred language

Please help me! ArcGIS Pro Visibility Tool - How do I screen with vegetation while testing visibility from ground level

641
1
03-05-2026 06:17 AM
Labels (1)
LeahCharash
Occasional Contributor

Hello, please help me address this flaw in my visibility analysis workflow.

I’m running a visibility/viewshed analysis in ArcGIS Pro for a visual impact assessment and am trying to model the following real-world condition:

I need visibility to be modeled from human eye height (~5.5 feet above ground level), while simultaneously screening views by including intervening trees and buildings that may block visibility. 

The problem that I am running into is that the Visibility tool only accepts a single surface which is used for both viewer elevations and obstructions.

In an ideal world, I want the viewer elevation to pull from the Bare Earth Digital Elevation Model (DEM) surface, while my Digital Surface Model (DSM) that captures buildings and vegetation is used for all of the intervening areas between each viewer point and the project. 

Viewer elevation = DEM + eye height
Obstructions = DSM

In my current methodology, I run the Visibility tool twice:

  1. First, I run visibility on the DEM which models ground-level potential visibility 
    (this shows visibility if there were no trees or buildings and is not realistic)
  2. Second, I run visibility on the DSM which produces screened visibility
    (this is much more realistic, but the viewer elevation is set at the DSM elevation which means that the viewer is assumed to be on top of buildings or above the tree canopy in forested areas. This produces artifacts where forest pixels show visibility while adjacent ground pixels in clearings do not.)

My question:
Is there a better way in ArcGIS Pro to model ground-level viewers (DEM + eye height) while using a DSM to represent intervening obstructions, ideally in a single analysis step?

I’m curious whether anyone has solved this. Any advice or references would be greatly appreciated!! Thank you.

0 Kudos
1 Reply
DanielFox1
Esri Regular Contributor

Hi @LeahCharash 

You could try the following:

1. Create an observer-only raster
- Create your observer points to raster
- Use a small cell size (same as DEM/DSM)
- Assign each observer cell a value DEM +1.7m
2. Merge this with the DSM and use the Raster Calculator
Con(IsNull(observer_raster), DSM, observer_raster)
This should produce a single surface where:
- At observer locations > elevation = DEM + eye height 
- Everywhere else > Elevation = DSM (trees and buildings)
3. Run the Viewshed on the hybrid layer

I hope this helps in some way.

0 Kudos