1

我已经发布了类似的帖子。理论上我确实得到了答案,但我真的需要有人来帮助我。

所以我正在使用这个示例来测试我的 GPS。我想要做的是如何获得标准的十进制值,如纬度和经度的 56,322415。因为现在我得到了 5304,254 的值。

我需要以这种形式使用它,因为我会将它用于 Google 地图。

您能否检查代码并告诉我应该遗漏什么或如何将其转换为 WGS84 格式。

谢谢你。

编辑:

这是解释我在运行程序时看到的图片 在此处输入图像描述

这是codeproject页面之一:

在此处输入图像描述

编辑2:

因此,当我使用THIS CONVERTER查看获得学位时需要获得的十进制值时,我没有得到相同的值。

这是我应该得到的价值:

在此处输入图像描述

这是我在程序中得到的价值:

46.64662666666667

知道为什么我无法获得相同的转换吗?

4

2 回答 2

2

ParseNMEA 函数中的以下行是从 WGS84 转换为英国条例调查坐标的行:

return Transform(deciLat, deciLon, height);

因此,如果您删除该行并仅使用 deciLat 和 deciLon 值,则应该没问题...

问题更新后的补充:

您所指的代码没有考虑本地数字格式,因此如果出现问题,可能是因为错误的十进制符号匹配。

您可以使用以下函数进行转换,假设输入始终采用不变的文化(带小数点):

string[] arrLon = strLon.Split(new char[]{'°', '"'}, StringSplitOptions.RemoveEmptyEntries);
double dblLon = double.Parse(arrLon[0]) + double.Parse(arrLon[1], new System.Globalization.NumberFormatInfo()) / 60;
double deciLon = arrLon[2] == "E" ? dblLon : - dblLon;

附加信息:

NumberFormatInfo:http: //msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx

于 2012-05-11T18:17:29.167 回答
1

听起来您的问题现在已经解决了,我知道存在由不同的本地数字格式引起的问题,这些问题在其中一条评论中提出并解决:

http://www.codeproject.com/Articles/13577/GPS-Deriving-British-Ordnance-Survey-Grid-Referenc?msg=2106791#xx2106791xx

如果你只是想要 lat 和 lon 的十进制值,我想你现在可以把整个东西扔掉,只使用 Dirk 提供的解决方案!=o)

亚历克斯

于 2012-05-14T07:51:29.303 回答