使用 NMEA2OSG Class – C# 将 WGS84 Lat Lon 坐标转换为 OSGR

Convert WGS84 Lat Lon coordinates to OSGR using NMEA2OSG Class – C#

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

Link 到 NMEA2OSG Class:NMEA2OSG Class

我正在努力理解如何使用它 class。虽然有几个关于如何将 WGS84 转换为 OSGR 的问题,但没有关于如何使用 NMEA2OSG class 的问题。

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

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

但是,这个方法只有 return 一个布尔值,所以我可以推测我需要从 class 的实例访问该方法的输出。很遗憾,我不知道该怎么做。

任何人都可以建议如何 return 从 NMEA2OSG class 转换坐标吗?

奖金问题,如果有人知道高度变量意味着在“转换”方法中也很有用。 谢谢

NMEA20SG class 有通知您结果的事件。这是设置它的代码:

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