DESCRIPTION

r.ecurv.comp Processes an input digital elevation model (raster) to compensate for earth curvature and light refraction. This is useful to obtain more accurate results from viewshed analysis computations.

BACKGROUND

For accurate modeling of visibility (e.g. using r.los) and other line-of-sight related processes, such as the propagation of radio waves, the effects of earth curvature and atmospheric refraction must be taken into account.

While the former is by far the stronger effect, the latter works in the opposite direction. Thus, correcting for earth curvature but not for atmospheric refraction leads to a small degree of over-compensation.

Earth's curvature causes objects to "disappear" behind the horizon. Levelled readings of an object's height will be higher than the object actually is. The strength of this effect may be negligible at short distances, but it grows quadratically with distance. Wikipedia lists the following (rough) estimates:

        0.8 mm at 100 m
        20 mm at 500 m
        79 mm at 1000 m
        1.96 m at 5000 m
        7.9 m at 10,000 m
Thus, beyond a few kilometers, it will be significant for most applications, and should be corrected for. Without correction, line-of-sight algorithms will over-estimate visibility.

Method

The idea behind r.ecurv.comp is to modify the digital elevation data before running any line-of-sight related analyses on it.

The elevation data will be modified by subtracting a value from each cell that depends on the distance of that cell from the center of the current GRASS working region. The effect of this is that cells which are further apart from each other will differ by a larger value, whereas closer cells will differ by a smaller compensational amount.

Using the output of r.ecurv.comp instead of the original elevation data will ensure that earth curvature and atmospheric refraction (optional) are compensated for, even if the software used has no means of its own to correct for these effects. Any line-of-sight computation that works on the modified surface will be "tricked" into operating on a perfectly planar surface instead of a naturally curved one.

Some GIS tools for visibility analysis already include internal earth curvature correction. However, they may use different correction methods and may lack the refraction compensation.

Using r.ecurv.comp to pre-process the analysis region's elevation raster model, and then performing the visibility analysis on the new elevation model without turning on any built-in correction methods will ensure that the corrections are transparent and the results comparable.

Computational Details

The "trick" used here is to modify the elevation data in such a way that they appear to refer to a fixed plane instead of the curved earth surface:
  1. Compute the euclidean distance raster d (using r.grow.distance) relative to the center cell of the current GRASS region.

  2. Compute the modified elevation raster output, based on the input raster map:

      output=map-(d^2*(k/(2*r)))
(see below for descriptions of k and r)

USAGE NOTES

This method will only work as long as the extent of the analysis region does not cover more than a few geodetic degrees (i.e. a few hundred kilometers). Beyond that, results will become unreliable.

In addition, the following prerequisites must be observed:

  1. Elevation units and 2D distance units must be identical. If, e.g., distances on the ground are in meters and elevation measured in feet, then the elevations must be converted to meters, first.

  2. The radius of the Earth, r, must be set using these same elevation units. The default assumes meters.

  3. A value for the refraction correction k may be choosen. A value around 6/7 works for visible light. The default of 0.87 is slightly different from this, but identical to that of ArcGIS(tm).

SEE ALSO

Credits for this method go to Bill Huber of Quantitative Decisions, who made the details of the computations available via the user forums of a well-known GIS producer.

r.grow.distance, r.los

AUTHOR

Benjamin Ducke, benjamin.ducke AT oadigital.net

Last changed: Mon May 23 2011