コスモリウムの展示で、Text Loadingなどのデータ外部取得で利用するGitHub Pages用リポジトリです。
GitHub Pagesを利用するため、このリポジトリはpublicになっており、誰でも閲覧できます。
CelesTrakのAPIから取得した展示対象の衛星の軌道データを、TLE形式で返します。
Text Loading用です。
https://akinomizuki.github.io/SatelliteData/satellites.txt
https://akinomizuki.github.io/SatelliteData/satellites.png
https://github.com/AkinoMizuki/SatelliteData/actions/workflows/build-and-deploy.yaml
YAML形式の配列で記述された satellites.yaml を書き替えます。
※masterブランチへのpush権限が必要。
JPL Horizons Lookup APIで探査機名からSPK IDを自動解決し、JPL Horizons APIから太陽中心・J2000黄道座標の位置速度ベクトルを取得してJSON形式で返します。
現在はHAYABUSA2、James Webb Space Telescope(JWST)、Tesla Roadsterを取得します。
https://akinomizuki.github.io/SatelliteData/spacecraft.json
GitHub Actions実行日のUTC日付から8日後までを、1時間間隔で取得します。
日時、API URL、座標系、単位はfetch-data.js側で自動設定します。通常の対象ではSPK IDもHorizons Lookupから自動解決します。
spacecraft.jsonの各サンプルは、次の順序です。
[jdTdb, x, y, z, vx, vy, vz]
位置の単位はAU、速度の単位はAU/日です。
spacecraft.yamlへ、次の形式で1行追加します。
出力用ID: JPL Horizonsで検索する探査機名現在の登録内容は次のとおりです。
HAYABUSA2: Hayabusa 2
JWST: JWST
# Lookupで検索できない対象のみnameとcommandを指定
TESLA_ROADSTER:
name: Tesla Roadster
command: "-143205"例えばVoyager 1を追加する場合は、通常どおり次の1行だけを追加します。
VOYAGER1: Voyager 1Horizons Lookupで検索できない対象だけ、nameとcommandを指定します。対象固有のIDはfetch-data.jsへベタ書きせず、登録情報をspacecraft.yamlへ集約します。
GitHub Actionsは、最初に公開済みのspacecraft.jsonを1回読み込みます。
同じUTC日付のデータが既に公開されている探査機は、そのデータをそのまま再利用し、Horizons Lookup APIとHorizons APIへの通信を行いません。このため、GitHub Actions自体は毎時実行されても、探査機データのJPL通信は原則としてUTC日付が変わった最初の実行時だけです。
UTC日付が変わった場合も、前回データに保存されているcommand(SPK ID)を再利用できる対象はHorizons Lookup APIを省略し、状態ベクトル取得だけを行います。
JPL APIへの通信は、通信例外またはHTTP 408/425/429/500/502/503/504の場合に最大5回試行します(初回+再試行4回)。再試行間隔は2秒、5秒、15秒、30秒です。
新しい状態ベクトルを取得できなかった場合は、該当する探査機について公開済みの前回データをspacecraft.jsonへ残します。前回データを使用した対象IDは、トップレベルのstaleObjectIdsへ記録されます。前回データも存在しない場合だけ、その探査機をスキップします。エラー内容と前回データ使用の有無はGitHub Actionsのログへ記録されます。
公開済みspacecraft.jsonを取得できなかった場合は、前回データなしとして通常のJPL取得を試行します。
spacecraft.yaml自体がYAMLとして不正、またはルート形式が異なる場合は、設定ファイル全体の誤りとしてビルドを停止します。
※masterブランチへのpush権限が必要。