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

上传人:b****3 文档编号:26405243 上传时间:2023-06-19 格式:DOCX 页数:55 大小:26.35KB
下载 相关 举报
GPS数据解析 数据拆分 坐标转换 显示线路图源代码.docx_第1页
第1页 / 共55页
GPS数据解析 数据拆分 坐标转换 显示线路图源代码.docx_第2页
第2页 / 共55页
GPS数据解析 数据拆分 坐标转换 显示线路图源代码.docx_第3页
第3页 / 共55页
GPS数据解析 数据拆分 坐标转换 显示线路图源代码.docx_第4页
第4页 / 共55页
GPS数据解析 数据拆分 坐标转换 显示线路图源代码.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

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

《GPS数据解析 数据拆分 坐标转换 显示线路图源代码.docx》由会员分享,可在线阅读,更多相关《GPS数据解析 数据拆分 坐标转换 显示线路图源代码.docx(55页珍藏版)》请在冰豆网上搜索。

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

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

viewplaincopytoclipboardprint?

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

2.  

3.  

4.GPS数据解析   

5.  

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

7.  

8.逐条读取gps数据 然后进行拆分 解析,坐标转换,绘制线路。

很好的示例多多交流学习。

  

9.  

10.   

11.  

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

  

13.  

14.   

15.  

16.废话少说,直接上代码  

17.  

18.   

19.  

20.//获取子字符串个数  

21.  

22.int GetSubStrCount(CString str,char cFlag)  

23.  

24.{  

25.  

26.       cFlag = ',';  

27.  

28.       int i = 0;  

29.  

30.       BOOL isHas = FALSE;  

31.  

32.   

33.  

34.       for (int iStart = -1; -1 !

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

35.  

36.       {  

37.  

38.              isHas = TRUE;  

39.  

40.       }  

41.  

42.         

43.  

44.       if (!

isHas)  

45.  

46.       {  

47.  

48.              return 0;  

49.  

50.       }  

51.  

52.       else  

53.  

54.       {  

55.  

56.              return i+1;  

57.  

58.       }  

59.  

60.}  

61.  

62.   

63.  

64.//获取子字符串  

65.  

66.// i 序号 0  

67.  

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

69.  

70.{  

71.  

72.       cFlag = ',';  

73.  

74.       int iStart = -1;  

75.  

76.       int iEnd = 0;  

77.  

78.       int j = 0;  

79.  

80.       int iStrCount;  

81.  

82.   

83.  

84.       iStrCount = GetSubStrCount(str,cFlag);  

85.  

86.   

87.  

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

89.  

90.       {  

91.  

92.              str = "";  

93.  

94.              return str;  

95.  

96.       }  

97.  

98.       else  

99.  

100.       {  

101.  

102.              //do nothing  

103.  

104.       }  

105.  

106.   

107.  

108.       if (i == iStrCount-1)  

109.  

110.       {  

111.  

112.              i = iStrCount;  

113.  

114.   

115.  

116.              for (;j

117.  

118.              {  

119.  

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

121.  

122.              }  

123.  

124.   

125.  

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

127.  

128.       }  

129.  

130.       else  

131.  

132.       {  

133.  

134.              //do nothing  

135.  

136.       }  

137.  

138.   

139.  

140.       for (; j

141.  

142.       {  

143.  

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

145.  

146.       }  

147.  

148.   

149.  

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

151.  

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

153.  

154.}  

155.  

156.   

157.  

158.//数据解析  

159.  

160.CString CGpsDataView:

:

Analyzing(CString str)  

161.  

162.{  

163.  

164.       CString subStr[20];  

165.  

166.       char cFlag = ',';  

167.  

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

169.  

170.       CStdioFile wFile;  

171.  

172.       wFile.Open("save.txt",CFile:

:

modeCreate | CFile:

:

modeWrite | CFile:

:

typeText);//将数据写入文件  

173.  

174.   

175.  

176.       for (int i=0;i

177.  

178.       {  

179.  

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

181.  

182.       }  

183.  

184.   

185.  

186.       //GPGGA数据  

187.  

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

189.  

190.       {  

191.  

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

193.  

194.              //提取时间  

195.  

196.              subStr[1].Insert(2,':

');  

197.  

198.              subStr[1].Insert(5,':

');  

199.  

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

");  

201.  

202.   

203.  

204.              //提取纬度  

205.  

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

207.  

208.              {  

209.  

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

211.  

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

213.  

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

215.  

216.              }  

217.  

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

219.  

220.              {  

221.  

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

223.  

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

225.  

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

227.  

228.              }  

229.  

230.   

231.  

232.              //提取经度  

233.  

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

235.  

236.              {  

237.  

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

239.  

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

241.  

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

243.  

244.              }  

245.  

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

247.  

248.              {  

249.  

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

251.  

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

253.  

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

255.  

256.              }  

257.  

258.                

259.  

260.              //判断GPS状态  

261.  

262.              CString GpsState;  

263.  

264.   

265.  

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

267.  

268.              {  

269.  

270.                     GpsState = "  GPS状态:

无定位.";  

271.  

272.              }  

273.  

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

275.  

276.              {  

277.  

278.                     GpsState = "  GPS状态:

无差分校正定位.";  

279.  

280.              }  

281.  

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

283.  

284.              {  

285.  

286.                     GpsState = "  GPS状态:

差分校正定位.";  

287.  

288.              }  

289.  

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

291.  

292.              {  

293.  

294.                     GpsState = "  GPS状态:

用星历计算定位.";  

295.  

296.              }  

297.  

298.   

299.  

300.              //提取卫星数  

301.  

302.              subStr[7].Insert(0," 卫星数:

");         

303.  

304.   

305.  

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

307.  

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

");             

309.  

310.   

311.  

312.              //天线海拔高度  

313.  

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

315.  

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

");  

317.  

318.   

319.  

320.              //海平面分离度  

321.  

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

323.  

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

");  

325.  

326.   

327.  

328.              subStr[0] += subStr[1];  

329.  

330.              subStr[0] += subStr[2];  

331.  

332.              subStr[0] += subStr[4];  

333.  

334.              subStr[0] += GpsState;  

335.  

336.              subStr[0] += subStr[7];  

337.  

338.              subStr[0] += subStr[8];  

339.  

340.              subStr[0] += subStr[9];  

341.  

342.              subStr[0] += subStr[11];  

343.  

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

345.  

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

347.  

348.   

349.  

350.       }  

351.  

352.   

353.  

354.       //GPZDA数据  

355.  

356.       else if (subStr[0] == "$GPZDA")  

357.  

358.       {  

359.  

360.              //提取时间  

361.  

362.              subStr[1].Insert(2,':

');  

363.  

364.              subStr[1].Insert(5,':

');  

365.  

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

");  

367.  

368.   

369.  

370.              //提取日期  

371.  

372.              subStr[2].Insert(strlen(subStr[2]),"日");  

373.  

374.              subStr[2].Insert(0,"月");  

375.  

376.              subStr[2].Insert(0,subStr[3]);  

377.  

378.              subStr[2].Insert(0,"年");  

379.  

380.              subStr[2].Insert(0,subStr[4]);    

381.  

382.              subStr[2].Insert(0,' ');  

383.  

384.   

385.  

386.              //当地时域描述  

387.  

388.              subStr[5].Insert(strlen(subStr[5]),"小时");  

389.  

390.   

391.  

392.              if (strlen(subStr[6]) > 3)  

393.  

394.              {  

395.  

396.                     subStr[6] = subStr[6].Left

(2);  

397.  

398.              }  

399.  

400.              else  

401.  

402.              {  

403.  

404.                     subStr[6] = '0';  

405.  

406.              }  

407.  

408.   

409.  

410.              subStr[6] += "分";  

411.  

412.              subStr[6].Insert(0,subStr[5]);  

413.  

414.              subStr[6].Insert(0," 当地时域:

");  

415.  

416.   

417.  

418.              subStr[0] += subStr[1];  

419.  

420.              subStr[0] += subStr[2];  

421.  

422.              subStr[0] += subStr[6];  

423.  

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

425.  

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

427.  

428.       }  

429.  

430.   

431.  

432.       //GPGSA数据  

433.  

434.       else if (subStr[0] == "$GPGSA")  

435.  

436.       {  

437.  

438.              //卫星捕获模式,以及定位模式  

439.  

440.              CString CatchLocation;  

441.  

442.   

443.  

444.              if (subStr[1] == 'M')  

445.  

446.              {  

447.  

448.                     if (subStr[2] == '1')  

449.  

450.                     {  

451.  

452.                            CatchLocation = " 手动捕获卫星,未定位!

";  

453.  

454.                     }  

455.  

456.                     else if (subStr[2] == '2')  

457.  

458.                     {  

459.  

460.                            CatchLocation

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1