Ex-meridian reduction latitude
An observed altitude of 50° on the meridian, with a declination of 10°, gives latitude 50° and a reduction of 0′. Enter the altitude, declination, hour angle in arcminutes and estimated latitude to reduce a near-noon sight. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Ho deg
- 50
- Dec deg
- 10
- Lha min
- 0
- Lat est deg
- 40
- Decimal places
- 4
- Reduction arcmin
- 0
- Lat deg
- 50
Near-noon ex-meridian reduction of altitude to meridian (simplified teaching formula). Search intent: ex meridian reduction calculator. No network calls or random seeds are required. Failed jobs are not billed.
Why a near-noon sight is reduced to the meridian
At meridian passage, latitude follows almost directly from one sight: take the zenith distance, which is the complement of the observed altitude, and combine it with the declination of the body. A sight taken a little before or after that moment gives an altitude that differs from the meridian altitude. The ex-meridian reduction estimates that difference, so the near-noon sight can be treated as if it had been taken on the meridian. In the example, an altitude of 50° with the body exactly on the meridian needs no correction: the zenith distance is 40°, and adding the 10° declination gives a latitude of 50°.
How the correction behaves, and common slips
The correction grows with the square of the hour angle: it is zero on the meridian, and doubling the hour angle makes it four times larger. It also depends on the cosine of the estimated latitude and of the declination, divided by the cosine of the observed altitude. Typical slips are entering the hour angle in degrees instead of arcminutes, confusing the altitude with the zenith distance, and expecting this simplified teaching formula to replace a full sight reduction. Choose the number of decimals you want to see; the rounding is applied once, at the end, so it does not pile up.
How it works
Near-noon ex-meridian reduction of altitude to meridian (simplified teaching formula). a ∝ t² cos lat cos Dec / cos Ho; lat from reduced zenith distance. No network calls or random seeds are required. Failed jobs are not billed.
When to use it
Use when search intent matches. Near-noon ex-meridian reduction of altitude to meridian (simplified teaching formula). No network calls or random seeds are required.
Failed jobs are not billed.
What you can do with it
Teaching
Pinned goldens.
FAQ
What is an ex-meridian reduction?
It turns an altitude observed shortly before or after meridian passage into the altitude at the meridian. That lets you work out latitude from a sight taken near noon, not only from one taken exactly at noon.
How is the correction calculated?
It is proportional to the square of the hour angle, times the cosine of the estimated latitude and of the declination, divided by the cosine of the observed altitude. Latitude then comes from the reduced zenith distance.
In which unit do I enter the hour angle?
In arcminutes from the meridian, and the reduction comes back in arcminutes too. An hour angle of 0 means the body is on the meridian, so the reduction is 0′.
Is this a complete sight reduction?
No. It is a simplified teaching formula for sights near noon, meant for practice and for checking hand work. You can choose how many decimals to show; rounding is applied once, at the end.
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/geo/ex-meridian \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ho_deg":50,"dec_deg":10,"lha_min":20,"lat_est_deg":40}'const res = await fetch("https://api.kit.forhosting.com/geo/ex-meridian", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ho_deg": 50,
"dec_deg": 10,
"lha_min": 20,
"lat_est_deg": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/ex-meridian",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ho_deg": 50,
"dec_deg": 10,
"lha_min": 20,
"lat_est_deg": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/ex-meridian", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ho_deg":50,"dec_deg":10,"lha_min":20,"lat_est_deg":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ho_deg":50,"dec_deg":10,"lha_min":20,"lat_est_deg":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/ex-meridian", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"ho_deg": 50,
"dec_deg": 10,
"lha_min": 20,
"lat_est_deg": 40
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.ex_meridian",
"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
The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested.
How it works
The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested.
Inputs, limits and rounding
Optional decimals use half-up once. Optional output fields are omitted, never null. No network calls or random seeds are required. Failed jobs are not billed. Provide required JSON fields with DOM-safe names. Invalid types raise invalid_input. The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested.
When to use it
The calculator is free in the browser, deterministic, and identical on the API path. Inputs are validated before arithmetic so invalid payloads fail with invalid_input. Half-up rounding is applied once from raw IEEE values when decimals are requested.
Integration use cases
Quick check
Free widget.
Automation
API same JSON.
Technical questions
Free?
Yes tier A.
Network?
No.
Bad input?
invalid_input.
API?
Yes.
Locales?
8 locales.