Trigonometric leveling calculator
With the instrument 1.55 above the ground, a 5.5° vertical angle, 120 of horizontal distance and a target 1.8 high, the ground-to-ground difference is about 11.30. Add a known station elevation to get the target's elevation too. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Instrument height
- 1.55
- Vertical angle
- 5.5
- Horizontal distance
- 120
- Target height
- 1.8
- Vertical angle deg
- 5.5
- Vertical distance
- 11.5546857837
- Elevation difference
- 11.3046857837
Trigonometric leveling is the survey method that turns a measured vertical angle and a horizontal distance into a change of elevation between two ground points, after correcting for instrument height and the height of the rod, prism, or target. Construction layouts, topographic control, and highway grade checks rely on this identity every day when a full optical level loop is unnecessary or the line of sight is steep. This trigonometric leveling elevation calculator accepts instrument height HI, vertical angle α in degrees from the horizontal, horizontal distance D, and target height HT, then returns the vertical distance D·tan(α), the elevation difference ΔH = HI + D·tan(α) − HT, and—when you supply a known station elevation—the absolute elevation of the target station. Positive angles are elevation (looking up); negative angles are depression (looking down).
What trigonometric leveling computes and why HI and HT matter
Differential leveling with a dumpy or automatic level reads staff intercepts on a nearly horizontal collimation line. Trigonometric leveling instead measures a vertical angle with a theodolite or total station and multiplies the horizontal distance by the tangent of that angle to recover the vertical component of the line of sight. If the instrument stood on the ground and the telescope aimed exactly at ground level on the far point, elevation difference would simply be D times tan(α).
In practice the instrument stands HI above the instrument station (tripod height to trunnion axis or reported HI), and the observed target sits HT above the far station—rod face, prism height, or reflector target. The complete ground-to-ground elevation difference is therefore ΔH equals HI plus D·tan(α) minus HT. A positive ΔH means the target station is higher than the instrument station; a negative ΔH means it is lower.
Using horizontal distance—not slope distance—keeps the formula aligned with most field books that already reduce EDM slope ranges to horizontal via the same vertical angle. When the known elevation of the instrument station E_A is available, the elevation of the target station is E_B equals E_A plus ΔH. The calculator does not apply Earth curvature or refraction corrections; those second-order terms matter on long lines of sight and belong in specialized geodetic reductions.
For ordinary site work and homework, the four-term identity above is the standard trigonometric leveling reduction taught in surveying curricula and construction engineering manuals.
What you can do with it
Field total-station reduction
Convert measured HI, vertical angle, horizontal distance, and prism height into ground-to-ground elevation difference on a tablet or edge worker.
Surveying homework and LMS grading
Check ΔH = HI + D·tan(α) − HT for elevation and depression angles with a deterministic oracle students can also use in the free browser tool.
Temporary benchmark and layout checks
Supply known station elevation with the four trig-leveling inputs to obtain absolute target elevation for grade stakes and temporary benchmarks.
FAQ
What is the trigonometric leveling formula?
Elevation difference ΔH = HI + D·tan(α) − HT, where HI is instrument height, D is horizontal distance, α is vertical angle from horizontal in degrees, and HT is target height.
Should I use horizontal or slope distance?
Use horizontal distance D. If you measured slope distance S at vertical angle α, reduce first: D = S·cos(α), then call this calculator with that D.
Does the calculator correct for Earth curvature and refraction?
No. It applies the standard four-term trigonometric leveling identity only. Apply curvature and refraction yourself on long geodetic sights.
What does a negative vertical angle mean?
It means the telescope points downward, a depression angle. The tangent term turns negative, and if the resulting elevation difference is negative too, the target station sits lower than the instrument station.
How do I get the elevation of the target point?
Enter the known elevation of the station where the instrument stands. The calculator adds the elevation difference to it and returns the target station's elevation, in the same length unit as your other values.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/eng/trig-leveling \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"instrument_height":1.55,"vertical_angle":5.5,"horizontal_distance":120,"target_height":1.8}'const res = await fetch("https://api.kit.forhosting.com/eng/trig-leveling", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"instrument_height": 1.55,
"vertical_angle": 5.5,
"horizontal_distance": 120,
"target_height": 1.8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/eng/trig-leveling",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"instrument_height": 1.55,
"vertical_angle": 5.5,
"horizontal_distance": 120,
"target_height": 1.8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/eng/trig-leveling", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"instrument_height":1.55,"vertical_angle":5.5,"horizontal_distance":120,"target_height":1.8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"instrument_height":1.55,"vertical_angle":5.5,"horizontal_distance":120,"target_height":1.8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/eng/trig-leveling", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"instrument_height": 1.55,
"vertical_angle": 5.5,
"horizontal_distance": 120,
"target_height": 1.8
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "eng.trig_leveling",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Invalid input fails with invalid_input and is not billed.
Input contract, angle sign convention, response fields, and errors
Numeric results are rounded to twelve decimal places for stable goldens and automation. POST a JSON body with four required finite numbers: instrument_height (aliases hi, height_instrument, i_height, instrument)—non-negative height of the instrument above the instrument station; vertical_angle (aliases angle, alpha, v_angle, elevation_angle, va)—vertical angle in degrees from the horizontal, strictly between −90 and 90 so tan is defined; horizontal_distance (aliases distance, d, hd, horizontal, dist)—non-negative horizontal distance to the target station; and target_height (aliases ht, height_target, rod_height, prism_height, target)—non-negative height of the observed target above the far ground point. Optional station_elevation (aliases elev_station, known_elevation, elevation_a, station_elev, ea) is any finite elevation of the instrument station; when present the response includes station_elevation and target_elevation. Fields may arrive as JSON numbers or numeric strings. Missing fields, non-finite values, negative heights or distance, or a vertical angle at or beyond ±90 degrees fail with invalid_input naming the problem; those failures are not billed. On success the body echoes the rounded inputs, vertical_distance equals D·tan(α), elevation_difference equals HI + vertical_distance − HT, formula string ΔH = HI + D·tan(α) − HT, method trigonometric_leveling, and a short message. Example: HI 1.55, α 5.5 degrees, D 120, HT 1.8 yields vertical_distance about 11.55 and elevation_difference about 11.30 in the same length unit as the inputs—because tan(5.5°) times 120 plus 1.55 minus 1.8 recovers the ground-to-ground rise. Pair the response with your own curvature or refraction model if the sight is kilometres long; this endpoint solves the textbook trigonometric leveling reduction only.
Where a trigonometric leveling API earns its keep
Civil and construction courses need a deterministic oracle for ΔH = HI + D·tan(α) − HT so homework and LMS auto-graders mark sign errors on depression angles without floating-point surprises at the tan asymptote. Content sites that rank for trigonometric leveling calculator, elevation from vertical angle, survey elevation difference, or HI HT distance leveling benefit from a live free tool whose arithmetic matches the paid automation path byte-for-byte. Invalid input is not billed. Survey crews and site engineers reduce total-station observations to elevation differences without opening a full office suite: enter HI, vertical angle, horizontal distance, and prism height, and pin elevation_difference in a field tablet or edge worker. GIS and BIM pipelines that already store station elevations can pass station_elevation and receive target_elevation in one call, wiring temporary benchmarks into design models. Keep requests small, pin the rounded elevation_difference field in tests, and you get reproducible trigonometric leveling results for classroom widgets, construction scripts, and API clients without standing up a surveying CAD stack of your own.
Technical questions
Is vertical_angle from horizontal or zenith?
From horizontal: positive means looking up (elevation), negative means looking down (depression). Angles must stay strictly inside (−90, 90) degrees so tan(α) is finite.
What does the trigonometric leveling calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.