NEMA格式 GPS数据提取解析 坐标转换等 源码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

{

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

}

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

}

else

{

//do nothing

}

for (; 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

{

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," 卫星数:");

//提取平面位置精度因子

subStr[8].Insert(0," 平面位置精度因子:");

//天线海拔高度

subStr[9].Insert(strlen(subStr[9]),subStr[10]);

subStr[9].Insert(0," 天线海拔高度:");

//海平面分离度

subStr[11].Insert(strlen(subStr[11]),subStr[12]);

subStr[11].Insert(0," 海平面分离度:");

subStr[0] += subStr[1];

subStr[0] += subStr[2];

subStr[0] += subStr[4];

subStr[0] += GpsState;

subStr[0] += subStr[7];

subStr[0] += subStr[8];

subStr[0] += subStr[9];

subStr[0] += subStr[11];

//////////////////////////////////////MessageBox(subStr[0]);

wFile.WriteString(subStr[0]);//将数据写入文件

}

相关文档
最新文档