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

  • 格式:doc
  • 大小:116.00 KB
  • 文档页数:41

view plaincopy to clipboardprint?

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')