【发布时间】:2011-11-03 21:13:58
【问题描述】:
我已经解析了星历数据,以便获得在我当前位置上方可见的卫星的 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);
}
【问题讨论】:
-
我还希望能够使用 WPF 和 C# 在旋转的 3D 地球上执行此操作。我希望有人知道一个库或示例代码来完成这个。
-
如果你能确定ECEF的位置,那么你可以把它放到Google Earth上,不用太麻烦。有一些关于如何与 GE 进行接口的示例,并且基于 x、y、z 添加一个点应该不会太难。我使用 GNSS 项目作为解析星历数据的示例代码,尽管我仍在努力验证数据是否正确。
标签: c# gps image satellite-navigation