使用NMEA2OSG类– C#将WGS84纬度Lon坐标转换为OSGR

时间:2018-08-29 16:05:39

标签: c# class coordinates wgs84

我需要将WGS84 Lat Lon坐标系(基本上是Google的地图和Bing使用的坐标系)转换为英国条例调查坐标系。 由于计算相当复杂(有关椭球和投影等),因此有一种现成的C#类,通常称为“ NMEA2OSG”。

链接到NMEA2OSG类:NMEA2OSG Class

我正在努力了解如何使用该课程。尽管有一些关于如何将WGS84转换为OSGR的问题,但还没有关于如何使用NMEA2OSG类的问题。

我尝试运行第二种方法,这似乎是正确的方法,因为它接受长的十进制小数作为输入。尝试如下:

NMEA2OSG nMEA2OSG = new NMEA2OSG();
bool coord = nMEA2OSG.Transform(52.3, -0.1, 50);

但是,此方法仅返回布尔值,因此大概我需要从类的实例访问该方法的输出。不幸的是,我不知道该怎么做。

有人可以建议如何从NMEA2OSG类返回转换后的坐标吗?

奖金问题,如果有人知道高度变量在“变换”方法中的含义也将是有用的。 谢谢

1 个答案:

答案 0 :(得分:1)

NMEA20SG类具有用于将结果通知您的事件。这是设置代码:

static void Main(string[] args)
{
    NMEA2OSG nMEA2OSG = new NMEA2OSG();
    nMEA2OSG.NorthingEastingReceived += NMEA2OSG_NorthingEastingReceived;
    nMEA2OSG.NatGridRefReceived += NMEA2OSG_NatGridRefReceived;
    bool coord = nMEA2OSG.Transform(52.3, -0.1, 50);
    Console.ReadKey();
}

private static void NMEA2OSG_NatGridRefReceived(string ngr)
{
    Console.WriteLine("NatGrid: {0}", ngr);
}

private static void NMEA2OSG_NorthingEastingReceived(double northing, double easting)
{
    Console.WriteLine("Northing = {0}, Easting = {1}", northing, easting);
}

输入结果:

Northing = 268576, Easting = 529657
NatGrid: TL 29657 68576