数据解析数据拆分坐标转换显示线路图源代码.docx
- 文档编号:3870261
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:55
- 大小:26.39KB
数据解析数据拆分坐标转换显示线路图源代码.docx
《数据解析数据拆分坐标转换显示线路图源代码.docx》由会员分享,可在线阅读,更多相关《数据解析数据拆分坐标转换显示线路图源代码.docx(55页珍藏版)》请在冰点文库上搜索。
数据解析数据拆分坐标转换显示线路图源代码
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 = "
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 解析 拆分 坐标 转换 显示 线路图 源代码