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.