将Decimal Deg转换为GPRMC格式 [英] Convert Decimal Deg to GPRMC format

查看:102
本文介绍了将Decimal Deg转换为GPRMC格式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 private string DDToGPRMCpost(double Lat,double Lng)
{
double Res,Decdeg;
string Latstr,Lngstr;

// lat
Res = Math.Abs​​(Math.Truncate(Lat)); // 45
Decdeg = Math.Round((Math.Abs​​(Lat) - Math.Abs​​(Math.Truncate(Lat)))/ 60,6);
Latstr = Res.ToString()+ Decdeg.ToString();
Latstr =(Lat> 0)? Latstr +,N:Latstr +,S;
// lng
Res = Math.Abs​​(Math.Truncate(Lng));
Decdeg = Math.Round((Math.Abs​​(Lng) - Math.Abs​​(Math.Truncate(Lng)))/ 60,6);
Lngstr = Res.ToString()+ Decdeg.ToString();
Lngstr =(Lng> 0)? Lngstr +,E:Lngstr +,W;

返回Latstr +,+ Lngstr;
}





这是我到目前为止......似乎没有正常工作...

解决方案

您是否阅读过NMEA协议?对于GPRMC,您需要12个字段,包括校验和:

http://aprs.gids.nl/nmea/ #rmc [ ^ ]



这可能有所帮助:

NMEA 0183句子解析器/构建器 [ ^ ]

private string DDToGPRMCpost(double Lat, double Lng)
       {
           double Res, Decdeg;
           string Latstr, Lngstr;

           //lat
           Res = Math.Abs(Math.Truncate(Lat)); //45
           Decdeg = Math.Round((Math.Abs(Lat) - Math.Abs(Math.Truncate(Lat))) / 60, 6);
           Latstr = Res.ToString() + Decdeg.ToString();
           Latstr = (Lat > 0) ? Latstr + ",N" : Latstr + ",S";
           //lng
           Res = Math.Abs(Math.Truncate(Lng));
           Decdeg = Math.Round((Math.Abs(Lng) - Math.Abs(Math.Truncate(Lng))) / 60, 6);
           Lngstr = Res.ToString() + Decdeg.ToString();
           Lngstr = (Lng > 0) ? Lngstr + ",E" : Lngstr + ",W";

           return  Latstr + "," + Lngstr;
       }



This is what I have so far... doesn't seem to be working correctly...

解决方案

Have you read the NMEA protocol? For GPRMC you need 12 fields including checksum:
http://aprs.gids.nl/nmea/#rmc[^]

This may help:
NMEA 0183 sentence parser/builder[^]


这篇关于将Decimal Deg转换为GPRMC格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆