I am trying to calculate the horizon profile from a point on a mountainside, through the appropriate DTM elevation file and the GRASS function r.horizon.height (via QGIS).

However, the output looks like this:

horizon profile

I know for a fact that it is wrong and that the flat portion should contain positive angles too. Compare with the output of HeyWhatsThat.com using Google Earth data:

another horizon profile

For starters, barring the staircases coming from interference of terrain close by, the huge mountain face in the S direction should be there (in red), which it is not!

error highlight

As a sanity check, I ran r.viewshed to examine visible terrain from the point.

To my surprise, the viewshed appears to be correct, the mountain is there:


Therefore, it looks like that there is no issue at all with the elevation model. r.viewshed correctly shows that portions of the terrain are visible, while those portions are non-existent in the r.horizon output.

It just seems so weird that the output of r.viewshed would be correct and inconsistent with the one of r.horizon. I tried several observation points and r.horizon usually gets the output wrong to some extent.

What is going on here with r.horizon? The documentation for the script sheds no light on this issue.

  • 1
    The terrain model, for the record: geoportale.piemonte.it/geonetwork/srv/api/records/… Feb 17 at 20:22
  • The same glitch appears when doing the math with a different DTM10 model of the same area. So maybe I got something about r.horizon wrong? Feb 18 at 10:26
  • Since it seems as if portions of terrain far away do not get taken into account, I thought that it could be a problem with the maximum distance parameter. However I tried many different values for it to no avail, the result is always the same. Feb 18 at 10:45
  • I responded on grass gitter.
    – Anna
    Feb 19 at 21:59

1 Answer 1


r.horizon has been fixed, it will be part of upcoming GRASS 8.3.2 release.

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.