ForHosting KIT · Developer Utilities

Viewshed point visibility test over a terrain profile

The viewshed point visibility test determines whether one target can be seen from one observer along a supplied terrain profile.

● BetaFree · in your browser
Use it from WebAPIEmailTelegramApp soon

It builds a straight line between the observer and target elevations, including their heights above the ground, then checks each intermediate terrain sample against that line. The result states whether the target is visible, identifies the point with the least clearance, and reports the signed vertical clearance there. This makes the calculation transparent and repeatable for surveying, radio planning, site screening, and map-based terrain analysis.

Prepare an ordered terrain profile

Provide terrain samples in travel order from the observer to the target. The first distance must be zero, every later distance must be greater than the previous distance, and the last sample represents the target location. Distances and elevations may use metres, feet, or another linear unit, but all values must use the same unit because the calculation compares them directly. Add observer height and target height as distances above their respective ground elevations. An observer height might represent eye level, an antenna centre, or an instrument mounted on a tripod. Target height can represent a person, a mast, a structure, or zero when visibility of the ground point itself is the question. Include samples at terrain breaks and local high points whenever possible. The test can only evaluate the profile supplied to it; a ridge that falls between widely spaced samples will not be invented or inferred. The ordered input therefore carries both the terrain model and its sampling limitations into the result.

Understand the straight sightline test

The calculation first adds observer height to the terrain elevation at distance zero and target height to the elevation at the final distance. These two absolute elevations define a straight line. At each intermediate sample, linear interpolation gives the elevation of that line at the sample distance. Terrain elevation is then subtracted from sightline elevation to produce clearance. Positive clearance means the line passes above the sampled ground, zero means it touches the sampled ground, and negative clearance means that sample rises above the line and blocks visibility. The target is reported as visible only when every intermediate clearance is zero or greater. The output also returns the critical point, which is the sample with the smallest clearance, along with its distance, terrain elevation, sightline elevation, and clearance. This signed value is useful beyond a simple yes-or-no answer: it shows how much extra height would be needed at the critical sampled location or how narrow the available margin is.

Interpret results within the model limits

Treat the result as a point-to-point test over a supplied profile, not as a complete geographic viewshed raster. It evaluates only the straight vertical section joining two locations. Earth curvature and atmospheric refraction are not applied, so long links may need a separate curved-Earth or effective-radius analysis. Buildings, trees, vehicles, seasonal canopy, and other surface objects are absent unless their heights are already represented in the elevations you provide. The calculation also does not interpolate a continuous terrain surface between samples; denser sampling around crests generally gives a more dependable answer. A visible result with very small positive clearance should therefore be read as sensitive to elevation error and omitted obstacles, while a large positive margin is more robust. A negative minimum clearance identifies definite obstruction within the supplied data, and its critical point helps focus a field check or design change. Run the same deterministic input again and the same output is returned, making it suitable for documented screening workflows and automated comparisons.

Screen a radio link

Check whether sampled ground crosses the direct line between two antenna heights before performing a fuller propagation study.

Review a survey profile

Test eye-level or instrument visibility across measured stations and locate the station with the smallest clearance.

Compare candidate sites

Run consistent point-to-point terrain tests for several observer locations and retain the clearance evidence with each result.

What does visible mean?

Visible means no intermediate terrain sample rises above the straight line from the observer height to the target height. Terrain exactly touching the line is treated as visible.

Must distances and elevations be in metres?

No. Any linear unit works when every distance, elevation, observer height, and target height uses that same unit.

Does the test include Earth curvature or refraction?

No. It uses a straight profile in a planar vertical section. Apply an appropriate correction to the input elevations first when those effects matter.

Does it account for trees and buildings?

Only when those heights are already included in the supplied profile elevations. The capability does not add surface objects automatically.

What is the critical point?

It is the tested sample with the smallest sightline clearance. A negative value identifies the strongest sampled obstruction.

What does the API request cost?

Each API request costs $0.002. The same deterministic calculation is suitable for browser execution as a tier A capability.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/geo/viewshed-point-test

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/geo/viewshed-point-test \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"terrain_profile":[{"distance":0,"elevation":100},{"distance":500,"elevation":112},{"distance":1000,"elevation":108}]}'
{
  "terrain_profile": [
    {
      "distance": 0,
      "elevation": 100
    },
    {
      "distance": 500,
      "elevation": 112
    },
    {
      "distance": 1000,
      "elevation": 108
    }
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "geo.viewshed_point_test",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_points10000
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Read the full KIT documentation →