Changeset 4930 in ntrip for trunk/BNC/src/upload
- Timestamp:
- Feb 21, 2013, 8:02:10 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/upload/bncrtnetuploadcaster.cpp
r4913 r4930 490 490 QString& outLine) { 491 491 492 const double secPerWeek = 7.0 * 86400.0; 493 492 // Broadcast Position and Velocity 493 // ------------------------------- 494 ColumnVector xB(4); 495 ColumnVector vB(3); 496 eph->position(GPSweek, GPSweeks, xB.data(), vB.data()); 497 498 // Precise Position and Velocity 499 // ----------------------------- 500 ColumnVector xP = xx.Rows(1,3); 501 ColumnVector vP = (xx.Rows(12,14) - xx.Rows(1,3)) / xx(11); 502 503 // Correction Center of Mass -> Antenna Phase Center 504 // ------------------------------------------------- 505 if (! _CoM) { 506 xP(1) += xx(6); 507 xP(2) += xx(7); 508 xP(3) += xx(8); 509 } 510 511 double dc = 0.0; 512 if (_crdTrafo != "IGS08") { 513 crdTrafo(GPSweek, xP, dc); 514 } 515 516 // Difference in xyz 517 // ----------------- 518 ColumnVector dx = xB.Rows(1,3) - xP; 519 ColumnVector dv = vB - vP; 520 521 // Difference in RSW 522 // ----------------- 494 523 ColumnVector rsw(3); 495 ColumnVector rsw2(3); 496 double dClk; 497 498 for (int ii = 1; ii <= 2; ++ii) { 499 500 int GPSweek12 = GPSweek; 501 double GPSweeks12 = GPSweeks; 502 if (ii == 2) { 503 GPSweeks12 += xx(11); 504 if (GPSweeks12 > secPerWeek) { 505 GPSweek12 += 1; 506 GPSweeks12 -= secPerWeek; 507 } 508 } 509 510 ColumnVector xB(4); 511 ColumnVector vv(3); 512 513 eph->position(GPSweek12, GPSweeks12, xB.data(), vv.data()); 514 515 ColumnVector xyz; 516 if (ii == 1) { 517 xyz = xx.Rows(1,3); 518 } 519 else { 520 xyz = xx.Rows(12,14); 521 } 522 523 // Correction Center of Mass -> Antenna Phase Center 524 // ------------------------------------------------- 525 if (! _CoM) { 526 xyz(1) += xx(6); 527 xyz(2) += xx(7); 528 xyz(3) += xx(8); 529 } 530 531 double dc = 0.0; 532 if (_crdTrafo != "IGS08") { 533 crdTrafo(GPSweek12, xyz, dc); 534 } 535 536 ColumnVector dx = xB.Rows(1,3) - xyz ; 537 538 if (ii == 1) { 539 XYZ_to_RSW(xB.Rows(1,3), vv, dx, rsw); 540 dClk = (xx(4) + xx(5) - xB(4) + dc) * t_CST::c; 541 } 542 else { 543 XYZ_to_RSW(xB.Rows(1,3), vv, dx, rsw2); 544 } 545 } 524 XYZ_to_RSW(xB.Rows(1,3), vB, dx, rsw); 525 526 ColumnVector dotRsw(3); 527 XYZ_to_RSW(xB.Rows(1,3), vB, dv, dotRsw); 528 529 // Clock Correction 530 // ---------------- 531 double dClk = (xx(4) + xx(5) - xB(4) + dc) * t_CST::c; 546 532 547 533 if (sd) { 548 sd->ID = prn.mid(1).toInt();549 sd->IOD = eph->IOD();550 sd->Clock.DeltaA0 = dClk;551 sd->Orbit.DeltaRadial = rsw(1);552 sd->Orbit.DeltaAlongTrack = rsw(2);553 sd->Orbit.DeltaCrossTrack = rsw(3);554 sd->Orbit.DotDeltaRadial = (rsw2(1) - rsw(1)) / xx(11);555 sd->Orbit.DotDeltaAlongTrack = (rsw2(2) - rsw(2)) / xx(11);556 sd->Orbit.DotDeltaCrossTrack = (rsw2(3) - rsw(3)) / xx(11);534 sd->ID = prn.mid(1).toInt(); 535 sd->IOD = eph->IOD(); 536 sd->Clock.DeltaA0 = dClk; 537 sd->Orbit.DeltaRadial = rsw(1); 538 sd->Orbit.DeltaAlongTrack = rsw(2); 539 sd->Orbit.DeltaCrossTrack = rsw(3); 540 sd->Orbit.DotDeltaRadial = dotRsw(1); 541 sd->Orbit.DotDeltaAlongTrack = dotRsw(2); 542 sd->Orbit.DotDeltaCrossTrack = dotRsw(3); 557 543 } 558 544
Note:
See TracChangeset
for help on using the changeset viewer.