GPS数据解析 数据拆分 坐标转换 显示线路图源代码

本文档详细讲解了如何解析GPS数据,进行数据拆分和坐标转换,并提供了实现显示线路图的源代码,适用于地理信息系统和导航应用的开发。
摘要由CSDN通过智能技术生成

 

GPS数据提取解析源码GPS source data extraction analysis, we can refer to learn from


GPS数据解析 

数据拆分 \坐标转换 \显示线路图\源代码

逐条读取gps数据 然后进行拆分 解析,坐标转换,绘制线路。。。很好的示例多多交流学习。。

 

 本程序是基于VC++ 建立的单文档工程。

 

废话少说,直接上代码

 

//获取子字符串个数

int GetSubStrCount(CString str,char cFlag)

{

       cFlag = ',';

       int i = 0;

       BOOL isHas = FALSE;

 

       for (int iStart = -1; -1 != (iStart = str.Find(cFlag,iStart+1)) ; i++)

       {

              isHas = TRUE;

       }

       

       if (!isHas)

       {

              return 0;

       }

       else

       {

              return i+1;

       }

}

 

//获取子字符串

// i 序号 0

CString GetSubStr(CString str,int i,char cFlag)

{

       cFlag = ',';

       int iStart = -1;

       int iEnd = 0;

       int j = 0;

       int iStrCount;

 

       iStrCount = GetSubStrCount(str,cFlag);

 

       if (i>iStrCount -1 || i<0)

       {

              str = "";

              return str;

       }

       else

       {

              //do nothing

       }

 

       if (i == iStrCount-1)

       {

              i = iStrCount;

 

              for (;j<i-1;j++)

              {

                     iStart = str.Find(cFlag , iStart+1);

              }

 

              return   str.Mid(iStart+1 , str.GetLength()-iStart-1); 

       }

       else

       {

              //do nothing

       }

 

       for (; j<i; j++)

       {

              iStart = str.Find(cFlag , iStart+1);

       }

 

       iEnd = str.Find(cFlag , iStart+1);  

       return str.Mid(iStart+1 , iEnd-iStart-1); 

}

 

//数据解析

CString CGpsDataView::Analyzing(CString str)

{

       CString subStr[20];

       char cFlag = ',';

       int j = GetSubStrCount(str,cFlag);          //得到该行的子字符串个数

       CStdioFile wFile;

       wFile.Open("save.txt",CFile::modeCreate | CFile::modeWrite | CFile::typeText);//将数据写入文件

 

       for (int i=0;i<j;i++)

       {

              subStr[i] = GetSubStr(str,i,cFlag);                                            

       }

 

       //GPGGA数据

       if (subStr[0] == "$GPGGA")

       {

              CoordCovert(subStr[2],subStr[4]);

              //提取时间

              subStr[1].Insert(2,':');

              subStr[1].Insert(5,':');

              subStr[1].Insert(0," UTC时间:");

 

              //提取纬度

              if (subStr[3] == 'N')

              {

                     subStr[2].Insert(11,"分");

                     subStr[2].Insert(2,"度");

                     subStr[2].Insert(0,"  北纬");

              }

              else if (subStr[3] == 'S')

              {

                     subStr[2].Insert(11,"分");

                     subStr[2].Insert(2,"度");

                     subStr[2].Insert(0,"  南纬");

              }

 

              //提取经度

              if (subStr[5] == 'E')

              {

                     subStr[4].Insert(12,"分");

                     subStr[4].Insert(3,"度");

                     subStr[4].Insert(0,"  东经");

              }

              else if (subStr[5] == 'W')

              {

                     subStr[4].Insert(12,"分");

                     subStr[4].Insert(3,"度");

                     subStr[4].Insert(0,"  西经");

              }

              

              //判断GPS状态

              CString GpsState;

 

              if (subStr[6] == '0')

              {

                     GpsState = "  GPS状态:无定位.";

              }

              else if (subStr[6] == '1')

              {

                     GpsState = "  GPS状态:无差分校正定位.";

              }

              else if (subStr[6] == '2')

              {

                     GpsState = "  GPS状态:差分校正定位.";

              }

              else if (subStr[6] == '9')

              {

                     GpsState = "  GPS状态:用星历计算定位.";

              }

 

              //提取卫星数

              subStr[7].Insert(0," 卫星数:")
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值