赤緯と観測地の緯度から南中高度を計算
この計算機は、天体が上方の子午線を通過するとき、天文学的地平線の上または下にどれほど位置するかを求めます。天体の赤緯と観測者の地理緯度を十進度で入力してください。両者の差の絶対値を九十度から引き、対応する天頂距離も表示します。観測計画、授業の確認、天文ソフトウェアの検証に利用でき、日付、時刻、経度、暦、ネットワーク接続、アカウントは必要ありません。
無料で実行
上方通過時の高度が表すもの
上方通過とは、天体が日周運動における二つの子午線通過のうち、高い側で観測者の子午線を横切る現象です。この瞬間の天頂からの角距離は、観測地点の緯度と天体の赤緯の差で決まります。この計算機では符号付き十進度を使います。北緯と北側の赤緯は正、南緯と南側の赤緯は負です。まず緯度と赤緯の差の絶対値を天頂距離として求め、それを九十度から引きます。結果が九十度なら天体は天頂を通ります。正の高度なら理想的な天文学的地平線より上、ゼロなら地平線上、負なら上方通過時にも地平線より下です。これは幾何学的位置であり、地形、建物、樹木、大気差、近距離天体の視差による見かけのずれは含みません。
緯度と赤緯を正しく入力する方法
二つの座標は、-90から90までの範囲で十進度として入力してください。符号は半球を示すため、そのまま保持します。たとえば緯度35は北緯35度、-35は南緯35度です。赤緯も天の赤道を基準に同じ規則を使います。資料が度・分・秒で示されている場合は、分を六十で、秒を3,600で割り、それらを度の絶対値に加えてから、南または負の符号を全体に付けてください。数値欄には経度、赤経、方位角、方位を示す文字を入力しないでください。経度と時刻は通過する時点を決めますが、この理想的な高度は変えません。地理緯度が有効範囲外の場合はエラーになり、赤緯についても範囲外や無効な値を拒否するため、誤った座標からもっともらしい答えが出ることはありません。
観測計画で結果を読み取る方法
表示された高度は、完全な可視性予報ではなく、対象を絞り込むための幾何学的な目安としてお使いください。高度が高いほど一般に大気中の光路が短く、地平線付近よりも減光が少なく像が安定しやすくなります。小さな正の値でも現地の地形に遮られる場合があり、負の値なら、このモデルではその緯度から天体は昇りません。天頂距離は、機器の制限が地平線からの仰角ではなく頭上からの角距離で示される場合に便利です。実際の観測では、通過時刻、薄明、月との離角、天気、架台の可動範囲、実測した地平線を併せて検討してください。恒星の赤緯は通常の計画ではほぼ一定ですが、太陽、月、惑星、彗星、人工衛星は変化するため、予定日に対応する赤緯を使用します。ブラウザーでは無料で利用でき、自動化したAPIリクエストの基本料金は1回あたり$0.002です。
活用例
観測地点に適した天体を選ぶ
カタログの赤緯と地点の緯度を比べ、高く南中する天体、低い天体、地平線下の天体を判別します。
観測計画ソフトを検証する
明確な解析式の結果を、天文アプリの子午線高度計算に対する回帰テスト値として使います。
天球座標を説明する
地理緯度と赤緯から、天頂距離と南中高度がどのように決まるかを再現可能な値で示します。
よくある質問
どの式で計算しますか?
高度 = 90度 - |緯度 - 赤緯| を使います。差の絶対値は天頂距離としても表示されます。
通過高度が負になることはありますか?
はい。負の値は、その観測緯度では上方通過時にも天体が理想的な地平線より下にあることを示します。
経度と時刻が不要なのはなぜですか?
経度、日付、時刻は通過する時点を決めます。赤緯と観測緯度が分かれば、幾何学的な高度はその二つだけで決まります。
大気差は結果に含まれますか?
含まれません。これは幾何学的高度です。大気差は気象条件に依存し、特に地平線付近で大きくなります。
符号はどのように付けますか?
北緯と北側の赤緯を正、南緯と南側の赤緯を負にしてください。
高度90度は何を意味しますか?
天体の赤緯と観測者の緯度が等しく、上方通過時に天体が天頂を通ることを意味します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/astro/transit-altitude \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"declination":20,"latitude":52}'const res = await fetch("https://api.kit.forhosting.com/astro/transit-altitude", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"declination": 20,
"latitude": 52
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/astro/transit-altitude",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"declination": 20,
"latitude": 52
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/astro/transit-altitude", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"declination":20,"latitude":52}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"declination":20,"latitude":52}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/astro/transit-altitude", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"declination": 20,
"latitude": 52
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "astro.transit_altitude",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |