I am using the Viewshed tool in ArcGIS 10.2 to determine the cells from a DEM that are visible from a highway corridor that has a bridge crossing a river (my observation feature). My question is in regards to the z value of the observation feature, with several contingent follow-up questions:

  1. does the viewshed tool interpolate the z value based on the DEM, or do I need to manually add a field and define this along the corridor?

  2. If it does interpolate the z value, would I need to add OFFSET fields for the part of the corridor that is on a bridge structure (and therefore, not the same elevation as the DEM in that location)?

  3. If I do need to add these fields, do I need to cut my line into multiple features/records to do this?

  • 2
    it might also be advisable to account for viewing elevation - for example what is visible to someone in a seated position in a car at say 4' above the road surface could be different from what is visible from a standing elevation of 5.5' or so. The difference is probably more theoretical than practical, but since you will be setting an offset, you might as well add that.
    – That Idiot
    May 26, 2015 at 20:15
  • 1
    @ThatIdiot's example is the one case where you could/would combine both the SPOT and OFFSETA methods. If you give it a SPOT of say 20m, that's the bridge deck, and then you could give an OFFSETA of 1m (or whatever) to account for the eye-level of the person in the car.
    – Chris W
    May 26, 2015 at 20:58

2 Answers 2


All heights are based on or relative to the DEM being used in the analysis. The tools use specially named attributes to pull in some relevant values for the observer and targets. These are discussed in the help files, in particular Using Viewshed and Observer Points for visibility analysis. There are two in particular that apply to this situation, and two different ways to approach the problem.

  • SPOT - this is the actual elevation value of the observer point/line feature. This is an absolute, and has nothing to do with the DEM at all (ie, is not relative to).
  • OFFSETA - this is the difference between the height of the observer point/line feature and the existing DEM (ie, relative height). If a SPOT value is present, this value will be added to that spot value. If no SPOT value is present, it will be added to the DEM height at that location. Note OFFSETB is for the target (ie, can I see the top of a house [B] from a tower [A]).

If your bridge is a fixed height, then the SPOT method would be simplest. You'll enter the elevation of the bridge deck in an attribute called SPOT for that line. This elevation is the absolute elevation, and would in theory be the same elevation as the DEM cell value at either end of the line (not zero). If the bridge gains some height from one end to the other, you might pick an average value. If there is a significant difference, such as for a suspension bridge or a 'flyover', it might be best to either break the line into segments, or convert it to points and use the other method. I'm not entirely sure, but I don't believe the tool(s) can handle 3D lines (where it would vary SPOT based on the endpoint z values, ie a sloped bridge deck). You could use either segments or just points with a SPOT value. You won't have a SPOT value of zero (and should not set one), because that means 0 absolute elevation. If there is no value given (ie null field), it will be interpolated from the DEM.

If your bridge elevation varies significantly or if you just prefer to simplify things down, you can use the OFFSET method. Here, you'll create points along the line that roughly match the cells of your DEM. I believe you're limited to a max of 16 points however. In this case you will not use a SPOT attribute, but rather an OFFSETA attribute. Here you have to calculate the difference between the bridge deck height and the surface elevation for each point, and put that value in the OFFSETA attribute (as suggested in KHimba's answer). It is important to only use one or the other, since as mentioned above the offset will be added to the spot if it is present and not the DEM value (so you'd get the view from whatever offset above the bridge, not on the bridge). In this case you're using the relative difference between the DEM and bridge, so at the ends your offset value would be zero. Note that's the offset value, not the actual height which will be interpolated from the DEM. Offsets are never interpolated, but simply play a factor in the interpolation of the height above DEM.

  • I understand the difference between SPOT and OFFSET. Since I want the tool to interpolate the absolute elevation from the DEM for the portion of the corridor that is not on bridge structure, I am leaning towards using the OFFSET field; however, can this not be a line feature? You say that I am to create points along the line that match the DEM cells. I am concerned about separating the non-bridge corridor segments (line feature) and bridge segment (point feature) when running the tool.
    – Angela
    May 26, 2015 at 21:24
  • 1
    @Angela It could be a line with an offset. That offset applies the entire length of the line though, essentially duplicating the ground profile up at the bridge height, so you either need segments no longer than one DEM cell (so you can have a different offset for each different DEM value), or to go to points. Otherwise you use the spot method, break the line into a segment(s) for the bridge and give only the bridge a spot, and leave that attribute empty for other lines so they default to DEM elevation. Think of spot as a height 'overide' to DEM vs offset just copying DEM at a new height.
    – Chris W
    May 27, 2015 at 0:28

Per this link explaining viewshed: yes, yes, and yes.

The tool interpolates z-values based on the surface.

Since your bridge will be a given elevation above the surface, you'd need to use an OFFSETA field to control.

For the bridge itself, you'll need to do some work to calculate its distance (OFFSETA) for each point (vertice in the line). The resolution of your DEM will probably determine how much you need to densify the line. A 50m DEM and a 100m bridge sounds like 2 or 3 points, a 2m DEM and a 1000m bridge... well you get the point. Once you've convert the bridge segment to points and got the distance between it and the DEM, you need to push those values into the OFFSETA field.

  • 1
    You're right. Per the more points: I'm just trying to account for varying elevation under the bridge. Depending on the bridge length/DEM resolution, this might not be needed.
    – KHibma
    May 26, 2015 at 19:13
  • Thank you both. So if I add a field called SPOT, the tool will use this elevation instead of interpolating from the DEM? I have the bridge profile, so since the bridge elevations vary, do I segment my existing polyline so that different SPOT elevations can be assigned?
    – Angela
    May 26, 2015 at 19:15

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.