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

上传人:wux****ua 文档编号:9065058 上传时间:2020-04-02 格式:DOC 页数:41 大小:107KB
返回 下载 相关 举报
GPS数据解析数据拆分坐标转换显示线路图源代码.doc_第1页
第1页 / 共41页
GPS数据解析数据拆分坐标转换显示线路图源代码.doc_第2页
第2页 / 共41页
GPS数据解析数据拆分坐标转换显示线路图源代码.doc_第3页
第3页 / 共41页
点击查看更多>>
资源描述
view plaincopy to clipboardprint?1. GPS数据提取解析源码GPSsourcedataextractionanalysis,wecanrefertolearnfrom2. 3. 4. GPS数据解析5. 6. 数据拆分坐标转换显示线路图源代码7. 8. 逐条读取gps数据然后进行拆分解析,坐标转换,绘制线路。很好的示例多多交流学习。9. 10. 11. 12. 本程序是基于VC+建立的单文档工程。13. 14. 15. 16. 废话少说,直接上代码17. 18. 19. 20. /获取子字符串个数 21. 22. intGetSubStrCount(CStringstr,charcFlag)23. 24. 25. 26. cFlag=,;27. 28. inti=0;29. 30. BOOLisHas=FALSE;31. 32. 33. 34. for(intiStart=-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. return0;49. 50. 51. 52. else53. 54. 55. 56. returni+1;57. 58. 59. 60. 61. 62. 63. 64. /获取子字符串 65. 66. /i序号0 67. 68. CStringGetSubStr(CStringstr,inti,charcFlag)69. 70. 71. 72. cFlag=,;73. 74. intiStart=-1;75. 76. intiEnd=0;77. 78. intj=0;79. 80. intiStrCount;81. 82. 83. 84. iStrCount=GetSubStrCount(str,cFlag);85. 86. 87. 88. if(iiStrCount-1|i0)89. 90. 91. 92. str=;93. 94. returnstr;95. 96. 97. 98. else99. 100. 101. 102. /donothing 103. 104. 105. 106. 107. 108. if(i=iStrCount-1)109. 110. 111. 112. i=iStrCount;113. 114. 115. 116. for(;ji-1;j+)117. 118. 119. 120. iStart=str.Find(cFlag,iStart+1);121. 122. 123. 124. 125. 126. returnstr.Mid(iStart+1,str.GetLength()-iStart-1);127. 128. 129. 130. else131. 132. 133. 134. /donothing 135. 136. 137. 138. 139. 140. for(;ji;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. returnstr.Mid(iStart+1,iEnd-iStart-1);153. 154. 155. 156. 157. 158. /数据解析 159. 160. CStringCGpsDataView:Analyzing(CStringstr)161. 162. 163. 164. CStringsubStr20;165. 166. charcFlag=,;167. 168. intj=GetSubStrCount(str,cFlag);/得到该行的子字符串个数 169. 170. CStdioFilewFile;171. 172. wFile.Open(save.txt,CFile:modeCreate|CFile:modeWrite|CFile:typeText);/将数据写入文件 173. 174. 175. 176. for(inti=0;i3)393. 394. 395. 396. subStr6=subStr6.Left(2);397. 398. 399. 400. else401. 402. 403. 404. subStr6=0;405. 406. 407. 408. 409. 410. subStr6+=分;411. 412. subStr6.Insert(0,subStr5);413. 414. subStr6.Insert(0,当地时域:);415. 416. 417. 418. subStr0+=subStr1;419. 420. subStr0+=subStr2;421. 422. subStr0+=subStr6;423. 424. /MessageBox(subStr0); 425. 426. wFile.WriteString(subStr0);/将数据写入文件 427. 428. 429. 430. 431. 432. /GPGSA数据 433. 434. elseif(subStr0=$GPGSA)435. 436. 437. 438. /卫星捕获模式,以及定位模式 439. 440. CStringCatchLocation;441. 442. 443. 444. if(subStr1=M)445. 446. 447. 448. if(subStr2=1)449. 450. 451. 452. CatchLocation=手动捕获卫星,未定位!;453. 454. 455. 456. elseif(subStr2=2)457. 458. 459. 460. CatchLocation=手动捕获卫星,2D定位!;461. 462. 463. 464. elseif(subStr2=3)465. 466. 467. 468. CatchLocation=手动捕获卫星,3D定位!;469. 470. 471. 472. 473. 474. elseif(subStr1=A)475. 476. 477. 478. if(subStr2=1)479. 480. 481. 482. CatchLocation=自动捕获卫星,未定位!;483. 484. 485. 486. elseif(subStr2=2)487. 488. 489. 490. CatchLocation=自动捕获卫星,2D定位!;491. 492. 493. 494. elseif(subStr2=3)495. 496. 497. 498. CatchLocation=自动捕获卫星,3D定位!;499. 500. 501. 502. 503. 504. 505. 506. /各卫星定位结果 507. 508. subStr3.Insert(0,各卫星定位结果:);509. 510. subStr3+=;511. 512. subStr4.Insert(0,subStr3);513. 514. subStr4+=;515. 516. subStr5.Insert(0,subStr4);517. 518. subStr5+=;519. 520. subStr6.Insert(0,subStr5);521. 522. subStr6+=;523. 524. subStr7.Insert(0,subStr6);525. 526. subStr7+=;527. 528. subStr8.Insert(0,subStr7);529. 530. subStr8+=;531. 532. subStr9.Insert(0,subStr8);533. 534. subStr9+=;535. 536. subStr10.Insert(0,subStr9);537. 538. subStr10+=;539. 540. subStr11.Insert(0,subStr10);541. 542. subStr11+=;543. 544. subStr12.Insert(0,subStr11);545. 546. subStr12+=;547. 548. subStr13.Insert(0,subStr12);549. 550. subStr13+=;551. 552. subStr14.Insert(0,subStr13);553. 554. subStr14+=;555. 556. 557. 558. /空间(三维)位置精度因子 559. 560. subStr15.Insert(0,空间(三维)位置精度因子:);561. 562. 563. 564. /平面位置精度因子 565. 566. subStr16.Insert(0,平面位置精度因子:);567. 568. 569. 570. /高度位置精度因子 571. 572. subStr17=subStr17.Left(3);573. 574. subStr17.Insert(0,高度位置精度因子:);575. 576. 577. 578. subStr0+=CatchLocation;579. 580. subStr0+=subStr14;581. 582. subStr0+=subStr15;583. 584. subStr0+=subStr16;585. 586. subStr0+=subStr17;587. 588. /MessageBox(subStr0); 589. 590. wFile.WriteString(subStr0);/将数据写入文件 591. 592. 593. 594. 595. 596. /GPGSV数据 597. 598. elseif(subStr0=$GPGSV)599. 600. 601. 602. /MessageBox(subStr0); 603. 604. 605. 606. /卫星编号、卫星仰角(090度)、卫星方位角(0359度)、信噪比 607. 608. subStr4.Insert(0,卫星编号:);609. 610. subStr5.Insert(0,仰角:);611. 612. subStr6.Insert(0,方位角:);613. 614. subStr7.Insert(0,信噪比:);615. 616. subStr4+=subStr5;617. 618. subStr4+=subStr6;619. 620. subStr4+=subStr7;621. 622. /MessageBox(subStr4); 623. 624. subStr8.Insert(0,卫星编号:);625. 626. subStr9.Insert(0,仰角:);627. 628. subStr10.Insert(0,方位角:);629. 630. subStr11.Insert(0,信噪比:);631. 632. subStr8+=subStr9;633. 634. subStr8+=subStr10;635. 636. subStr8+=subStr11;637. 638. /MessageBox(subStr8); 639. 640. subStr12.Insert(0,卫星编号:);641. 642. subStr13.Insert(0,仰角:);643. 644. subStr14.Insert(0,方位角:);645. 646. subStr15.Insert(0,信噪比:);647. 648. subStr12+=subStr13;649. 650. subStr12+=subStr14;651. 652. subStr12+=subStr15;653. 654. /MessageBox(subStr12); 655. 656. subStr16.Insert(0,卫星编号:);657. 658. subStr17.Insert(0,仰角:);659. 660. subStr18.Insert(0,方位角:);661. 662. 663. 664. if(strlen(subStr19)3)665. 666. 667. 668. subStr19=subStr19.Left(2);669. 670. 671. 672. else673. 674. 675. 676. subStr19=0;677. 678. 679. 680. 681. 682. subStr19.Insert(0,信噪比:);683. 684. subStr16+=subStr17;685. 686. subStr16+=subStr18;687. 688. subStr16+=subStr19;689. 690. /MessageBox(subStr16); 691. 692. wFile.WriteString(subStr16);/将数据写入文件 693. 694. 695. 696. returnstr;697. 698. 699. 700. 701. 702. 703. 704. /读取文件数据并解析 705. 706. voidCGpsDataView:OnFileRead()707. 708. 709. 710. /TODO:在此添加命令处理程序代码 711. 712. CStdioFilemyFile;713. 714. CStringoneLine;715. 716. charcFlag=,;717. 718. CStringsubStr20;719. 720. 721. 722. /读取GPS数据文件 723. 724. if(!myFile.Open(gps.txt),CFile:modeRead|CFile:typeText)725. 726. 727. 728. AfxMessageBox(_T(打开文件错误!);729. 730. return;731. 732. 733. 734. else735. 736. 737. 738. /*donothing*/739. 740. 741. 742. 743. 744. while(myFile.ReadString(oneLine)/读一行 745. 746. 747. 748. /MessageBox(oneLine); 749. 750. intj=GetSubStrCount(oneLine,cFlag);/得到该行的子字符串个数 751. 752. 753. 754. /校验 755. 756. if(CheckNum(oneLine)757. 758. 759. 760. /MessageBox(_T(数据校验.接收正确!.); 761. 762. 763. 764. for(inti=0;i=0)821. 822. 823. 824. Sign=1;825. 826. 827. 828. else829. 830. 831. 832. Sign=-1;833. 834. 835. 836. 837. 838. Dms=fabs(Dms);/绝对值 839. 840. Degree=floor(Dms);/取度floor(2.800)=2.0000 841. 842. Miniute=floor(fmod(Dms*100.0,100.0);/fmod计算余数 843. 844. Second=fmod(Dms*10000.0,100.0);845. 846. Rad=Sign*(Degree+Miniute/60.0+Second/3600.0)*PI/180.0;847. 848. returnRad;849. 850. 851. 852. 853. 854. doubleRad2Dms(doubleRad)855. 856. 857. 858. doubleDegree,Miniute;859. 860. doubleSecond;861. 862. intSign;863. 864. doubleDms;865. 866. 867. 868. if(Rad=0)869. 870. 871. 872. Sign=1;873. 874. 875. 876. else877. 878. 879. 880. Sign=-1;881. 882. 883. 8
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!