我需要将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类返回转换后的坐标吗?
奖金问题,如果有人知道高度变量在“变换”方法中的含义也将是有用的。 谢谢
答案 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