Отображение местоположения спутников GPS на SkyPlot
Я проанализировал эфемеридные данные, чтобы получить видимые над моим текущим местоположением местоположения спутников ECEF (или широта / долгота). Я хотел бы отобразить эти места на графике неба в моей программе на C#.
Я добавил графическую рамку в свой графический интерфейс и попытался масштабировать отображаемые значения 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);
}
1 ответ
TS Kelso из celestrak.com имеет превосходную серию статей о спутниковом слежении и орбитальных системах координат. В этой статье объясняется, как преобразовать спутниковые координаты в специфические для местности (топоцентрические) координаты. (Вам, вероятно, потребуется преобразовать свои эфемериды из координат ECEF (широта / долгота, вращение вместе с землей) в ECI (координаты инерции, фиксированные относительно звезд), чтобы использовать формулы Келсо.
Основная идея состоит в том, чтобы вычислить положения как спутника, так и наблюдателя в данный момент в координатах ECI, а затем определить базисные векторы "восток", "север" и "вверх" для системы координат для конкретного участка в этот момент (учитывая обтекание Земли), затем преобразуйте положение спутника в углы обзора (азимут и угол места, или прямое восхождение и склонение), если смотреть с места наблюдения.