2

現在の場所の上に見える衛星のECEF(または緯度/経度)位置を取得するために、エフェメリスデータを解析しました。これらの場所をC#プログラムのスカイプロットに表示したいと思います。
GUIに画像ボックスを追加し、x / y値を拡大縮小して表示しようとしましたが、表示されている場所が現在の場所を基準にしているとは思いません。
これを行う方法の例やサンプルコードはありますか?
私はC#のwinformでそれを行っています。

private const double CENTER = 110;    //center of drawing (pixels)
private double SCALE_FACTOR = 89.0 / 90.0;  //pixels from 90deg to 0 on drawing
.
.
.
private void drawSatellitePos(int svPrn, double elevation, double azimuth)  //radians
{
    double r = 90.0 - ConvertRadiansToDeg(elevation);
    double theta = 90.0 - ConvertRadiansToDeg(azimuth);
    theta = ConvertDegToRadians(theta);             

    double xLocation = CENTER + SCALE_FACTOR * r * Math.Cos(theta);
    double yLocation = CENTER + SCALE_FACTOR * r * Math.Sin(theta);

    Console.WriteLine("{0}:  x: {1}   Y: {2}", svPrn, xLocation, yLocation);

    Point point = new Point((int)xLocation, (int)yLocation);
}
4

1 に答える 1

3

celestrak.com の TS Kelso には、衛星追跡と軌道座標系 に関する優れた一連の記事があります。この記事では、衛星の位置をサイト固有の (地形中心) 座標に変換する方法について説明します。(Kelso の式を使用するには、天体暦を ECEF 座標 (緯度/経度、地球と共に回転) から ECI (恒星に対して固定された慣性座標) に変換する必要があるでしょう。

基本的な考え方は、ECI 座標で特定の時点での衛星と観測者の位置を計算し、その時点でのサイト固有の座標系の「東」、「北」、および「上」の基底ベクトルを定義することです (地球の偏平度)、衛星の位置を観測サイトから見た視角 (方位角と仰角、または赤経と赤緯) に変換します。

于 2011-08-25T17:03:22.057 に答える